Real world example of Kops deployment with 2 environments: lab and test. Use FluxCD to automatically deploy both infrastructure and applications.
The kubernetes cluster deploys on the three AZ of eu-west Region in a single VPC. All instance groups are Spot Fleets that created nodes inside the private subnet. All the nodes are running AL2 images and run on Graviton2 ARM instances.
A master-plane public NLB allow access to the Kubernetes API. The front public NLB will be created using a Kubernetes Ingress resource.
Cilium is the CNI provider deployed in the cluster.
Kops components used:
Name | Status | Description |
---|---|---|
AWS IAM Authentication | ✅ | |
AWS Cloud Controller Manager | ✅ | |
AWS Load Balancer Controller | ❌ | A NLB will be created when deploying an Ingress |
Cluster autoscaler | ❌ | Karpenter is used as a replacement |
Cert Manager | ❌ | Deployed externally using FluxCD |
Cilium | ✅ | |
CoreDNS | ✅ | |
DNS Controller | ✅ | |
EBS CSI | ✅ | |
External VPC | ✅ | |
FluxCD | ✅ | Custom addon |
Hubble | ✅ | Deploy Server & Relay |
Karpenter | ✅ | 🚧 WIP |
Metric Server | ❌ | Deployed using FluxCD & Prometheus Kube Stack |
Node local DNS | ✅ | |
Node termination handler | ✅ | |
Node Problem Detector | ✅ | |
Snapshot controller | ❌ |
🚧 Terraform to create Kops S3 state bucket
To start the cluster
make create
make update
To delete the cluster
make delete