Skip to content

Commit 8014d98

Browse files
committed
feat(kube-run): add --kube-config, fix --kube-context opts
Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
1 parent 588eb2d commit 8014d98

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

cmd/werf/common/common.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,18 +352,22 @@ func SetupKubeConfig(cmdData *CmdData, cmd *cobra.Command) {
352352
cmd.PersistentFlags().StringVarP(cmdData.KubeConfig, "kube-config", "", "", "Kubernetes config file path (default $WERF_KUBE_CONFIG, or $WERF_KUBECONFIG, or $KUBECONFIG)")
353353

354354
cmdData.KubeConfigPathMergeList = new([]string)
355-
kubeConfigPathMergeListStr := getFirstExistingEnvVarAsString("WERF_KUBE_CONFIG", "WERF_KUBECONFIG", "KUBECONFIG")
355+
kubeConfigPathMergeListStr := GetFirstExistingKubeConfigEnvVar()
356356
for _, path := range filepath.SplitList(kubeConfigPathMergeListStr) {
357357
*cmdData.KubeConfigPathMergeList = append(*cmdData.KubeConfigPathMergeList, path)
358358
}
359359
}
360360

361+
func GetFirstExistingKubeConfigEnvVar() string {
362+
return GetFirstExistingEnvVarAsString("WERF_KUBE_CONFIG", "WERF_KUBECONFIG", "KUBECONFIG")
363+
}
364+
361365
func SetupKubeConfigBase64(cmdData *CmdData, cmd *cobra.Command) {
362366
cmdData.KubeConfigBase64 = new(string)
363-
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)")
367+
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)")
364368
}
365369

366-
func getFirstExistingEnvVarAsString(envNames ...string) string {
370+
func GetFirstExistingEnvVarAsString(envNames ...string) string {
367371
for _, envName := range envNames {
368372
if v := os.Getenv(envName); v != "" {
369373
return v

cmd/werf/kube_run/kube_run.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ func NewCmd() *cobra.Command {
154154
common.SetupLogProjectDir(&commonCmdData, cmd)
155155

156156
common.SetupSynchronization(&commonCmdData, cmd)
157+
common.SetupKubeConfig(&commonCmdData, cmd)
157158
// TODO(ilya-lesikov): doesn't work, need to be passed to `werf kubectl` somehow
158-
// common.SetupKubeConfig(&commonCmdData, cmd)
159159
// common.SetupKubeConfigBase64(&commonCmdData, cmd)
160160
common.SetupKubeContext(&commonCmdData, cmd)
161161

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

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

424+
if *commonCmdData.KubeContext != "" {
425+
args = append(args, "--context", *commonCmdData.KubeContext)
426+
}
427+
428+
if *commonCmdData.KubeConfig != "" {
429+
args = append(args, "--kubeconfig", *commonCmdData.KubeConfig)
430+
}
431+
432+
if kubeConf := common.GetFirstExistingKubeConfigEnvVar(); kubeConf != "" {
433+
if err := os.Setenv("KUBECONFIG", kubeConf); err != nil {
434+
return fmt.Errorf("unable to set $KUBECONFIG env var: %w", err)
435+
}
436+
}
437+
424438
var overrides map[string]interface{}
425439
if cmdData.Overrides != "" {
426440
if err := json.Unmarshal([]byte(cmdData.Overrides), &overrides); err != nil {

0 commit comments

Comments
 (0)