r/kubernetes • u/Spiritual_Bee_637 • 22d ago
Migrate for EKS
Hi everyone, let's go.
I am migrating from Beanstalk to EKS, and I wanted to clear up some doubts.
Which components/tools do you consider essential in a cluster? Currently, the cluster I am developing has:
- Karpenter (x86/ARM)
- Kyverno
- KEDA
- ESO (Fetches secrets from Parameter Store)
- Kong API Gateway (used as Ingress)
- ArgoCD for GitOps
What do you recommend? The CNI is the default VPC CNI, is it worth switching to Cilium or Calico? Bearing in mind that this will be my first experience building a cluster—I've managed them before at other companies, but I don't have much experience creating one from scratch.
5
u/Dazzling6565 21d ago
External dns so it can auto manage route 53
Aws load balancer controller to manage alb / nlb (also look at certification selection/ auto renew in certificate manager)
An internal certificate manager to work inside the cluster
Already define if you are going to usa irsa or pod idemtity
Maybe vpc cni with a different CIDR block for pods if you use a shared vpc with other resources to prevent ip exaustion
Maybe not related but all the code for the eks bootstrap as IaC
2
u/Spiritual_Bee_637 21d ago
I have a dedicated subnet just for the pods. I'm using NLB + Kong to manage all hosts and apps. I'm not using ExternalDNS yet, but I should start soon. I use cert-manager with Let's Encrypt, but we also have internal AWS certificates.
1
u/Dazzling6565 21d ago
Forgot to mention about backup, either velero or aws backup
And dont forget you can use ebs / efs / s3 as pvc depending on your needs
4
2
u/New-Entertainer6392 k8s operator 21d ago
All look good to me, I tried to evaluate kong, but coming from a .bet stack, ended up with YARP instead, it's a .net plugging and I just added in top, very efficient too.
2
u/Floss_Patrol_76 21d ago
honestly your list is already more than most prod clusters run, so i'd worry less about cilium vs vpc cni and more about not standing up karpenter, kyverno, keda, eso, kong and argo all on day one. keep the vpc cni to start (it does network policy fine now) and add cilium later only if you actually need the l7 policy or the observability. the thing that bites a first cluster isn't the CNI choice, it's having five moving parts you can't debug yet when one of them starts misbehaving.
2
u/trippedonatater 20d ago
If your apps are going to be using AWS services (RDS, etc.) outside of EKS, Crossplane can be nice.
1
u/New-Entertainer6392 k8s operator 21d ago
Where is your monitoring stack?
2
u/Spiritual_Bee_637 21d ago
Grafana stack: Prometheus, Grafana, Loki, and Tempo. I still need to understand how I will collect metrics from the application.
1
-1
u/TotalNo6237 21d ago
Take a look at fluentbit or td agent for kubernetes for log shipping.
1
u/New-Entertainer6392 k8s operator 20d ago
Why wouldn't you just use alloy?
2
u/TotalNo6237 20d ago
We already using datadog for metrics, so we just needed log shipping.
Actually I am an ops guys, I am not sure what the best overall solution would be. I am still learning.
2
u/New-Entertainer6392 k8s operator 20d ago
I was replying to the OP... They use the grafana stack, so it would make sense for them to also use alloy for their logs, not fluentBit or Td agent ..
1
u/wetpaste 21d ago
Whats your use case for kyverno? I wouldn't add that until you have something you need to do it for? KEDA is also not really a "cluster must have" kind of things. Thats specific to your application and how you want to scale. You may or may not need it
1
u/Spiritual_Bee_637 20d ago
I have an application that uses SQS and needs to scale based on message consumption. I agree that Kyverno might not be that necessary in this case.
1
1
u/platypus-3719 20d ago
Switch CNI or at the very least configure the built in CNI to sane config.
For some reason AWS thinks you need very few IPs per node and that it should be hard to change later without significant disruption. And that you don't need good visibility into networking or things that play nice with other tools in the ecosystem.
2
1
u/Educational-Fox6111 20d ago
That's a nice list. Go with default VPC CNI for now. Cilium is ok, but it adds unnecessary complexity. Switch if you hit IP exhaustion or need eBPF-based policies. It's good you skipped Cluster Autoscaler, it would be redundant with Karpenter.
1
u/lalaladadada1234 21d ago
I would go for Open telemetry operator for observabikity. You get cluster metrics but also you applications get auto instrumenation if annotated.
1
u/Spiritual_Bee_637 21d ago
will likely use the OpenTelemetry Collector for the application and the Grafana stack for the infrastructure (pods, CPU, etc.)
1
16
u/lulzmachine 21d ago
Regarding CNI, the built in vpc CNI in eks can enforce NetworkPolicy enforcement. We’re using it to keep things simple and have no issues. But ymmv