mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-11 04:52:08 +00:00
kubeadm: add 'kubeadm config print reset-defaults' command for ResetConfiguration
This commit is contained in:
parent
13172cba5c
commit
22f0f2e210
@ -36,7 +36,8 @@ import (
|
|||||||
|
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
|
kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
|
||||||
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
kubeadmapiv1old "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3"
|
||||||
|
kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta4"
|
||||||
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
|
outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme"
|
||||||
outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
|
outputapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/v1alpha2"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
|
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
|
||||||
@ -93,6 +94,7 @@ func newCmdConfigPrint(out io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
cmd.AddCommand(newCmdConfigPrintInitDefaults(out))
|
cmd.AddCommand(newCmdConfigPrintInitDefaults(out))
|
||||||
cmd.AddCommand(newCmdConfigPrintJoinDefaults(out))
|
cmd.AddCommand(newCmdConfigPrintJoinDefaults(out))
|
||||||
|
cmd.AddCommand(newCmdConfigPrintResetDefaults(out))
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,6 +108,11 @@ func newCmdConfigPrintJoinDefaults(out io.Writer) *cobra.Command {
|
|||||||
return newCmdConfigPrintActionDefaults(out, "join", getDefaultNodeConfigBytes)
|
return newCmdConfigPrintActionDefaults(out, "join", getDefaultNodeConfigBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newCmdConfigPrintResetDefaults returns cobra.Command for "kubeadm config print reset-defaults" command
|
||||||
|
func newCmdConfigPrintResetDefaults(out io.Writer) *cobra.Command {
|
||||||
|
return newCmdConfigPrintActionDefaults(out, "reset", getDefaultResetConfigBytes)
|
||||||
|
}
|
||||||
|
|
||||||
func newCmdConfigPrintActionDefaults(out io.Writer, action string, configBytesProc func() ([]byte, error)) *cobra.Command {
|
func newCmdConfigPrintActionDefaults(out io.Writer, action string, configBytesProc func() ([]byte, error)) *cobra.Command {
|
||||||
kinds := []string{}
|
kinds := []string{}
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -199,19 +206,19 @@ func getDefaultInitConfigBytes() ([]byte, error) {
|
|||||||
return []byte{}, err
|
return []byte{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion)
|
return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1old.SchemeGroupVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDefaultNodeConfigBytes() ([]byte, error) {
|
func getDefaultNodeConfigBytes() ([]byte, error) {
|
||||||
internalcfg, err := configutil.DefaultedJoinConfiguration(&kubeadmapiv1.JoinConfiguration{
|
internalcfg, err := configutil.DefaultedJoinConfiguration(&kubeadmapiv1old.JoinConfiguration{
|
||||||
Discovery: kubeadmapiv1.Discovery{
|
Discovery: kubeadmapiv1old.Discovery{
|
||||||
BootstrapToken: &kubeadmapiv1.BootstrapTokenDiscovery{
|
BootstrapToken: &kubeadmapiv1old.BootstrapTokenDiscovery{
|
||||||
Token: configutil.PlaceholderToken.Token.String(),
|
Token: configutil.PlaceholderToken.Token.String(),
|
||||||
APIServerEndpoint: "kube-apiserver:6443",
|
APIServerEndpoint: "kube-apiserver:6443",
|
||||||
UnsafeSkipCAVerification: true, // TODO: UnsafeSkipCAVerification: true needs to be set for validation to pass, but shouldn't be recommended as the default
|
UnsafeSkipCAVerification: true, // TODO: UnsafeSkipCAVerification: true needs to be set for validation to pass, but shouldn't be recommended as the default
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
NodeRegistration: kubeadmapiv1.NodeRegistrationOptions{
|
NodeRegistration: kubeadmapiv1old.NodeRegistrationOptions{
|
||||||
CRISocket: constants.DefaultCRISocket, // avoid CRI detection
|
CRISocket: constants.DefaultCRISocket, // avoid CRI detection
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -219,6 +226,17 @@ func getDefaultNodeConfigBytes() ([]byte, error) {
|
|||||||
return []byte{}, err
|
return []byte{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1old.SchemeGroupVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getDefaultResetConfigBytes() ([]byte, error) {
|
||||||
|
internalcfg, err := configutil.DefaultedResetConfiguration(&kubeadmapiv1.ResetConfiguration{
|
||||||
|
CRISocket: constants.DefaultCRISocket, // avoid CRI detection
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return []byte{}, err
|
||||||
|
}
|
||||||
|
|
||||||
return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion)
|
return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +261,7 @@ func newCmdConfigMigrate(out io.Writer) *cobra.Command {
|
|||||||
|
|
||||||
In other words, the output of this command is what kubeadm actually would read internally if you
|
In other words, the output of this command is what kubeadm actually would read internally if you
|
||||||
submitted this file to "kubeadm init"
|
submitted this file to "kubeadm init"
|
||||||
`), kubeadmapiv1.SchemeGroupVersion, kubeadmapiv1.SchemeGroupVersion),
|
`), kubeadmapiv1old.SchemeGroupVersion, kubeadmapiv1old.SchemeGroupVersion),
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
if len(oldCfgPath) == 0 {
|
if len(oldCfgPath) == 0 {
|
||||||
return errors.New("the --old-config flag is mandatory")
|
return errors.New("the --old-config flag is mandatory")
|
||||||
@ -293,7 +311,7 @@ func newCmdConfigValidate(out io.Writer) *cobra.Command {
|
|||||||
|
|
||||||
In this version of kubeadm, the following API versions are supported:
|
In this version of kubeadm, the following API versions are supported:
|
||||||
- %s
|
- %s
|
||||||
`), kubeadmapiv1.SchemeGroupVersion),
|
`), kubeadmapiv1old.SchemeGroupVersion),
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
if len(cfgPath) == 0 {
|
if len(cfgPath) == 0 {
|
||||||
return errors.Errorf("the --%s flag is mandatory", options.CfgPath)
|
return errors.Errorf("the --%s flag is mandatory", options.CfgPath)
|
||||||
@ -332,9 +350,9 @@ func newCmdConfigImages(out io.Writer) *cobra.Command {
|
|||||||
|
|
||||||
// newCmdConfigImagesPull returns the `kubeadm config images pull` command
|
// newCmdConfigImagesPull returns the `kubeadm config images pull` command
|
||||||
func newCmdConfigImagesPull() *cobra.Command {
|
func newCmdConfigImagesPull() *cobra.Command {
|
||||||
externalClusterCfg := &kubeadmapiv1.ClusterConfiguration{}
|
externalClusterCfg := &kubeadmapiv1old.ClusterConfiguration{}
|
||||||
kubeadmscheme.Scheme.Default(externalClusterCfg)
|
kubeadmscheme.Scheme.Default(externalClusterCfg)
|
||||||
externalInitCfg := &kubeadmapiv1.InitConfiguration{}
|
externalInitCfg := &kubeadmapiv1old.InitConfiguration{}
|
||||||
kubeadmscheme.Scheme.Default(externalInitCfg)
|
kubeadmscheme.Scheme.Default(externalInitCfg)
|
||||||
var cfgPath, featureGatesString string
|
var cfgPath, featureGatesString string
|
||||||
var err error
|
var err error
|
||||||
@ -379,7 +397,7 @@ func PullControlPlaneImages(runtime utilruntime.ContainerRuntime, cfg *kubeadmap
|
|||||||
|
|
||||||
// newCmdConfigImagesList returns the "kubeadm config images list" command
|
// newCmdConfigImagesList returns the "kubeadm config images list" command
|
||||||
func newCmdConfigImagesList(out io.Writer, mockK8sVersion *string) *cobra.Command {
|
func newCmdConfigImagesList(out io.Writer, mockK8sVersion *string) *cobra.Command {
|
||||||
externalcfg := &kubeadmapiv1.ClusterConfiguration{}
|
externalcfg := &kubeadmapiv1old.ClusterConfiguration{}
|
||||||
kubeadmscheme.Scheme.Default(externalcfg)
|
kubeadmscheme.Scheme.Default(externalcfg)
|
||||||
var cfgPath, featureGatesString string
|
var cfgPath, featureGatesString string
|
||||||
var err error
|
var err error
|
||||||
@ -421,7 +439,7 @@ func newCmdConfigImagesList(out io.Writer, mockK8sVersion *string) *cobra.Comman
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewImagesList returns the underlying struct for the "kubeadm config images list" command
|
// NewImagesList returns the underlying struct for the "kubeadm config images list" command
|
||||||
func NewImagesList(cfgPath string, cfg *kubeadmapiv1.ClusterConfiguration) (*ImagesList, error) {
|
func NewImagesList(cfgPath string, cfg *kubeadmapiv1old.ClusterConfiguration) (*ImagesList, error) {
|
||||||
initcfg, err := configutil.LoadOrDefaultInitConfiguration(cfgPath, cmdutil.DefaultInitConfiguration(), cfg)
|
initcfg, err := configutil.LoadOrDefaultInitConfiguration(cfgPath, cmdutil.DefaultInitConfiguration(), cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "could not convert cfg to an internal cfg")
|
return nil, errors.Wrap(err, "could not convert cfg to an internal cfg")
|
||||||
@ -476,7 +494,7 @@ func (i *ImagesList) Run(out io.Writer, printer output.Printer) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// AddImagesCommonConfigFlags adds the flags that configure kubeadm (and affect the images kubeadm will use)
|
// AddImagesCommonConfigFlags adds the flags that configure kubeadm (and affect the images kubeadm will use)
|
||||||
func AddImagesCommonConfigFlags(flagSet *flag.FlagSet, cfg *kubeadmapiv1.ClusterConfiguration, cfgPath *string, featureGatesString *string) {
|
func AddImagesCommonConfigFlags(flagSet *flag.FlagSet, cfg *kubeadmapiv1old.ClusterConfiguration, cfgPath *string, featureGatesString *string) {
|
||||||
options.AddKubernetesVersionFlag(flagSet, &cfg.KubernetesVersion)
|
options.AddKubernetesVersionFlag(flagSet, &cfg.KubernetesVersion)
|
||||||
options.AddFeatureGatesStringFlag(flagSet, featureGatesString)
|
options.AddFeatureGatesStringFlag(flagSet, featureGatesString)
|
||||||
options.AddImageMetaFlags(flagSet, &cfg.ImageRepository)
|
options.AddImageMetaFlags(flagSet, &cfg.ImageRepository)
|
||||||
|
@ -451,6 +451,32 @@ func TestNewCmdConfigPrintActionDefaults(t *testing.T) {
|
|||||||
componentConfigs: "KubeProxyConfiguration,KubeletConfiguration",
|
componentConfigs: "KubeProxyConfiguration,KubeletConfiguration",
|
||||||
cmdProc: newCmdConfigPrintJoinDefaults,
|
cmdProc: newCmdConfigPrintJoinDefaults,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "ResetConfiguration: No component configs",
|
||||||
|
expectedKinds: []string{
|
||||||
|
constants.ResetConfigurationKind,
|
||||||
|
},
|
||||||
|
cmdProc: newCmdConfigPrintResetDefaults,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "JoinConfiguration: KubeProxyConfiguration",
|
||||||
|
expectedKinds: []string{
|
||||||
|
"KubeProxyConfiguration",
|
||||||
|
constants.ResetConfigurationKind,
|
||||||
|
},
|
||||||
|
componentConfigs: "KubeProxyConfiguration",
|
||||||
|
cmdProc: newCmdConfigPrintResetDefaults,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "JoinConfiguration: KubeProxyConfiguration and KubeletConfiguration",
|
||||||
|
expectedKinds: []string{
|
||||||
|
"KubeProxyConfiguration",
|
||||||
|
"KubeletConfiguration",
|
||||||
|
constants.ResetConfigurationKind,
|
||||||
|
},
|
||||||
|
componentConfigs: "KubeProxyConfiguration,KubeletConfiguration",
|
||||||
|
cmdProc: newCmdConfigPrintResetDefaults,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
Loading…
Reference in New Issue
Block a user