Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Roadmap] Create the kubeadm library #2316

Open
fabriziopandini opened this issue Sep 30, 2020 · 9 comments
Open

[Roadmap] Create the kubeadm library #2316

fabriziopandini opened this issue Sep 30, 2020 · 9 comments
Labels
kind/design Categorizes issue or PR as related to design. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Milestone

Comments

@fabriziopandini
Copy link
Member

One of the kubeadm goals was to provide a toolbox for higher-level tools.

However, as of today, kubeadm can be consumed only as a CLI command, and this limits the options for higher-level tools when designing kubeadm integration; the current model is also a limitation because the func existing in kubeadm e.g. for managing certificates, kubeconfig, or the kubeadm API can't be re-used (e.g. CAPI is re-implementing some of this functions)

This issue is about collecting ideas about which shape the library should take, and define a viable path to get the library in place.

@neolit123
Copy link
Member

this overlaps with:
#1205

please combine the two tickets.

@fabriziopandini
Copy link
Member Author

As discussed in 09-30-2020 office hours, I'm going to work with @randomvariable to document possible use cases for the adoption of kubeam library in Cluster API.
If you have in mind other possible use cases, feel free to comment on the issue

@fabriziopandini
Copy link
Member Author

Use cases from Cluster API

  • As the Kubeadm bootstrap controller, I would like to use the kubeadm library for generating a kubeadm configuration file - using the required config version -, to be used in the cloud-init script
  • As the Kubeadm bootstrap controller, I would like to use the kubeadm library for generating cluster certificates.
  • As the Kubeadm bootstrap controller, I would like to use the kubeadm library for generating a short-lived join token for each machine and keep refreshing the token until the new node completes the join process.
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for generating the kubeconfig file for the cluster administrator
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for renewal of the certificate embedded in the kubeconfig file for the cluster administrator
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for upgrading the kubeadm-config map to the required config version
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for changing values in the kubeadm-config map (e.g Kubernetes version, Etcd version, CoreDNS version, image repository)
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for creating the kubelet-X config map for a specific release & related RBAC rules (e.g kubelet-v1.18)
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for applying RBAC changes introduced by a specific release (e.g RBAC roles added in v1.18)
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for upgrading the kube-proxy addon (changing the version in the DaemonSet)
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for upgrading the CoreDNS addon (changing the version in the CoreDNS deployment, migrate the coreDNS file)
  • As the Kubeadm control-plane controller, I would like to use the kubeadm library for keeping the list of ClusterStatus.apiEndpoints inside the kubeadm-config in sync with the actual list of nodes

Nb. I'm not adding use cases from ExperimentalRetryJoin, because IMO this should be fixed in kubeadm

@neolit123
Copy link
Member

neolit123 commented Oct 8, 2020

@fabriziopandini and me had a zoom call where we discussed the above list. most items seem quite viable to be exposed as part of a library. next steps for us are to be establish priorities, figure out the library structure and see who can help.

@fabriziopandini
Copy link
Member Author

fabriziopandini commented Oct 13, 2020

moving the discussion in a google doc with additional considerations about how to execute the library implementation work
https://docs.google.com/document/d/1xe-8tSrC2vukOH8q-RSO19kjbtMCgIkugJgPt0Wi6vw/edit?usp=sharing

@neolit123 neolit123 added priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. kind/feature Categorizes issue or PR as related to a new feature. kind/design Categorizes issue or PR as related to design. labels Oct 19, 2020
@neolit123 neolit123 added this to the v1.20 milestone Oct 19, 2020
@neolit123 neolit123 modified the milestones: v1.20, v1.21 Dec 2, 2020
@neolit123 neolit123 modified the milestones: v1.21, Next Feb 3, 2021
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label May 4, 2021
@fabriziopandini
Copy link
Member Author

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label May 5, 2021
@k8s-triage-robot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 3, 2021
@neolit123
Copy link
Member

neolit123 commented Aug 3, 2021 via email

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 3, 2021
@neolit123 neolit123 added the lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. label Sep 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/design Categorizes issue or PR as related to design. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Projects
None yet
Development

No branches or pull requests

5 participants