diff --git a/cmd/kk/app/options/builtin/add.go b/cmd/kk/app/options/builtin/add.go index e8d2f703..d13e87a7 100644 --- a/cmd/kk/app/options/builtin/add.go +++ b/cmd/kk/app/options/builtin/add.go @@ -106,8 +106,10 @@ func (o *AddNodeOptions) Complete(cmd *cobra.Command, args []string) (*kkcorev1. // complete updates the configuration with container manager and kubernetes version settings func (o *AddNodeOptions) complete() error { - if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { - return errors.Wrapf(err, "failed to set %q to config", "kube_version") + if _, ok, _ := unstructured.NestedFieldNoCopy(o.CommonOptions.Config.Value(), "kube_version"); !ok { + if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { + return errors.Wrapf(err, "failed to set %q to config", "kube_version") + } } var addNodes []string diff --git a/cmd/kk/app/options/builtin/create.go b/cmd/kk/app/options/builtin/create.go index f1f59cfb..3d178423 100644 --- a/cmd/kk/app/options/builtin/create.go +++ b/cmd/kk/app/options/builtin/create.go @@ -101,9 +101,10 @@ func (o *CreateClusterOptions) Complete(cmd *cobra.Command, args []string) (*kkc } func (o *CreateClusterOptions) completeConfig() error { - - if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { - return errors.Wrapf(err, "failed to set %q to config", "kube_version") + if _, ok, _ := unstructured.NestedFieldNoCopy(o.CommonOptions.Config.Value(), "kube_version"); !ok { + if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { + return errors.Wrapf(err, "failed to set %q to config", "kube_version") + } } return nil diff --git a/cmd/kk/app/options/builtin/delete.go b/cmd/kk/app/options/builtin/delete.go index 88dfc631..7fd45f27 100644 --- a/cmd/kk/app/options/builtin/delete.go +++ b/cmd/kk/app/options/builtin/delete.go @@ -104,8 +104,10 @@ func (o *DeleteClusterOptions) Complete(cmd *cobra.Command, args []string) (*kkc // completeConfig updates the configuration with container manager settings func (o *DeleteClusterOptions) completeConfig() error { - if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { - return errors.Wrapf(err, "failed to set %q to config", "kube_version") + if _, ok, _ := unstructured.NestedFieldNoCopy(o.CommonOptions.Config.Value(), "kube_version"); !ok { + if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { + return errors.Wrapf(err, "failed to set %q to config", "kube_version") + } } return nil @@ -184,8 +186,10 @@ func (o *DeleteNodesOptions) Complete(cmd *cobra.Command, args []string) (*kkcor // completeConfig updates the configuration with container manager settings func (o *DeleteNodesOptions) completeConfig(nodes []string) error { - if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { - return errors.Wrapf(err, "failed to set %q to config", "kube_version") + if _, ok, _ := unstructured.NestedFieldNoCopy(o.CommonOptions.Config.Value(), "kube_version"); !ok { + if err := unstructured.SetNestedField(o.CommonOptions.Config.Value(), o.Kubernetes, "kube_version"); err != nil { + return errors.Wrapf(err, "failed to set %q to config", "kube_version") + } } if err := unstructured.SetNestedStringSlice(o.CommonOptions.Config.Value(), nodes, "delete_nodes"); err != nil { return errors.Wrapf(err, "failed to set %q to config", "delete_nodes")