Deploying Antrea on a GKE cluster

    1. Install the Google Cloud SDK (gcloud). Refer to

    2. Make sure you are authenticated to use the Google Cloud API

      1. gcloud auth login
    3. Create a project or use an existing one

      1. export GKE_PROJECT=gke-clusters
      2. gcloud projects create $GKE_PROJECT

    You can use any method to create a GKE cluster (gcloud SDK, gcloud Console, etc). The example given here is using the Google Cloud SDK.

    Note: Antrea is supported on Ubuntu Nodes only for GKE cluster. When creating the cluster, you must use the default network provider and must not enable “Dataplane V2”.

      1. export GKE_ZONE="us-west1"
      2. gcloud container --project $GKE_PROJECT clusters create cluster1 --image-type $GKE_HOST \
      3. --zone $GKE_ZONE --enable-ip-alias
    1. Access your cluster

    2. Create a cluster-admin ClusterRoleBinding

      1. kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user user@email.com

      Note: To create clusterRoleBinding, the user must have container.clusterRoleBindings.create permission. Use this command to enable it, if the previous command fails due to permission error. Only cluster Admin can assign this permission.

    1. Prepare the Cluster Nodes

      Deploy antrea-node-init DaemonSet to enable kubelet to operate in CNI mode.

      1. kubectl apply -f https://raw.githubusercontent.com/antrea-io/antrea/main/build/yamls/antrea-gke-node-init.yml
    2. To deploy a released version of Antrea, pick a deployment manifest from the list of releases. Note that GKE support was added in release 0.5.0, which means you cannot pick a release older than 0.5.0. For any given release <TAG> (e.g. v0.5.0), you can deploy Antrea as follows:

      To deploy the latest version of Antrea (built from the main branch), use the checked-in :

      1. kubectl apply -f https://raw.githubusercontent.com/antrea-io/antrea/main/build/yamls/antrea-gke.yml

      The command will deploy a single replica of Antrea controller to the GKE cluster and deploy Antrea agent to every Node. After a successful deployment you should be able to see these Pods running in your cluster:

      1. $ kubectl get pods --namespace kube-system -l app=antrea -o wide
      2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
      3. antrea-controller-5f9985c59-5crt6 1/1 Running 0 46s 10.138.15.209 gke-cluster1-default-pool-93d7da1c-rkbm <none> <none>
    3. Restart remaining Pods

      Once Antrea is up and running, restart all Pods in all Namespaces (kube-system, etc) so they can be managed by Antrea.

      1. $ kubectl delete pods -n kube-system $(kubectl get pods -n kube-system -o custom-columns=NAME:.metadata.name,HOSTNETWORK:.spec.hostNetwork --no-headers=true | grep '<none>' | awk '{ print $1 }')
      2. pod "event-exporter-gke-755c4b4d97-wqlcg" deleted
      3. pod "konnectivity-agent-5cb8ff9b9-2cv5j" deleted
      4. pod "konnectivity-agent-5cb8ff9b9-5jpvp" deleted
      5. pod "konnectivity-agent-autoscaler-7dc78c8c9-kqn9f" deleted
      6. pod "kube-dns-5b5dfcd97b-79m4c" deleted
      7. pod "kube-dns-5b5dfcd97b-q49qj" deleted
      8. pod "kube-dns-autoscaler-5f56f8997c-kqrgx" deleted