Heqet (Egyptian ḥqt, also ḥqtyt "Heqtit") is an Egyptian goddess of fertility.
Heqet is my attempt to make Kubernetes GitOps Deployments as easy as possible. It's goal is to reduce the need of redundant configuration in a GitOps environment, by generating the required Kubernetes resource definitions for you. Heqet heavily relies on a Helm-Chart which will generate all [ArgoCD]*(https://argo-cd.readthedocs.io/en/stable/)-Applications, -Projects, Namespaces & more using Argo-CDs App-of-Apps-Pattern.
Kubernetes allows declarative infrastructure which can be stored in git easily. Argo-CD is used to deploy those configurations. With Argo-CD it's simple to deploy Helm-Charts. But you still need to write a lot of redundant yaml-files.
Heqet reduces the configuration required to deploy Helm-chart-based applications to the bare minimum:
- What's the name of your app?
- Which Chart to deploy?
- Which values to apply?
- Deploy it!
Making GitOps based deployments simple while keeping kubernetes power & customizability.
- Easy Setup [Just requires Kubernetes + Argo-CD]
- Simple / DRY application definition & configuration
- Follows the GitOps principles
- Deploy a whole application environment or cluster from a singe git-repo
- Addons for simple generation of
VaultSecret
andNetworkPolicy
resources - Include reuseable resources like value snippets & NetworkPolicies into your app
- Inheritance of configuration options [defaults -> project -> app]
Core component is Argo-CD
which will deploy Heqet & also your apps! All you need is a git-repo & k8s cluster.
The heqet Configuration-Management-Plugin [CMP] will generate ArgoCD-Applications & -Projects, Namespaces and if required VaultSecret
s, NetworkPolicies
, Argo-CD Repositories and more.
Heqet is highly opinionated about it's structure. It helps you keeping multiple projects organized. The user configuration is organized like this:
├── bootstrap.yaml # Used for initial bootstrap of Heqet
├── Heqetfile # Required for Heqet to work
├── projects/
│ └── argocd/ # Every project has it's own folder
│ ├── project.yml # Main project configuration
│ ├── manifests/ # Project related static yaml manifests
│ └── values/
│ └── argocd.yaml # Every app can get it's own values file
├── README.md
├── renovate.json # Preconfigured renovatebot for heqet config
├── resources/
│ ├── manifests/ # Your static manifests go here
│ │ └── foobar.yaml
│ ├── networkpolicy.yml # NetworkPolicies & create groups of policies
│ ├── repos.yml # Helm Chart Repositories aliases
│ └── snippets/ # Value Snippets can be included into apps
│ └── tmpdirs.yaml # \ They will be merged with all other app values
└── values.yaml # Defaults & main config for heqet
For more see: Filestructure
Installing heqet is quite simple:
- Install Argo-CD [Version >= 2.2.0] on your Kubernetes cluster
- Configure the Heqet Argo-CD Configuration-Management-Plugin Getting Started
- Create your heqet userdata git repository - Example Configuration
- Deploy your first app to bootstrap Heqet:
kubectl apply -f bootstrap.yaml
- Deploy apps to your userdata repo & Enjoy Argo-CD!
- Name - | - Description - |
---|---|
Heqet-Apps | Official Example Repo |
Hive-Apps | My Homelab configuration |
Check out the full documentation: here
Any problems? Open an issue. Contributions welcome