This repository has been archived by the owner on Jun 15, 2021. It is now read-only.
forked from kubernetes-retired/kube-aws
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Plugin System (kubernetes-retired#791)
This is an initial implementation of the plugin system kubernetes-retired#509 as proposed in kubernetes-retired#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
- Loading branch information
Showing
38 changed files
with
2,059 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.