With infrastructure provisioned, you now need to configure access to the EKS cluster. This step covers:
After this step, you will have working kubectl access and can verify all infrastructure components are healthy.
EKS uses AWS IAM for authentication. When you run kubectl, it:
This is why you need:
Terraform automatically grants you access because it creates the cluster using your credentials. The cluster creator is automatically an admin. Other team members need to be added separately (covered below).
Update your kubeconfig file with the EKS cluster credentials:
This command:
~/.kube/config fileExpected output:
“Could not connect to the endpoint URL” error?
This usually means:
--region matches where you deployedVerify your region matches your Terraform configuration.
Test that you can communicate with the cluster:
Expected output:
You should see 2-4 nodes (depending on your confident_node_group_desired_size setting) in Ready status.
Timeout or connection refused?
This typically means the EKS API is not accessible from your network:
If confident_public_eks = false (default): The EKS API is only accessible from within the VPC. You need VPN access or VPC peering to your corporate network. See “Private cluster access” below.
If confident_public_eks = true: The API should be publicly accessible. Check your security group rules and network connectivity.
Verify core Kubernetes components are running:
You should see pods for:
All pods should be Running with all containers ready (e.g., 1/1, 2/2).
Terraform deployed several Kubernetes resources. Let’s verify they’re working correctly.
Check that all Helm charts installed successfully:
Helm release shows “failed” or “pending-install”?
This sometimes happens when EKS wasn’t fully ready. Usually fixable by re-running:
Terraform will retry the failed Helm installations.
Verify the namespace exists:
Check that the required service accounts are created:
Expected service accounts:
Why service accounts? Service accounts enable EKS Pod Identity, which
gives pods fine-grained AWS permissions. Instead of giving the whole cluster
access to S3, only pods using confident-s3-sa can access the buckets. This
follows the principle of least privilege.
External Secrets Operator syncs credentials from AWS Secrets Manager into Kubernetes secrets. Verify it’s working:
Expected:
Check the ExternalSecret:
Expected status: SecretSynced
ExternalSecret shows “SecretSyncedError”?
This means it couldn’t read from Secrets Manager. Common causes:
external-secrets-sa role may not have correct permissionsCheck the error details:
By default (confident_public_eks = false), the EKS API server is only accessible from within the VPC. This is a security best practice—it prevents unauthorized access from the internet.
To access a private cluster, you need network connectivity to the VPC.
If your organization has VPN connectivity to AWS (via Direct Connect, Site-to-Site VPN, or Transit Gateway):
This is the recommended approach for production because it uses your existing network security infrastructure.
VPN routing must include the EKS VPC. If you configured a custom CIDR
(e.g., 10.0.0.0/16) in Prerequisites, ensure your VPN routes include it.
Work with your network team to add the route if needed.
If you don’t have existing VPC connectivity, AWS Client VPN provides on-demand access:
This requires additional setup beyond this guide. See AWS Client VPN documentation.
If you’re just testing, you can enable public API access by setting confident_public_eks = true in your tfvars and re-running Terraform. This makes the EKS API accessible from the internet.
Public EKS API is a security risk. While authenticated by IAM, a publicly accessible API endpoint increases your attack surface. Only use this for temporary testing, never for production.
The person who ran Terraform is automatically an EKS admin. To grant access to other team members:
If the team member has an IAM role, add it to your tfvars:
Then re-run terraform apply. This grants cluster admin access to anyone who can assume that role.
For individual users:
Access entries require the IAM identity to exist. If you get “PrincipalNotFound”, verify the user/role ARN is correct and exists in your account.
ArgoCD is deployed for GitOps-based deployments. You can access it once your network has connectivity to the cluster:
ArgoCD runs inside the cluster, so it’s only accessible via the internal network. You’ll need VPN connectivity to access the dashboard.
Your IAM identity isn’t authorized to access the cluster:
aws sts get-caller-identityYou have no network path to the EKS API:
Your kubectl or AWS CLI version is outdated. Update to:
Nodes take a few minutes to fully initialize. Wait 2-3 minutes after the cluster is created. If they stay NotReady:
Look at the “Conditions” section for clues. Common causes:
With cluster access configured, proceed to Kubernetes Deployment to deploy the Confident AI application services.