-
Notifications
You must be signed in to change notification settings - Fork 47
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
addon-installer POC #25
addon-installer POC #25
Conversation
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: stealthybox The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This code has been adapted from https://github.com/luxas/sample-config and re-licensed to APL2 with kind permission from @luxas. |
/assign |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@stealthybox
Thanks for this POC!
might be I'm missing something, but I think to a possible integration with kubeadm I can't figure out all the details e.g.
- Are we expecting the user download addons/patch in advance?
- How do we think to address the air-gapped scenario?
- How kubeadm can pass configurations to the addon-installer (e.g. the expected kube-proxy version, the kube-proxy component config)
- How upgrades are expected to work?
Additional questions:
|
:) (***) == needs implementation
Not normally. This is handled internally in kubectl by kustomize.
kustomize supports git repos and local directories for transport.
kubeadm can have a default AddonInstallerConfigration.
This should probably be added to the installer Runtime struct or AddonInstallerConfiguration API (***).
The human-readable output is helpful in that it tells you what would happen when applied to any existing objects in the cluster currently. |
@stealthybox what I'm trying to understand is: what is the value-added the addon installers/the addon project WRT to kustomize? how can the addon installers/the addon project simplify the addon lifecycle when used as a library by kubeadm? |
|
/assign @timothysc |
@stealthybox FYI there are new requirements around any APIs being added under the k8s.io domain, see kubernetes/enhancements#1111 I think there will be less friction about iterating and experimenting with an add-ons API if it is developed under the x-k8s.io domain |
Thanks for the heads-up @jwforres -- it looks like that's the trend with certain clusterapi providers as well. I don't think we intend for this API to be served be the APIServer with a CRD at the moment. |
As discussed in the kubeadm planning session for 1.17, as soon as we get a KEP defining all the details/impacts on the users, we are going to start executing for integrating this with kubeadm. |
The KEP is now up at kubernetes/enhancements#1308 |
Can we go ahead and merge this PR after #28 is fixed and then iterate as necessary? |
I've implemented the library-internal KUBECONFIG feature through a filePath. The config API is now scoped under The library now has a map per-addon requiring a Lastly, I've added a delete mechanism; this is generally useful, and will be necessary for pruning addons based off of an "oldConfig". I'd like to get this merged and work on these in followups:
|
Great work, Leigh! Big ➕ 1️⃣ on landing this and filing followup issues to resolved later. |
We discussed this in the Cluster Addons meeting yesterday and noted a couple of things which can be fixed in the next revision. I'll make sure to file issues for this. (Can we add a /lgtm |
Nevermind... we already have 105 labels to choose from. I think I'm good. |
Thanks @stealthybox for your work on this! This is a great foundation for the Cluster Addons project. |
#14
This patch proposes an API type and small library to install addons via exec'ing kubectl.
The API type
addons.config.k8s.io/AddonInstallerConfiguration
is used to list addons askustomize packages.
The intent is that installers like kops, kubeadm, eksctl, and etc. can make use of this library and API type.
Included is a commandline tool that reads this type from a configration file to apply these addons
to the currently configured cluster.
Care has been taken to support flag overrides of config values as well as signal passing.
Open work:
usage
development