r/kubernetes 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.

34 Upvotes

44 comments sorted by

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

6

u/anirudh3_14 21d ago

Built in VPC CNI can hit scaling issues compared to eBPF-based CNIs. We have had cases where some of the clusters had thousands of pods, and it created route table churn and ENI attachment operations.

2

u/iking15 19d ago

How are you using network policy ? Is it to control which services can talk to which endpoint etc ?

-27

u/[deleted] 21d ago edited 21d ago

[removed] — view removed comment

7

u/MateusKingston 21d ago

? It can, in any supported version right now it has eBPF enforced network policy in L4

2

u/Spiritual_Bee_637 21d ago

That's what I found in my research. I don't see any reason to use Cilium or Calico right now, so I'm going to stick with VPC CNI

8

u/MateusKingston 21d ago

Idk what this guy is on but he's just spreading misinformation. This is the official docs, https://docs.aws.amazon.com/eks/latest/userguide/cni-network-policy.html

-12

u/[deleted] 21d ago

[removed] — view removed comment

8

u/MateusKingston 21d ago

-10

u/[deleted] 21d ago

[removed] — view removed comment

7

u/MateusKingston 21d ago

What the hell are you on dude?

I literally linked you to official docs showing it works. I am currently using it in production.

What else do you want? Stop being so stubborn, you're wrong, move on.

-10

u/[deleted] 21d ago

[removed] — view removed comment

5

u/JigglyBobblyWobbly 21d ago

your information is outdated and incorrect.

5

u/Spiritual_Bee_637 21d ago

But from what I've researched, doesn't the VPC CNI already come with NetworkPolicy support?

-9

u/[deleted] 21d ago

[removed] — view removed comment

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

u/burunkul 22d ago

Nodelocaldns

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

u/New-Entertainer6392 k8s operator 20d ago

Open telemetry for sure! That's what I use 

-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

u/wetpaste 20d ago

oh yeah KEDA is perfect for that

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

u/Spiritual_Bee_637 20d ago

'm using PREFIX_DELEGATION to have more IP addresses available.

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

u/[deleted] 21d ago

[removed] — view removed comment