kube-proxy is self-managed and never upgraded on EKS workloads
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 7
- Forks
- 2
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 3
Description
Summary
On EKS workload clusters, kube-proxy is a self-managed add-on that PTD never upgrades. It stays pinned at the cluster's creation version while the control plane and nodes advance. This creates a version mismatch — kube-proxy runs at a different (older) Kubernetes version than the control plane and kubelets — which EKS flags as version skew in upgrade insights and which eventually blocks upgrades. We should adopt kube-proxy as an EKS managed add-on, pinned via config.
Observed
- Control plane / kubelets: 1.35 —
kube-proxy: v1.33.0-eksbuild.2 (two minors behind, frozen at cluster creation, Aug 2025) aws eks list-addonsdoes not includekube-proxy, confirming it's self-managed- EKS upgrade insights flagged
kube-proxy version skew
How it happens
- At
CreateCluster, EKS bootstrapskube-proxyas a self-managed workload inkube-system. Self-managed add-ons are installed once and never updated by EKS. - Our builder sets
DefaultAddonsToRemoves = ["vpc-cni"](lib/aws/eks_cluster.go:304) but leaveskube-proxyas EKS's self-managed default. - PTD never adopts or bumps it (absent from the codebase and git history).
- Across control-plane upgrades, everything advances except kube-proxy — owned by neither EKS nor PTD.
AWS docs
- Amazon EKS add-ons — self-managed add-ons require manual updates; AWS recommends the managed type.
- Update the kube-proxy self-managed add-on
- Cluster insights — kube-proxy version skew check.
Recommendation
Adopt kube-proxy as an EKS managed add-on, pinned via config — the pattern already used for aws-ebs-csi-driver (EKSEbsCsiAddonVersion, lib/types/workload.go:99). An in-place kubectl bump is not preferred: it fixes the symptom but leaves the component unowned, so it drifts again on the next upgrade.
Migration plan
- Add
kube-proxymanaged add-on to the EKS builder (lib/aws/eks_cluster.go). - Add a
kube_proxy_addon_versionfield toAWSWorkloadClusterSpecwith a version-appropriate default (follow theEbsCsiAddonVersionpattern). - Adopt with
OVERWRITEconflict resolution (the self-managed workload already exists); adopt at a version within skew of the control plane. - Test on a staging cluster — adoption reconciles the running DaemonSet; confirm no Service-routing disruption.
Acceptance criteria
-
kube-proxyis an EKS managed add-on on PTD-provisioned EKS clusters - Version is declarable in
ptd.yamlwith a sensible default - Self-managed → managed adoption handled non-disruptively (
OVERWRITE) - kube-proxy skew insight clears on a migrated cluster
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with lib/aws/eks_cluster.go:304 and the EbsCsiAddonVersion pattern in lib/types/workload.go:99. Add the kube-proxy managed add-on and its ptd.yaml-configurable version, using OVERWRITE for adoption. Validate on a staging EKS cluster that the DaemonSet is adopted without service-routing disruption and that the version-skew insight clears.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, go, kubernetes
- Domain
- cloud, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 58/100