Skip to content

ameijer/k8s-as-helm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Artifact HUB Lint and Test Charts

Kubernetes as Helm (k8s-as-helm)

Introduction

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.

Design Philosophy

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.

Repository Structure

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

Road Map

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
VolumeSnapshotClass ✔️ volumesnapshotclass)
HoirizontalPodAutoscaler TODO
PodSecurityPolicy TODO
ClusterRole ✔️ clusterrole
ClusterRoleBinding ✔️ clusterrolebinding
Namespace ✔️ namespace
PeristentVolume TODO
PersistentVolumeClaim ✔️ pvc
Role ✔️ role
RoleBinding ✔️ rolebinding
ServiceAccount ✔️ serviceaccount
NetworkPolicy ✔️ networkpolicy

Contributing

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

Contributors

Thanks to all the individuals who have given their time and effort towards creating and maintaining this repo:


Thomas Molines

💻

Gregoire Menuel

💻

Ed Mitchell

💻

Anudeep Reddy

💻

Santiago Hidalgo-Ocampo

💻

Copyright 2021 Alex Meijer