Kubeadm: Expose the kubeadm join workflow as phases

Created on 31 Oct 2018  路  20Comments  路  Source: kubernetes/kubeadm

as per comment https://github.com/kubernetes/kubernetes/pull/70333#discussion_r229811268

in v1.12 we are exposing the kubeadm init workflow as phases, and moving all the other commands formerly hoster under kubeadm alpha phase to kubeadm alpha (without phases).
This re-shuffle includes also subcommands that are part of the kubeadm join workflow (e.g. preflight node, kubelet config download).

if there is consensus, we should start from those pieces and expose also the kubeadm join workflow as phases


plan:

old KEP for phases:
https://github.com/kubernetes/enhancements/blob/master/keps/sig-cluster-lifecycle/0029-20180918-kubeadm-phases-beta.md

(neolit123): here is document for discussing the phases for join:
https://docs.google.com/document/d/1nkTy7r1pBZvQT_YnuGHEQ5MrQZBaC2A7frXxzd6y7m0/edit?usp=sharing

we need to evict the Run method from join.go and move the logic to join phases.
the phase runner mechanic that we use in init.go should be used for that.

NOTE: the merging of PRs should happen in the exact order bellow.

list of phases, action items, PRs, assignees :


item: move the fetching of init configuration to joinData struct + prepare for phases.
assigned: @neolit123

notes: we need to move the init config from Run() to joinData as an (e.g.) initConfig field.

this is is a preliminary step and has to happen before everything else


item: get args working for leaf phases
assigned: @ereslibre


item: phase name preflight
assigned: @MalloZup

note: includes the following logic:

  • general checks
  • optional checks based on initConfig
  • check if ready for additional control plane
  • control plane checks

item: phase name control-plane-prepare
assigned: @ereslibre

notes: function name is PrepareForHostingControlPlane

has these sub phases:

  • certs (create PKI assets)
  • kubeconfig
  • manifests

plus an additional hidden phase named etcdCheck

  • etcd check (if initConfiguration.Etcd.External == nil from PrepareForHostingControlPlane)

item: phase name kubelet-start
assigned: @yagonobre

notes: function name is BootstrapKubelet
no sub phases, all logic in a single runner callback function.


item: phase name control-plane-join
assigned: @RA489

notes: main function name is PostInstallControlPlane but also code from Run()

has these sub phases:

  • etcd-local
  • upload-config
  • mark-control-plane

item: make a final check on the UX, with focus on args (e.g. evaluate if args should be made phase specific)

See document Auditing Join Phases
https://docs.google.com/document/d/1tqgjB_KJMeYAXHYqOuBKKpCLSzxVgSl-MUfXf7d8C8U/edit?usp=sharing

Decide on how to handle the extra arg (see comment on the issue)
https://github.com/kubernetes/kubeadm/issues/1375
assigned: TBD

  • [ ] PR:

Fix labels and help messages
assigned: @fabriziopandini

First pass on flags (add missing flags, optimize usage of discovery flags)
assigned: @fabriziopandini

Second pass on flags (check and remove flags marked as why?)
assigned: @neolit123

Cleanup of join output (all the message should be prefixed by the phase name, where possible print messages should be made equal to init)
assigned: @neolit123

Cleanup of preflight checks (join call preflight twice; make the second call skip checks already executed by the first one or make a new preflight check function for join control-plane)
assigned: @neolit123

kincleanup kinfeature kintracking-issue lifecyclactive prioritimportant-soon

All 20 comments

I can work on it in the next cycle
/assign @yagonobre
/lifecycle active

@yagonobre great!
Looking forward for the draft of the list of phases to be implemented!

/assign

we are going to track the work in this issue and possibly have volunteers help us with that.

after this PR merged:
https://github.com/kubernetes/kubernetes/pull/72442
we need to solidify/define the list of phases for join.

I'm also willing to help with this effort, as of todays kubeadm office hours meeting.

I can also help with this effort.

taking control-plane-join phase.

@RA489 thanks, assigned.

as a reminder, please note that the PRs have to come in order.
preflight -> control plane -> .....

I can take control-plane-prepare phase

@neolit123 i can take the preflight one

thanks @ereslibre and @MalloZup .
the only vacant item now is kubelet-start

I can take kubelet-start

thanks you @yagonobre

@MalloZup: GitHub didn't allow me to assign the following users: MalloZup.

Note that only kubernetes members and repo collaborators can be assigned and that issues/PRs can only have 10 assignees at the same time.
For more information please see the contributor guide

In response to this:

/assign @MalloZup

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

the base PR for phases in join has merged.
@MalloZup you can start with the PR for preflight.

@neolit123 thx for infos. yop i'm looking at it :rocket:

control-plane-prepare phase is ready for review in https://github.com/kubernetes/kubernetes/pull/73145/

thanks for everyone who contributed. all the PRs for phases are added.
we now need to focus on auditing them.

it will be OK to push bugfixes even after code freeze.

i will help next week or later this week to verify the join phases.

also this doc already has outlined some nits (thanks @fabriziopandini )
https://docs.google.com/document/d/1tqgjB_KJMeYAXHYqOuBKKpCLSzxVgSl-MUfXf7d8C8U/edit#
(if you don't see the comments on the right of the doc screen - make sure you zoom out)

we are pretty much done here, minus:

Decide on how to handle the extra arg (see comment on the issue)

1375

which is for 1.15.

and auditing.

closing this ticket as the work here is done.
leaving https://github.com/kubernetes/kubeadm/issues/1375 as a standalone ticket.

Was this page helpful?
0 / 5 - 0 ratings