GKE clusters can only be onboarded via Terraform in 9.0. The CoPilot UI does
not currently support GCP onboarding.
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. The Aviatrix cloud account for the GCP project hosting the cluster must include the GKE discovery permissions .Choose how the Controller authenticates
Two paths, both supported equally:- Path A — GCP Cloud Account (recommended for managed GKE). The Aviatrix GCP
service-account JSON obtains a
cloud-platform-scoped OAuth2 token. GKE’s API server validates the token and maps the GCP identity to Kubernetes RBAC. - 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.
Path A — Cloud Account
Step 1: Identify the Aviatrix GCP service account
Find the service-account email under Cloud Resources > Cloud Account in CoPilot. Format:<NAME>@<PROJECT>.iam.gserviceaccount.com.
Step 2: Install the Aviatrix helm chart with the GCP service-account bound
Aviatrix recommends installing the helm chart on GKE clusters. The chart’savx-controller ClusterRole is bound by default to the Kubernetes group
avx-controller. For GKE, you instead bind it directly to the GCP
service-account user identity, because GCP IAM-to-Kubernetes-RBAC mapping does
not place service accounts into a Kubernetes group.
Although GCP IAM roles such as roles/container.viewer provide enough access
for basic discovery on their own, installing the chart makes the Controller’s
RBAC explicit, prepares the cluster for CRD-based DCF policy (which requires
write permissions on networking.aviatrix.com/* that GCP IAM-to-RBAC mapping
does not cover), and gives a uniform setup across providers.
Create values.yaml:
CRD-based policy is gated by the
k8s_dcf_policies feature flag (default off;
enabled by Aviatrix). GKE support for CRD-based policy is implemented in the
Controller but does not have end-to-end test coverage as of 9.0 — flag any
issues to support.Step 3: Register the cluster
cluster_id is the GCP self-link, which looks like:
Path B — Service-account kubeconfig
The Controller authenticates with a bearer token from a Kubernetes ServiceAccount. The full canonical flow lives on Onboard Self-Managed or Custom Clusters . GKE-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
Follow Step 2 and Step 3 on the custom-clusters page. GKE Terraform:Verifying onboarding
On the Kubernetes Clusters tab, the cluster transitions throughNo →
Onboarding → Yes. From the controller pod:
RUNNING within roughly 30 seconds.