Welcome to my personal Kubernetes cluster repository! This project uses Pkl for configuration management, enabling modular, type-safe, and maintainable infrastructure code. The cluster runs on Talos Linux nodes (Hetzner) and is deployed via ArgoCD GitOps.
- /personal-cluster: The live cluster config and ArgoCD source.
index.pkl— root app-of-apps that lists every child Application.apps/*.pkl— ArgoCDApplicationdefinitions, each pointing at acomponents/*.pklentrypoint.components/*.pkl— actual workload definitions consuming the shared packages.secrets/— sealed SopsSecrets.
- /packages: Reusable Pkl packages for various workloads and tools.
- /pkl-packages: Source for the Pkl registry hosting the packages. https://pkl-pkgs.lucsoft.de/
- /pkl-argo-plugin: ArgoCD
ConfigManagementPluginthat renders Pkl into manifests. - /talos, /talos-test: Talos node configuration.
- /tools: Deno utilities (e.g.
bootstrap-secret,mc-router-scaler).
The following Pkl packages are available under /packages:
- argo.ArgoCD — Deploying and managing ArgoCD.
- com.SopsSecretsOperator — SOPS-encrypted secrets management.
- dev.Knative — Knative serverless workloads.
- io.CertManager — TLS certificate management with cert-manager.
- io.CloudNativePG — PostgreSQL clusters via CloudNativePG.
- io.Fission — Fission serverless functions.
- io.Traefik — Traefik ingress controller.
- io.k3s.HelmController — Managing Helm charts via the k3s Helm controller.
- itzg.minecraft — Minecraft server workloads.
- lucsoft.k8s.NetworkPolicies — Kubernetes network policies.
- lucsoft.k8s.Resource — Generic Kubernetes resource helpers.
- lucsoft.k8s.Workload — Generic Kubernetes workloads.
- microsoft.AzurePipelines — Azure Pipelines agents.
Up to date list can be found in the repository https://pkl-pkgs.lucsoft.de/.
- Clone this repository.
- Install Pkl.
- Explore the
personal-clusterdirectory for cluster setup. - Use the packages in
/packagesto compose and manage your workloads.
Render any component locally with:
pkl eval personal-cluster/components/<Component>.pklFeel free to explore and adapt the configurations for your own use!