How to use helm with token based authentication system on EKS
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
Helm does not authenticate to Amazon EKS on its own. It uses Kubernetes client configuration in the same way kubectl does, which means the real question is how your kubeconfig obtains a valid EKS token. In practice, the cleanest approach is to let AWS generate short-lived tokens and have Helm reuse that configuration rather than trying to hard-code long-lived credentials.
Understand How Helm Authenticates to EKS
Helm talks to the Kubernetes API server through client-go behavior and kubeconfig. On EKS, authentication typically happens through a short-lived token returned by AWS.
That means:
- Helm does not usually need a separate auth mechanism
- if
kubectlworks with the same kubeconfig, Helm should work too - token refresh is normally handled by the kubeconfig
execintegration
For most users, the correct workflow starts with aws eks update-kubeconfig.
Use the Recommended Kubeconfig Flow
Generate or update kubeconfig for the cluster:
That command writes a kubeconfig entry with an exec block that fetches a fresh token when needed. Once that is in place, Helm commands work normally:
This is the preferred path because token generation stays delegated to AWS tooling.
Verify the Token-Based Setup Explicitly
Before blaming Helm, confirm that Kubernetes access works through the same kubeconfig.
If those commands fail, Helm will fail too. Fix cluster access first.
You can also inspect the current cluster user entry:
Look for an exec-based user configuration rather than a hard-coded static token.
Fetch a Token Manually When Needed
In CI or debugging contexts, you may want to request a token directly.
That token is short-lived. You can pass it to Helm directly if necessary:
This is useful in tightly controlled automation, but kubeconfig with exec is still easier to maintain.
Handle Certificate Authority Data Correctly
If you bypass kubeconfig entirely, you also need the cluster certificate authority.
Without the CA configuration, direct API access may fail even if the token is valid. That is another reason kubeconfig is the safer default.
Use IAM Roles Cleanly in Automation
In CI or ephemeral build agents, prefer role-based AWS authentication rather than embedding user keys. Once the runner has AWS credentials through an IAM role, aws eks update-kubeconfig or aws eks get-token can work the same way as on a developer machine.
A typical automation flow is:
- assume an AWS role
- update kubeconfig for the target cluster
- run Helm commands
- let token expiration remain AWS-managed
This keeps authentication short-lived and auditable.
Distinguish Cluster Auth from Kubernetes RBAC
A valid EKS token only proves AWS identity. Authorization inside the cluster still depends on Kubernetes RBAC and EKS access configuration.
So, if Helm authenticates successfully but actions fail, check:
- whether the IAM identity is mapped correctly for cluster access
- whether the namespace permissions allow the requested action
- whether Helm is trying to create cluster-scoped resources without sufficient rights
Authentication and authorization are separate problems.
Troubleshooting Sequence
Use this order:
- confirm AWS identity with
aws sts get-caller-identity - confirm
kubectl get nsworks - confirm the expected kube-context is active
- run a simple Helm read command such as
helm list - only then debug chart-specific issues
This avoids wasting time on Helm when the root problem is actually AWS or kubeconfig setup.
Common Pitfalls
One common mistake is trying to give Helm a static token and expecting it to stay valid indefinitely. EKS tokens are short-lived.
Another issue is assuming Helm needs a special authentication system separate from kubectl. In most cases, Helm should simply reuse kubeconfig.
A third mistake is debugging authentication when the real failure is Kubernetes RBAC or wrong cluster context.
Summary
- Helm on EKS normally authenticates through the same kubeconfig flow used by
kubectl. - '
aws eks update-kubeconfigis the recommended way to make token-based access work.' - You can fetch tokens manually with
aws eks get-tokenfor CI or debugging. - Keep cluster authentication and Kubernetes authorization as separate checks.
- If
kubectlworks with the target context, Helm should usually work too.
Related reading
- How to use imagePullSecrets in Helm 3
- How to use kubectl command instead of sudo kubectl
- How to use kubectl cp to copy files automatically from a local system to kubernetes Pods with list filter
- How to use nginx ingress TCP service on different namespace
- how to use kafka acls?
- How to use Kafka with TLS peer verification turned off
- How to use NodePort with kind?
- How to use PodTemplate

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.