kubeadm: add the --patches flag and deprecate --experimental-patches

The feature of "patches" in kubeadm has been in Alpha for a few
releases. It has not received major bug reports from users.
Deprecate the --experimental-patches flag and add --patches.

Both flags are allowed to be mixed with --config.
This commit is contained in:
Lubomir I. Ivanov 2021-06-21 21:28:15 +03:00
parent 15a60d1a19
commit a4402122b4
7 changed files with 29 additions and 9 deletions

View File

@ -568,6 +568,8 @@ func isAllowedFlag(flagName string) bool {
kubeadmcmdoptions.KubeconfigDir, kubeadmcmdoptions.KubeconfigDir,
kubeadmcmdoptions.UploadCerts, kubeadmcmdoptions.UploadCerts,
kubeadmcmdoptions.Patches, kubeadmcmdoptions.Patches,
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
kubeadmcmdoptions.ExperimentalPatches,
"print-join-command", "rootfs", "v", "log-file") "print-join-command", "rootfs", "v", "log-file")
if allowedFlags.Has(flagName) { if allowedFlags.Has(flagName) {
return true return true

View File

@ -144,5 +144,9 @@ const (
EtcdUpgrade = "etcd-upgrade" EtcdUpgrade = "etcd-upgrade"
// Patches flag sets the folder where kubeadm component patches are stored // Patches flag sets the folder where kubeadm component patches are stored
Patches = "experimental-patches" Patches = "patches"
// ExperimentalPatches (DEPRECATED) is the same as Patches
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
ExperimentalPatches = "experimental-patches"
) )

View File

@ -91,12 +91,16 @@ func AddKubeadmOtherFlags(flagSet *pflag.FlagSet, rootfsPath *string) {
// AddPatchesFlag adds the --patches flag to the given flagset // AddPatchesFlag adds the --patches flag to the given flagset
func AddPatchesFlag(fs *pflag.FlagSet, patchesDir *string) { func AddPatchesFlag(fs *pflag.FlagSet, patchesDir *string) {
fs.StringVar(patchesDir, Patches, *patchesDir, `Path to a directory that contains files named `+ const usage = `Path to a directory that contains files named ` +
`"target[suffix][+patchtype].extension". For example, ` + `"target[suffix][+patchtype].extension". For example, ` +
`"kube-apiserver0+merge.yaml" or just "etcd.json". ` + `"kube-apiserver0+merge.yaml" or just "etcd.json". ` +
`"target" can be one of "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd". ` +
`"patchtype" can be one of "strategic", "merge" or "json" and they match the patch formats ` + `"patchtype" can be one of "strategic", "merge" or "json" and they match the patch formats ` +
`supported by kubectl. The default "patchtype" is "strategic". "extension" must be either ` + `supported by kubectl. The default "patchtype" is "strategic". "extension" must be either ` +
`"json" or "yaml". "suffix" is an optional string that can be used to determine ` + `"json" or "yaml". "suffix" is an optional string that can be used to determine ` +
`which patches are applied first alpha-numerically.`, `which patches are applied first alpha-numerically.`
) fs.StringVar(patchesDir, Patches, *patchesDir, usage)
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
fs.StringVar(patchesDir, ExperimentalPatches, *patchesDir, usage)
fs.MarkDeprecated(ExperimentalPatches, "This flag will be removed in a future version. Please use '--patches' instead.")
} }

View File

@ -101,6 +101,8 @@ func getControlPlanePhaseFlags(name string) []string {
options.KubernetesVersion, options.KubernetesVersion,
options.ImageRepository, options.ImageRepository,
options.Patches, options.Patches,
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
options.ExperimentalPatches,
options.DryRun, options.DryRun,
} }
if name == "all" || name == kubeadmconstants.KubeAPIServer { if name == "all" || name == kubeadmconstants.KubeAPIServer {

View File

@ -44,6 +44,8 @@ func getControlPlaneJoinPhaseFlags(name string) []string {
} }
if name == "etcd" || name == "all" { if name == "etcd" || name == "all" {
flags = append(flags, options.Patches) flags = append(flags, options.Patches)
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
flags = append(flags, options.ExperimentalPatches)
} }
if name != "mark-control-plane" { if name != "mark-control-plane" {
flags = append(flags, options.APIServerAdvertiseAddress) flags = append(flags, options.APIServerAdvertiseAddress)

View File

@ -79,6 +79,8 @@ func getControlPlanePreparePhaseFlags(name string) []string {
options.TokenStr, options.TokenStr,
options.CertificateKey, options.CertificateKey,
options.Patches, options.Patches,
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
options.ExperimentalPatches,
} }
case "download-certs": case "download-certs":
flags = []string{ flags = []string{
@ -124,6 +126,8 @@ func getControlPlanePreparePhaseFlags(name string) []string {
options.CfgPath, options.CfgPath,
options.ControlPlane, options.ControlPlane,
options.Patches, options.Patches,
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
options.ExperimentalPatches,
} }
default: default:
flags = []string{} flags = []string{}

View File

@ -40,6 +40,8 @@ func NewControlPlane() workflow.Phase {
options.CertificateRenewal, options.CertificateRenewal,
options.EtcdUpgrade, options.EtcdUpgrade,
options.Patches, options.Patches,
// TODO: https://github.com/kubernetes/kubeadm/issues/2046 remove in 1.23
options.ExperimentalPatches,
}, },
} }
return phase return phase