EKS Kubernetes provisioner backend
Provision Nora agents into Amazon EKS using Nora’s generic Kubernetes adapter and Admin cluster registry.EKS uses the same Kubernetes adapter as every Kubernetes provider. Nora stores provider, namespace, exposure, and load-balancer settings on the Admin cluster row;
docker-compose.kubernetes.yml only mounts kubeconfig files into the control-plane containers.
Step-by-step setup
1. Prerequisites
- AWS account with permission to call the EKS API and create LoadBalancer services in your VPC.
awsCLI installed and configured (aws configureor env vars / SSO profile).- An existing EKS cluster (or create one — AWS Console → EKS → Add cluster).
- AWS Load Balancer Controller installed in the cluster, OR EKS Auto Mode enabled — without one, Service provisioning hangs at
EXTERNAL-IP: <pending>. kubectlinstalled on the host that runs Nora.

2. Create the kubeconfig
3. Verify access from the host
Ready in the Console’s Compute tab.

4. Configure Nora
Set the generic Kubernetes mount variable in.env:
NORA_KUBECONFIGS_DIR and use Admin paths such as /kubeconfigs/eks-us-east-1 and /kubeconfigs/eks-us-west-2.
Confirm the LB-creating add-on is present under Add-ons before continuing.

5. Start the stack
6. Register this cluster in Admin
Open Admin -> Kubernetes, click Add cluster, and use these values:| Field | Value |
|---|---|
| Cluster id | eks-us-east-1 |
| Label | EKS US East 1 |
| Provider | EKS |
| Actual cluster name | The EKS cluster name from the AWS Console |
| Credential mode | Mounted kubeconfig path |
| Kubeconfig path | /kubeconfigs/eks-us-east-1 |
| Fallback namespace | nora-openclaw-agents |
| OpenClaw namespace | nora-openclaw-agents |
| Hermes namespace | nora-hermes-agents |
| Exposure mode | LoadBalancer |
| Service annotations JSON | Leave empty for EKS Auto Mode, or use the AWS Load Balancer Controller annotations that match your cluster |
| Source ranges | Your Nora control-plane egress CIDR when you can restrict access |
| Load balancer class | eks.amazonaws.com/nlb for EKS Auto Mode NLB, otherwise leave empty if you use annotations |
./.secrets/eks-kubeconfig in the Admin Kubeconfig path when Nora runs in Docker Compose. That is the host-side path; the containers see files from NORA_KUBECONFIGS_DIR under /kubeconfigs.
7. Deploy a test agent
Open the dashboard athttp://127.0.0.1:8080, sign in, and create an agent with the EKS cluster label you registered.



EKS Service options
For EKS Auto Mode NLB: Set the Admin Load balancer class field toeks.amazonaws.com/nlb.
For AWS Load Balancer Controller / NLB annotations:
Verification

Automated smoke
Once your EKS kubeconfig is in place, run the shared lifecycle smoke:KEEP_ENV=true to leave the stack running after the script finishes.
Promote to production
Once the smoke is green, switch from the dev-mode stack to the prod-mode stack. The only changes vs the testing setup are nginx (public config + TLS) and Compose mode (infra/docker-compose.public-tls.yml for prod Dockerfiles, TLS mounts, public ports, and restart policies).
1. Tighten the LoadBalancer source ranges
Replace the smoke-time<nora-control-plane-egress-cidr> placeholder with your production control plane’s egress CIDR. For internal-only NLBs, add the aws-load-balancer-scheme: internal annotation.
2. Switch nginx to public + TLS
In.env:
3. Stop the smoke-mode stack
4. Start the prod-mode stack
5. Confirm
running and the EKS NLB assigns a hostname.

