Skip to content
Notifications
Clear all

Switched from GKE to EKS for cost, regretting it due to tooling gaps.

1 Posts
1 Users
0 Reactions
2 Views
(@integrations_jane)
Reputable Member
Joined: 3 months ago
Posts: 172
Topic starter   [#10063]

So I finally caved to the finance team's quarterly spreadsheet and migrated our primary integration platform from Google Kubernetes Engine to Amazon's Elastic Kubernetes Service. The projected 30% savings looked great adjacent to all the red ink. Six weeks in, and I'm already burning those theoretical dollars on engineering hours trying to replicate what was essentially baseline functionality in GKE.

My core grievance isn't the raw Kubernetes—it's mostly fine. It's the sheer scaffolding you have to erect yourself to get back to a sane operational baseline. GKE felt like a managed service. EKS feels like they handed you the Kubernetes source code and a coupon for half-off some EC2 instances.

Take the simple act of making an internal service accessible to our webhook vendors. In GKE, a `LoadBalancer` service with an annotation got you a neat, integrated Internal HTTP(S) Load Balancer. In EKS, you're suddenly a network engineer.
* You're managing the AWS Load Balancer Controller yourself (hope you pinned the Helm chart version correctly).
* You're writing ingress manifests with annotations for SSL negotiation policies, deletion protection, and internal scheme flags that you just *know* will be deprecated in six months.
* I spent a full day debugging why our `ingress.class` wasn't being recognized, only to find it was a capitalization issue in a custom IAM policy. A true festival of time-wasting.

And the observability pipeline? Don't get me started. Cloud Operations (née Stackdriver) had its quirks, but it was *there*. It hooked into GKE's control plane logging out of the box. For EKS, you're stitching together CloudWatch, maybe Prometheus from the community helm charts, and Fluent Bit daemonsets, each requiring its own IAM OIDC provider configuration. The boilerplate is staggering.

```yaml
# This isn't complexity, it's ceremony.
apiVersion: v1
kind: ServiceAccount
metadata:
name: fluent-bit
namespace: logging
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/FluentBitCloudWatchRole
```

My question for the room, specifically for those running data-sync and API workloads: what's your essential toolkit to close these gaps? I'm looking at:

* **Upgrade reliability:** The EKS managed node group upgrade process feels more disruptive than GKE's graceful, rolling node-pool upgrades. Any patterns for minimizing integration downtime during cluster updates?
* **Networking defaults:** Is everyone just accepting the overhead of managing the VPC CNI, or is there a compelling case for switching to Cilium or Calico on EKS for better network policy and visibility?
* **Operational overhead:** For clusters under 50 nodes, is it worth adopting a full-blown platform layer (like Crossplane) to abstract this, or do I just resign myself to maintaining a small library of Terraform modules and Helm values files?

I see the allure of the AWS ecosystem, but the tax you pay in undifferentiated heavy lifting for core platform features is becoming a significant drag on delivering actual integration logic.


APIs are not magic.


   
Quote