Kreato's Kubernetes setup
(This is mostly taken from https://github.com/kreatoo/infra)
-
tulip
- Cloud: OCI (Oracle Cloud Infrastructure)
- Region: Frankfurt
- OS: AlmaLinux
- Kubernetes distro: Plain K8s
- Role: Control-plane node
- Machine: VM.Standard.A1.Flex (Ampere Altra) with 4 cores, 12GB RAM, 200GB storage
-
plato
- Cloud: Hetzner Cloud
- Region: Helsinki
- OS: Ubuntu 24.04
- Kubernetes distro: Plain K8s
- Role: Agent node
- Machine: CAX11 (Ampere Altra) with 2 cores, 4GB RAM, 40GB storage
graph TD;
service-->tulip
service-->plato
tulip-->metallb
plato-->metallb
- GitHub Actions - Deployment pipeline
- ArgoCD - For GitOps, manages all the deployments (except itself and the CNI)
- MetalLB - Load balancer, network policies
- cert-manager - For managing certificates
- Robusta - For alarms and monitoring
- Traefik - Ingress controller
- Nginx-kpkg - for hosting a kpkg repository
- Nextcloud - For file sharing
- Forgejo - For Git repositories
The setup assumes you already have Kubernetes installed with a CNI (Tested with Calico, should work in any), Helm and MetalLB.
This setup uses Kustomize to manage the manifests. To install the setup, clone the repo and run the following commands:
kubectl kustomize --enable-helm | kubectl apply -f -
Please keep in mind that Robusta is not included in the setup by default as you need to generate values for it. You can generate a config here and then put it in the robusta/ folder. After that, you can run the command below (or uncomment robusta/ in kustomization.yaml) to install Robusta:
kubectl apply -k robusta/