mirror of https://github.com/k3s-io/k3s
Merge pull request #75013 from neolit123/fix-join-flags
kubeadm: amend flags for join phasespull/564/head
commit
0e2c26829c
|
@ -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",
|
||||
|
|
|
@ -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"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue