Merge pull request #75013 from neolit123/fix-join-flags

kubeadm: amend flags for join phases
pull/564/head
Kubernetes Prow Robot 2019-03-06 09:51:04 -08:00 committed by GitHub
commit 0e2c26829c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 84 additions and 38 deletions

View File

@ -16,7 +16,6 @@ go_library(
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/cmd/options:go_default_library",
"//cmd/kubeadm/app/cmd/phases/workflow:go_default_library",
"//cmd/kubeadm/app/cmd/util:go_default_library",
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/phases/certs:go_default_library",
"//cmd/kubeadm/app/phases/controlplane:go_default_library",

View File

@ -22,7 +22,6 @@ import (
"github.com/pkg/errors"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
etcdphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/etcd"
markcontrolplanephase "k8s.io/kubernetes/cmd/kubeadm/app/phases/markcontrolplane"
@ -30,21 +29,21 @@ import (
"k8s.io/kubernetes/pkg/util/normalizer"
)
var (
controlPlaneJoinExample = normalizer.Examples(`
# Joins a machine as a control plane instance
kubeadm join phase control-plane-join all
`)
)
var controlPlaneJoinExample = normalizer.Examples(`
# Joins a machine as a control plane instance
kubeadm join phase control-plane-join all
`)
func getControlPlaneJoinPhaseFlags() []string {
return []string{
options.APIServerAdvertiseAddress,
options.APIServerBindPort,
func getControlPlaneJoinPhaseFlags(name string) []string {
flags := []string{
options.CfgPath,
options.ControlPlane,
options.NodeName,
}
if name != "mark-control-plane" {
flags = append(flags, options.APIServerAdvertiseAddress)
}
return flags
}
// NewControlPlaneJoinPhase creates a kubeadm workflow phase that implements joining a machine as a control plane instance
@ -52,13 +51,12 @@ func NewControlPlaneJoinPhase() workflow.Phase {
return workflow.Phase{
Name: "control-plane-join",
Short: "Joins a machine as a control plane instance",
Long: cmdutil.MacroCommandLongDescription,
Example: controlPlaneJoinExample,
Phases: []workflow.Phase{
{
Name: "all",
Short: "Joins a machine as a control plane instance",
InheritFlags: getControlPlaneJoinPhaseFlags(),
InheritFlags: getControlPlaneJoinPhaseFlags("all"),
RunAllSiblings: true,
},
newEtcdLocalSubphase(),
@ -73,7 +71,7 @@ func newEtcdLocalSubphase() workflow.Phase {
Name: "etcd",
Short: "Add a new local etcd member",
Run: runEtcdPhase,
InheritFlags: getControlPlaneJoinPhaseFlags(),
InheritFlags: getControlPlaneJoinPhaseFlags("etcd"),
}
}
@ -86,7 +84,7 @@ func newUpdateStatusSubphase() workflow.Phase {
kubeadmconstants.KubeadmConfigConfigMap,
),
Run: runUpdateStatusPhase,
InheritFlags: getControlPlaneJoinPhaseFlags(),
InheritFlags: getControlPlaneJoinPhaseFlags("update-status"),
}
}
@ -95,7 +93,7 @@ func newMarkControlPlaneSubphase() workflow.Phase {
Name: "mark-control-plane",
Short: "Mark a node as a control-plane",
Run: runMarkControlPlanePhase,
InheritFlags: getControlPlaneJoinPhaseFlags(),
InheritFlags: getControlPlaneJoinPhaseFlags("mark-control-plane"),
}
}

View File

@ -31,13 +31,20 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/phases/copycerts"
kubeconfigphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig"
kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig"
"k8s.io/kubernetes/pkg/util/normalizer"
)
var controlPlanePrepareExample = normalizer.Examples(`
# Prepares the machine for serving a control plane
kubeadm join phase control-plane-prepare all
`)
// NewControlPlanePreparePhase creates a kubeadm workflow phase that implements the preparation of the node to serve a control plane
func NewControlPlanePreparePhase() workflow.Phase {
return workflow.Phase{
Name: "control-plane-prepare",
Short: "Prepares the machine for serving a control plane.",
Name: "control-plane-prepare",
Short: "Prepares the machine for serving a control plane.",
Example: controlPlanePrepareExample,
Phases: []workflow.Phase{
{
Name: "all [api-server-endpoint]",
@ -48,33 +55,75 @@ func NewControlPlanePreparePhase() workflow.Phase {
newControlPlanePrepareDownloadCertsSubphase(),
newControlPlanePrepareCertsSubphase(),
newControlPlanePrepareKubeconfigSubphase(),
newControlPlanePrepareManifestsSubphases(),
newControlPlanePrepareControlPlaneSubphase(),
},
}
}
func getControlPlanePreparePhaseFlags(name string) []string {
flags := []string{
options.APIServerAdvertiseAddress,
options.APIServerBindPort,
options.CfgPath,
options.ControlPlane,
options.NodeName,
}
if name != "manifests" {
flags = append(flags,
var flags []string
switch name {
case "all":
flags = []string{
options.APIServerAdvertiseAddress,
options.APIServerBindPort,
options.CfgPath,
options.ControlPlane,
options.NodeName,
options.FileDiscovery,
options.TokenDiscovery,
options.TokenDiscoveryCAHash,
options.TokenDiscoverySkipCAHash,
options.TLSBootstrapToken,
options.TokenStr,
)
}
if name == "all" || name == "download-certs" {
flags = append(flags,
options.CertificateKey,
)
}
case "download-certs":
flags = []string{
options.CfgPath,
options.ControlPlane,
options.FileDiscovery,
options.TokenDiscovery,
options.TokenDiscoveryCAHash,
options.TokenDiscoverySkipCAHash,
options.TLSBootstrapToken,
options.TokenStr,
options.CertificateKey,
}
case "certs":
flags = []string{
options.APIServerAdvertiseAddress,
options.CfgPath,
options.ControlPlane,
options.NodeName,
options.FileDiscovery,
options.TokenDiscovery,
options.TokenDiscoveryCAHash,
options.TokenDiscoverySkipCAHash,
options.TLSBootstrapToken,
options.TokenStr,
}
case "kubeconfig":
flags = []string{
options.CfgPath,
options.ControlPlane,
options.FileDiscovery,
options.TokenDiscovery,
options.TokenDiscoveryCAHash,
options.TokenDiscoverySkipCAHash,
options.TLSBootstrapToken,
options.TokenStr,
options.CertificateKey,
}
case "control-plane":
flags = []string{
options.APIServerAdvertiseAddress,
options.APIServerBindPort,
options.CfgPath,
options.ControlPlane,
}
default:
flags = []string{}
}
return flags
}
@ -106,16 +155,16 @@ func newControlPlanePrepareKubeconfigSubphase() workflow.Phase {
}
}
func newControlPlanePrepareManifestsSubphases() workflow.Phase {
func newControlPlanePrepareControlPlaneSubphase() workflow.Phase {
return workflow.Phase{
Name: "control-plane",
Short: "Generates the manifests for the new control plane components",
Run: runControlPlanePrepareManifestsSubphase, //NB. eventually in future we would like to break down this in sub phases for each component
InheritFlags: getControlPlanePreparePhaseFlags("manifests"),
Run: runControlPlanePrepareControlPlaneSubphase, //NB. eventually in future we would like to break down this in sub phases for each component
InheritFlags: getControlPlanePreparePhaseFlags("control-plane"),
}
}
func runControlPlanePrepareManifestsSubphase(c workflow.RunData) error {
func runControlPlanePrepareControlPlaneSubphase(c workflow.RunData) error {
data, ok := c.(JoinData)
if !ok {
return errors.New("control-plane-prepare phase invoked with an invalid data struct")