Running ARMO/Kubescape Node Agents on GKE Autopilot Clusters

GKE Autopilot has historically restricted workloads that require privileged permissions, such as node agents used for security observability. This made it difficult for tools like ARMO’s Kubescape to deploy their node-level agents on Autopilot clusters.

Why It Works Now

Starting with recent updates, GKE Autopilot supports a new mechanism for customers to run approved privileged workloads through a feature called Workload Allowlisting. This allows cluster operators to enable specific vendor workloads by referencing a vendor-provided allowlist.
Learn more in the official GKE documentation:
👉 Running Autopilot Partner Workloads


Prerequisites

  • GKE version: 1.32.2-gke.1652000 or later
  • Kubescape Helm chart: 1.27.5 or later

Step-by-Step Guide

Step 1: Create an AllowlistSynchronizer Resource

First, define an AllowlistSynchronizer resource to pull ARMO’s allowlist for node agent workloads.

Create a file named kubescape-allowlist.yaml with the following content:

apiVersion: auto.gke.io/v1
kind: AllowlistSynchronizer
metadata:
  name: kubescape-allow-list
spec:
  allowlistPaths:
  - ARMO/armo-kubescape-node-agent/*
  - ARMO/armo-private-node-agent/*

Step 2: Apply the Allowlist Resource

Apply the YAML using kubectl:

kubectl apply -f kubescape-allowlist.yaml

Step 3: Validate the Allowlist Sync

Confirm that the allowlist has been successfully synced by running:

kubectl get WorkloadAllowlist

You should see a list of synced resources matching the allowlist paths.

$ kubectl get WorkloadAllowlist
NAME                             AGE
armo-kubescape-node-agent-1.27   37s
armo-private-node-agent-1.27     37s

Step 4: Install Kubescape with Helm

Install or upgrade Kubescape using Helm and set the required allowlist parameters:

helm upgrade --install kubescape kubescape/kubescape-operator \
... <all the other settings> ...
  --set nodeAgent.gke.allowlist.enabled=true \
  --set nodeAgent.gke.allowlist.name=armo-kubescape-node-agent-1.27

Make sure your Helm chart version is >= 1.27.5..

❗Note that the allowlist.name must include the major version of the Helm chart, like in the example, we are installing the Helm chart version 1.27.5, therefore, the name is armo-kubescape-node-agent-1.27. In case of Helm chart version 1.28.1 the name will be armo-kubescape-node-agent-1.28 and so on. Also for ARMO users, in case you are installing ARMO Private Node-agent, use the name armo-private-node-agent-1.27.


Step 5: Verify Node Agent Pod is Running

Check that the node agent pod is successfully running:

kubectl get pods -n kubescape

Look for a pod with a name similar to node-agent-* and ensure it has STATUS: Running.


🎉 You're Done!

Your GKE Autopilot cluster is now running ARMO/Kubescape's node agents securely and in compliance with GKE's partner workload policies.