From a2d523eeb29ceaa2c9ae7d92b8f12ecde1a8609a Mon Sep 17 00:00:00 2001 From: Ilya Lesikov Date: Tue, 22 Mar 2022 23:51:10 +0300 Subject: [PATCH] feat(kubectl): respect a few global $WERF_* env vars Make "werf kubectl" respect $WERF_KUBE_CONFIG, $WERF_KUBECONFIG, $WERF_KUBE_CONTEXT, $WERF_SKIP_TLS_VERIFY_REGISTRY. Signed-off-by: Ilya Lesikov --- cmd/werf/kubectl/kubectl.go | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/cmd/werf/kubectl/kubectl.go b/cmd/werf/kubectl/kubectl.go index 358d60a417..a95079b074 100644 --- a/cmd/werf/kubectl/kubectl.go +++ b/cmd/werf/kubectl/kubectl.go @@ -1,11 +1,42 @@ package kubectl import ( + "fmt" + "os" + "github.com/spf13/cobra" "k8s.io/kubectl/pkg/cmd" + "k8s.io/kubectl/pkg/cmd/util" + + "github.com/werf/werf/cmd/werf/common" ) func NewCmd() *cobra.Command { - kubectlRootCmd := cmd.NewDefaultKubectlCommand() - return kubectlRootCmd + kubectlCmd := cmd.NewDefaultKubectlCommand() + + kubeConfigFlag := kubectlCmd.Flag("kubeconfig") + kubeConfigFlag.Usage = "Path to the kubeconfig file to use for CLI requests (default $WERF_KUBE_CONFIG, or $WERF_KUBECONFIG, or $KUBECONFIG)" + if kubeConfigEnvVar := common.GetFirstExistingKubeConfigEnvVar(); kubeConfigEnvVar != "" { + if err := os.Setenv("KUBECONFIG", kubeConfigEnvVar); err != nil { + util.CheckErr(fmt.Errorf("unable to set $KUBECONFIG env var: %w", err)) + } + } + + kubeContextFlag := kubectlCmd.Flag("context") + kubeContextFlag.Usage = "The name of the kubeconfig context to use (default $WERF_KUBE_CONTEXT)" + if werfKubeContextEnvVar := os.Getenv("WERF_KUBE_CONTEXT"); werfKubeContextEnvVar != "" { + if err := kubectlCmd.Flags().Set("context", werfKubeContextEnvVar); err != nil { + util.CheckErr(fmt.Errorf("unable to set context flag for kubectl: %w", err)) + } + } + + skipTlsVerifyRegistryFlag := kubectlCmd.Flag("insecure-skip-tls-verify") + skipTlsVerifyRegistryFlag.Usage = "If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure (default $WERF_SKIP_TLS_VERIFY_REGISTRY)" + if isSkipTlsVerifyRegistry := common.GetBoolEnvironmentDefaultFalse("WERF_SKIP_TLS_VERIFY_REGISTRY"); isSkipTlsVerifyRegistry { + if err := kubectlCmd.Flags().Set("insecure-skip-tls-verify", "true"); err != nil { + util.CheckErr(fmt.Errorf("unable to set insecure-skip-tls-verify flag for kubectl: %w", err)) + } + } + + return kubectlCmd }