Helm is Kubernetes' package manager. Use helm charts to quickly install software into your cluster, manage upgrades, and so forth. Helm is powerful, but sometimes users of helm charts need a bit of extra functionality that wasn't included in the original chart they obtain from a third party. Users can fork and modify the original helm chart, but this requires maintenance to keep the chart up to date with its upstream source chart. Alternatively, users can directly define using Kubernetes yaml the extra item they need, but helm itself has no way to apply single Kubernetes resources alone. If your stack relies heavily on helm, or you use tools such as Helmfile, this can require you to implement cumbersome or hacky work arounds just to add a tiny bit of functionality to an otherwise unmodified third party chart.
K8s-as-helm was developed to extend Kubernetes primitives up to the helm layer. Each chart in this repository is designed to deploy a single Kubernetes API object (or, in some cases, can be configured to deploy small groups of closely related objects). Perhaps you need just one extra service to point at your Jenkins deployment, so that it can be reached by an un-configurable piece of software? Deploy a service chart alongside the unmodified Jenkins chart. No need to fork the chart just to add a single service spec yaml file. Maybe the implementer of a chart you are using didn't implement a pod disruption budget for its pods? Release a pdb chart to add your own.
These charts are designed to set most parts of the API objects to common defaults, and require only the bare minimum of configuration from the user to deploy. That being said, they are also designed to be flexible for more uncommon use cases. If one of these charts doesn't expose some functionality you need from the Kubernetes resource that it deploys, check out the Contributing section to see how to get that needed functionality exposed for your configuration.
All of the charts in the repo are located in the charts
directory. The CICD for this repo is implemented using github actions, the code for which can be found in the .github
directory
Eventually, this project will maintain a helm chart for every Kubernetes API object. The supported objects are tracked in the table below.
API Object | Status | Link |
---|---|---|
Pod |
✔️ | pod |
ConfigMap |
✔️ | configmap |
Ingress |
✔️ | ingress |
PodDisruptionBudget |
✔️ | pdb |
Secret |
✔️ | secret |
Service |
✔️ | svc |
ReplicaSet |
TODO | |
ReplicationController |
TODO | |
StatefulSet |
TODO | |
Job |
✔️ | job |
CronJob |
✔️ | cronjob |
Deployment |
TODO | |
DaemonSet |
TODO | |
StorageClass |
✔️ | storageclass |
Volume |
TODO | |
HoirizontalPodAutoscaler |
TODO | |
PodSecurityPolicy |
TODO | |
ClusterRole |
✔️ | clusterrole |
ClusterRoleBinding |
✔️ | clusterrolebinding |
Namespace |
✔️ | namespace |
PeristentVolume |
TODO | |
PersistentVolumeClaim |
✔️ | pvc |
Role |
✔️ | role |
RoleBinding |
✔️ | rolebinding |
ServiceAccount |
✔️ | serviceaccount |
NetworkPolicy |
✔️ | networkpolicy |
Contributions are welcome! If you find an issue with a chart in here, or would like an additional feature to be added, please open an issue. PRs addressing issues are also welcomed. Check out the Road Map section
Thanks to all the individuals who have given their time and effort towards creating and maintaining this repo:
Thomas Molines 💻 |
Gregoire Menuel 💻 |
Ed Mitchell 💻 |