Skip to content

Commit

Permalink
feat(kube-run): add --kube-config, fix --kube-context opts
Browse files Browse the repository at this point in the history
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
  • Loading branch information
ilya-lesikov committed Mar 22, 2022
1 parent 588eb2d commit 8014d98
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 5 deletions.
10 changes: 7 additions & 3 deletions cmd/werf/common/common.go
Expand Up @@ -352,18 +352,22 @@ func SetupKubeConfig(cmdData *CmdData, cmd *cobra.Command) {
cmd.PersistentFlags().StringVarP(cmdData.KubeConfig, "kube-config", "", "", "Kubernetes config file path (default $WERF_KUBE_CONFIG, or $WERF_KUBECONFIG, or $KUBECONFIG)")

cmdData.KubeConfigPathMergeList = new([]string)
kubeConfigPathMergeListStr := getFirstExistingEnvVarAsString("WERF_KUBE_CONFIG", "WERF_KUBECONFIG", "KUBECONFIG")
kubeConfigPathMergeListStr := GetFirstExistingKubeConfigEnvVar()
for _, path := range filepath.SplitList(kubeConfigPathMergeListStr) {
*cmdData.KubeConfigPathMergeList = append(*cmdData.KubeConfigPathMergeList, path)
}
}

func GetFirstExistingKubeConfigEnvVar() string {
return GetFirstExistingEnvVarAsString("WERF_KUBE_CONFIG", "WERF_KUBECONFIG", "KUBECONFIG")
}

func SetupKubeConfigBase64(cmdData *CmdData, cmd *cobra.Command) {
cmdData.KubeConfigBase64 = new(string)
cmd.PersistentFlags().StringVarP(cmdData.KubeConfigBase64, "kube-config-base64", "", getFirstExistingEnvVarAsString("WERF_KUBE_CONFIG_BASE64", "WERF_KUBECONFIG_BASE64", "KUBECONFIG_BASE64"), "Kubernetes config data as base64 string (default $WERF_KUBE_CONFIG_BASE64 or $WERF_KUBECONFIG_BASE64 or $KUBECONFIG_BASE64)")
cmd.PersistentFlags().StringVarP(cmdData.KubeConfigBase64, "kube-config-base64", "", GetFirstExistingEnvVarAsString("WERF_KUBE_CONFIG_BASE64", "WERF_KUBECONFIG_BASE64", "KUBECONFIG_BASE64"), "Kubernetes config data as base64 string (default $WERF_KUBE_CONFIG_BASE64 or $WERF_KUBECONFIG_BASE64 or $KUBECONFIG_BASE64)")
}

func getFirstExistingEnvVarAsString(envNames ...string) string {
func GetFirstExistingEnvVarAsString(envNames ...string) string {
for _, envName := range envNames {
if v := os.Getenv(envName); v != "" {
return v
Expand Down
18 changes: 16 additions & 2 deletions cmd/werf/kube_run/kube_run.go
Expand Up @@ -154,8 +154,8 @@ func NewCmd() *cobra.Command {
common.SetupLogProjectDir(&commonCmdData, cmd)

common.SetupSynchronization(&commonCmdData, cmd)
common.SetupKubeConfig(&commonCmdData, cmd)
// TODO(ilya-lesikov): doesn't work, need to be passed to `werf kubectl` somehow
// common.SetupKubeConfig(&commonCmdData, cmd)
// common.SetupKubeConfigBase64(&commonCmdData, cmd)
common.SetupKubeContext(&commonCmdData, cmd)

Expand Down Expand Up @@ -277,7 +277,7 @@ func runMain(ctx context.Context) error {

// TODO(ilya-lesikov): doesn't work, need to be passed to `werf kubectl` somehow
// common.SetupOndemandKubeInitializer(*commonCmdData.KubeContext, *commonCmdData.KubeConfig, *commonCmdData.KubeConfigBase64, *commonCmdData.KubeConfigPathMergeList)
common.SetupOndemandKubeInitializer(*commonCmdData.KubeContext, "", "", nil)
common.SetupOndemandKubeInitializer(*commonCmdData.KubeContext, *commonCmdData.KubeConfig, "", *commonCmdData.KubeConfigPathMergeList)
if err := common.GetOndemandKubeInitializer().Init(ctx); err != nil {
return err
}
Expand Down Expand Up @@ -421,6 +421,20 @@ func run(ctx context.Context, pod, secret, namespace string, werfConfig *config.
args = append(args, "-t")
}

if *commonCmdData.KubeContext != "" {
args = append(args, "--context", *commonCmdData.KubeContext)
}

if *commonCmdData.KubeConfig != "" {
args = append(args, "--kubeconfig", *commonCmdData.KubeConfig)
}

if kubeConf := common.GetFirstExistingKubeConfigEnvVar(); kubeConf != "" {
if err := os.Setenv("KUBECONFIG", kubeConf); err != nil {
return fmt.Errorf("unable to set $KUBECONFIG env var: %w", err)
}
}

var overrides map[string]interface{}
if cmdData.Overrides != "" {
if err := json.Unmarshal([]byte(cmdData.Overrides), &overrides); err != nil {
Expand Down

0 comments on commit 8014d98

Please sign in to comment.