Before you start
Read Kubernetes Onboarding Prerequisites . Confirm DCF is enabled, Resource Discovery is on, the API server is reachable from the Controller, and SNAT is disabled on worker nodes. The Aviatrix cloud account for the AWS account hosting the cluster must include the EKS discovery permissions .DCF policy requirements for cluster connectivity
When DCF is enabled, you are responsible for configuring DCF policies that allow the EKS cluster to reach the AWS services it needs for normal operation. Without these policies, cluster components may fail to pull container images from Amazon ECR, authenticate to IAM, or reach the EKS control plane. For the list of AWS services an EKS cluster must reach (including the endpoints required for private clusters), see AWS’s documentation on deploying private clusters with limited internet access. Use that list to plan SmartGroups and DCF rules that permit the required egress while keeping the rest of your security posture intact.Choose how the Controller authenticates
Two paths, both supported equally:- Path A — AWS Cloud Account (recommended for managed EKS). The Aviatrix IAM principal you onboarded in CoPilot authenticates to the cluster via an EKS access entry. The Controller refreshes a short-lived STS token per request; no long-lived credential to rotate.
- Path B — Service-account kubeconfig. A Kubernetes ServiceAccount in the cluster issues a bearer token; you assemble a kubeconfig and provide it to the Controller. Use this when you want explicit control over the principal or when the AWS-account path is not acceptable.
Path A — Cloud Account
Step 1: Identify the Controller’s IAM principal
The Controller authenticates to AWS using the IAM identity from the Aviatrix cloud account. The ARN format depends on how you onboarded the account:- IAM role (most common):
arn:aws:iam::<ACCOUNT_ID>:role/aviatrix-role-app - IAM user (access key + secret):
arn:aws:iam::<ACCOUNT_ID>:user/<USERNAME>
Step 2: Install the Aviatrix helm chart in the cluster
The chart creates theavx-controller ClusterRole, a ClusterRoleBinding to the
Kubernetes group avx-controller, and the Aviatrix CRDs.
Step 3: Map the IAM principal to the K8s group
Create an EKS access entry that binds the Controller’s IAM principal to the K8s groupavx-controller. Choose any tool:
- Terraform
- aws CLI
- eksctl
AmazonEKSViewPolicy association is belt-and-suspenders alongside the helm
chart. The chart’s ClusterRole grants every read the policy provides plus the
CRD writes the policy does not.Step 4: Register the cluster
- Terraform
- CoPilot UI
cluster_id must be the full EKS ARN:
arn:aws:eks:<REGION>:<ACCOUNT_ID>:cluster/<CLUSTER_NAME>.Path B — Service-account kubeconfig
The Controller authenticates to the cluster with a bearer token from a Kubernetes ServiceAccount. The full canonical flow lives on Onboard Self-Managed or Custom Clusters . EKS-specific notes follow.Step 1: Create the ServiceAccount and ClusterRoleBinding
Apply the Step 1 manifest and extract the token.Step 2: Get the cluster’s CA cert and API endpoint
Step 3: Assemble a kubeconfig and register the cluster
Follow Step 2: Assemble a kubeconfig and Step 3: Register the cluster on the custom-clusters page. The Terraformcluster_id for an EKS cluster
registered via kubeconfig should still be the EKS ARN:
Verifying onboarding
On the Kubernetes Clusters tab, the cluster transitions throughNo →
Onboarding → Yes. From the controller pod:
RUNNING within roughly 30 seconds.
CRD-based DCF policy on EKS
CRD-based policy is gated by thek8s_dcf_policies feature flag (default off;
enabled by Aviatrix). When the flag is on, the avx-controller ClusterRole the
helm chart installs grants the additional permissions needed
(networking.aviatrix.com/*, events, CRD existence check). See
Distributed Cloud Firewall for Kubernetes
.