You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 30, 2020. It is now read-only.
This is an initial implementation of the plugin system #509 as proposed in #751. Not all but most of knobs mentioned in the proposal except pre/post-cluster-creation validations are implemented.
Basically, it allows the user to define a set of customizations to various aspects of resources created and managed by kube-aws as a "kube-aws plugin" and reuse it.
The set of customizations is defined in a separate file other than a `cluster.yaml` for reusability.
More concretely, provide `<your project root>/plugins/<your-plugin-name>/plugin.yaml` like seen in test/integration/plugin_test.go to extend a kube-aws cluster from many aspects including:
- additional iam policy statements per node role(worker/controller/etcd)
- additional cfn stack template resources per stack(root/control-plane/node-pool)
- additional systemd units/custom files per node role(worker/controller/etcd)
- additional kubelet feature gates for worker kubelets
- additional node labels for worker/controller kubelets
and so on.
The new plugin system is not used to implement core features of kube-aws yet. Therefore, I believe we don't need to worry much about breaking things via this change.
At least one core feature implemented as a plugin is planned in the next version of kube-aws v0.9.9, as noted in our roadmap.
Changes:
* Plugin System: Add support for node labels
* Plugin System: Add support for feature gates
* plugin-system: Add support for k8s manifests and helm releases
* plugin-system: Add support for kube-apiserver server options
* plugin-system: Add support for custom files
* plugin-system: Add support for custom IAM policy statements
* Rename plugin/api to plugin/pluginapi to better differentiate what the api is for
* Move the test helper for plugin to a seperate go file
* Extract a type representing the file uploaded to a kube-aws node into a separate go file
* plugin-system: Seperate logics from api
* plugin-system: Separate cluster extensions by plugins from cluster and plugins
* plugin-system: More separation of api and logic
* plugin-system: Move apply-kube-aws-plugins script for easier merging with master
* plugin-system: Rename pluginapi to pluginmodel
* plugin-system: Remove unused types and files
* plugin-system: Comment about `values` in plugin.yaml
* Reliability improvement to cloud-config-controller
* Fix occasional kube-node-label, cfn-signal errors
* Fix install-kube-system and apply-kube-aws-plugins services to better scheduled in order without spamming journal
0 commit comments