Skip to content

Commit

Permalink
fix: support WERF_KUBECONFIG_BASE64 in werf-cleanup command
Browse files Browse the repository at this point in the history
* Added support for KUBECONFIG path merge list into all commands.
* Ported to new kubedog pkg/kube package fixes from kubedog main.

Signed-off-by: Timofey Kirillov <timofey.kirillov@flant.com>
  • Loading branch information
distorhead committed Feb 22, 2022
1 parent ca132e9 commit e553f25
Show file tree
Hide file tree
Showing 18 changed files with 78 additions and 41 deletions.
7 changes: 4 additions & 3 deletions cmd/werf/cleanup/cleanup.go
Expand Up @@ -125,9 +125,10 @@ func runCleanup() error {
ctx = ctxWithDockerCli

if err := kube.Init(kube.InitOptions{KubeConfigOptions: kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
6 changes: 5 additions & 1 deletion cmd/werf/common/cleanup_namespaces_scan.go
Expand Up @@ -15,7 +15,11 @@ func SetupScanContextNamespaceOnly(cmdData *CmdData, cmd *cobra.Command) {

func GetKubernetesContextClients(cmdData *CmdData) ([]*kube.ContextClient, error) {
var res []*kube.ContextClient
if contextClients, err := kube.GetAllContextsClients(kube.GetAllContextsClientsOptions{KubeConfig: *cmdData.KubeConfig}); err != nil {
if contextClients, err := kube.GetAllContextsClients(kube.GetAllContextsClientsOptions{
ConfigPath: *cmdData.KubeConfig,
ConfigDataBase64: *cmdData.KubeConfigBase64,
ConfigPathMergeList: *cmdData.KubeConfigPathMergeList,
}); err != nil {
return nil, err
} else {
if *cmdData.KubeContext != "" {
Expand Down
9 changes: 8 additions & 1 deletion cmd/werf/common/common.go
Expand Up @@ -56,6 +56,7 @@ type CmdData struct {
KubeContext *string
KubeConfig *string
KubeConfigBase64 *string
KubeConfigPathMergeList *[]string
HelmReleaseStorageNamespace *string
HelmReleaseStorageType *string
StatusProgressPeriodSeconds *int64
Expand Down Expand Up @@ -300,7 +301,13 @@ func SetupKubeContext(cmdData *CmdData, cmd *cobra.Command) {

func SetupKubeConfig(cmdData *CmdData, cmd *cobra.Command) {
cmdData.KubeConfig = new(string)
cmd.PersistentFlags().StringVarP(cmdData.KubeConfig, "kube-config", "", getFirstExistingEnvVarAsString("WERF_KUBE_CONFIG", "WERF_KUBECONFIG", "KUBECONFIG"), "Kubernetes config file path (default $WERF_KUBE_CONFIG or $WERF_KUBECONFIG or $KUBECONFIG)")
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")
for _, path := range filepath.SplitList(kubeConfigPathMergeListStr) {
*cmdData.KubeConfigPathMergeList = append(*cmdData.KubeConfigPathMergeList, path)
}
}

func SetupKubeConfigBase64(cmdData *CmdData, cmd *cobra.Command) {
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/common/helm.go
Expand Up @@ -21,9 +21,10 @@ func NewActionConfig(ctx context.Context, namespace string, commonCmdData *CmdDa
StatusProgressPeriod: time.Duration(*commonCmdData.StatusProgressPeriodSeconds) * time.Second,
HooksStatusProgressPeriod: time.Duration(*commonCmdData.HooksStatusProgressPeriodSeconds) * time.Second,
KubeConfigOptions: kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
},
ReleasesHistoryMax: *commonCmdData.ReleasesHistoryMax,
}); err != nil {
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/converge/converge.go
Expand Up @@ -236,9 +236,10 @@ func runConverge() error {
}

kubeConfigOptions := kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
}

if err := kube.Init(kube.InitOptions{KubeConfigOptions: kubeConfigOptions}); err != nil {
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/deploy/main.go
Expand Up @@ -190,9 +190,10 @@ func runDeploy() error {
ctx = ctxWithDockerCli

kubeConfigOptions := kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}

if err := kube.Init(kube.InitOptions{KubeConfigOptions: kubeConfigOptions}); err != nil {
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/deploy_v2/main.go
Expand Up @@ -176,9 +176,10 @@ func runDeploy() error {
}

if err := kube.Init(kube.InitOptions{KubeConfigOptions: kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/diff/diff.go
Expand Up @@ -257,9 +257,10 @@ func runDiff() error {
}

if err := kube.Init(kube.InitOptions{kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/dismiss/dismiss.go
Expand Up @@ -153,9 +153,10 @@ func runDismiss() error {
projectName := werfConfig.Meta.Project

err = kube.Init(kube.InitOptions{kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}})
if err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/dismiss_v2/dismiss.go
Expand Up @@ -136,9 +136,10 @@ func runDismiss() error {
logboek.LogOptionalLn()

err = kube.Init(kube.InitOptions{kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}})
if err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/helm/deploy_chart/main.go
Expand Up @@ -149,9 +149,10 @@ func runDeployChart(chartDirOrChartReference string, releaseName string) error {
}

if err := kube.Init(kube.InitOptions{kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/helm/rollback/rollback.go
Expand Up @@ -103,9 +103,10 @@ func runRollback(releaseName string, revision int32) error {
}

if err := kube.Init(kube.InitOptions{kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/helm_v3/helm_v3.go
Expand Up @@ -103,9 +103,10 @@ func NewCmd() *cobra.Command {
ctx := common.BackgroundContext()

if err := kube.Init(kube.InitOptions{kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
7 changes: 4 additions & 3 deletions cmd/werf/images/cleanup/cleanup.go
Expand Up @@ -118,9 +118,10 @@ func runCleanup() error {
ctx = ctxWithDockerCli

if err := kube.Init(kube.InitOptions{KubeConfigOptions: kube.KubeConfigOptions{
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
Context: *commonCmdData.KubeContext,
ConfigPath: *commonCmdData.KubeConfig,
ConfigDataBase64: *commonCmdData.KubeConfigBase64,
ConfigPathMergeList: *commonCmdData.KubeConfigPathMergeList,
}}); err != nil {
return fmt.Errorf("cannot initialize kube: %s", err)
}
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -62,7 +62,7 @@ require (
github.com/theupdateframework/notary v0.6.1 // indirect
github.com/tonistiigi/fsutil v0.0.0-20200724193237-c3ed55f3b481 // indirect
github.com/tonistiigi/go-rosetta v0.0.0-20200727161949-f79598599c5d // indirect
github.com/werf/kubedog v0.4.1-0.20210609160549-c5ed5d787e86
github.com/werf/kubedog v0.4.1-0.20220222103049-afc67463c609
github.com/werf/lockgate v0.0.0-20200729113342-ec2c142f71ea
github.com/werf/logboek v0.4.7
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Expand Up @@ -1533,6 +1533,8 @@ github.com/werf/kubedog v0.4.1-0.20210604070304-fde5b6c69f6a h1:S9uj3JDE0i/Ux+DS
github.com/werf/kubedog v0.4.1-0.20210604070304-fde5b6c69f6a/go.mod h1:7SuLhuQddKnJri0LiMPoch94b6zAor7X3GvcufmgLqY=
github.com/werf/kubedog v0.4.1-0.20210609160549-c5ed5d787e86 h1:o+Xy3n9Kvme9wfalydgcRYv3Tjk/fIoLb5/BQOyhpd8=
github.com/werf/kubedog v0.4.1-0.20210609160549-c5ed5d787e86/go.mod h1:7SuLhuQddKnJri0LiMPoch94b6zAor7X3GvcufmgLqY=
github.com/werf/kubedog v0.4.1-0.20220222103049-afc67463c609 h1:gH8Zjx49Ze2YT7qgEYYnR+amdQUZeaZCaEQTGJ4HiRk=
github.com/werf/kubedog v0.4.1-0.20220222103049-afc67463c609/go.mod h1:7SuLhuQddKnJri0LiMPoch94b6zAor7X3GvcufmgLqY=
github.com/werf/lockgate v0.0.0-20200729113342-ec2c142f71ea h1:R5tJUhL5a3YfHTrHWyuAdJW3h//fmONrpHJjjAZ79e4=
github.com/werf/lockgate v0.0.0-20200729113342-ec2c142f71ea/go.mod h1:/CeY6KDiBSCU9PUmjt7zGhqpzp8FAPg/wNVfLZHQGWI=
github.com/werf/logboek v0.4.3 h1:aXAVLlGT/ZiD8Srj+B71Tw20PtDyuYZSEJZjODNraeA=
Expand Down
2 changes: 1 addition & 1 deletion pkg/deploy/helm/client_getter_from_data.go
Expand Up @@ -71,6 +71,6 @@ func (getter *ClientGetterFromConfigData) getRawKubeConfigLoader() (clientcmd.Cl
if data, err := base64.StdEncoding.DecodeString(getter.ConfigDataBase64); err != nil {
return nil, fmt.Errorf("unable to decode base64 config data: %s", err)
} else {
return kube.GetClientConfig(getter.Context, "", data)
return kube.GetClientConfig(getter.Context, "", data, []string{})
}
}
14 changes: 13 additions & 1 deletion pkg/deploy/helm/tiller.go
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"io"
"os"
"regexp"
"strings"
"text/tabwriter"
Expand Down Expand Up @@ -89,7 +90,9 @@ func loadChartfile(chartPath string) (*chart.Chart, error) {
}

type InitOptions struct {
KubeConfig string
KubeConfig string
// We are using WERF_KUBE_CONFIG, WERF_KUBECONFIG and KUBECONFIG variables directly at this level (1.1 only)
// KubeConfigPathMergeList []string
KubeConfigBase64 string
KubeContext string
HelmReleaseStorageNamespace string
Expand Down Expand Up @@ -119,6 +122,15 @@ func Init(ctx context.Context, options InitOptions) error {
}

HelmSettings.KubeConfig = options.KubeConfig

// Make sure WERF_KUBE_CONFIG and WERF_KUBECONFIG variables with config path merge list are supported
for _, env := range []string{"WERF_KUBE_CONFIG", "WERF_KUBECONFIG"} {
if v := os.Getenv(env); v != "" {
os.Setenv("KUBECONFIG", v)
break
}
}

HelmSettings.KubeContext = options.KubeContext
HelmSettings.TillerNamespace = options.HelmReleaseStorageNamespace

Expand Down

0 comments on commit e553f25

Please sign in to comment.