Cluster preparation
Configure cluster add-ons, secrets, identity, and edge routing on AKS before installing the BigHammer Helm chart (bighammer). This section covers everything the application chart depends on but does not install itself.
Complete Infrastructure provisioning (AKS, PostgreSQL, Key Vault, DNS, ACR) and the Prerequisites checklist first.
Recommended order
| Order | Page | Purpose |
|---|---|---|
| 1 | Workload Identity | Bind KSAs to user-assigned managed identities (ESO + apps) |
| 2 | External Secrets Operator | Install ESO to sync Key Vault → Kubernetes |
| 3 | TLS Options | SSL/TLS certificates for HTTPS at the edge |
| 4 | NGINX Ingress Deployment | Legacy edge — single Ingress resource |
| 4b | Gateway API stack | Recommended edge — gateway-crds, Envoy controller, bh-gateway (bh-helm-charts/incubator/gateway/INSTALL_AZURE_AKS.md) |
| 5 | RabbitMQ broker | Deploy bhrabbitmq (OCI), Bitnami, or use an existing broker |
| 6 | Key Vault Secrets | Key Vault name mapping and chart secret reference |
| 7 | CD deployment (Gateway mode) | GitHub Actions runner RBAC for HTTPRoute (if using CI/CD) |
Pick one edge mode in step 4 — nginx or Gateway API. When Gateway mode is enabled, complete step 7 before the first automated bighammer deploy from GitHub Actions.
Run create-dbs-azure.sh and Key Vault bootstrap scripts from Scripts Reference after PostgreSQL is provisioned and before Helm install. Platform Key Vault secrets must exist before the chart syncs ExternalSecrets.
Install Workload Identity and ESO (steps 1–2 above) before the platform chart syncs secrets.
Cluster add-ons (summary)
From Prerequisites — install before the platform chart:
| Add-on | Helm chart |
|---|---|
| External Secrets Operator | external-secrets-0.18.2 |
| Stakater Reloader | reloader-1.1.0 |
| RabbitMQ | bhrabbitmq (OCI) or existing broker |
| Edge | ingress-nginx Helm 4.15.1 or Envoy Gateway + bh-gateway |
CD deployment requirements (Gateway mode)
When global.gateway.enabled: true on the bighammer chart (and on standalone charts such as airflow-azure, grafana, superset-multicloud), Helm deploys HTTPRoute resources in API group gateway.networking.k8s.io instead of (or in addition to) Ingress objects.
GitHub Actions CD workflows (cd-deploy-bighammer-aks-azure-dev, cd-deploy-airflow-aks-azure-dev, etc.) run helm upgrade using the in-cluster runner identity:
system:serviceaccount:github-runner:github-runner-sa
That service account must be allowed to get, create, update, and delete Gateway API resources. Permission for networking.k8s.io/ingresses does not cover gateway.networking.k8s.io/httproutes.
Symptom if RBAC is missing
httproutes.gateway.networking.k8s.io "bhui-route" is forbidden:
User "system:serviceaccount:github-runner:github-runner-sa" cannot get resource "httproutes"
Manual helm from a bastion with admin kubeconfig may still work; only the pipeline fails.
Fix (cluster admin — once per cluster)
Apply the runner ClusterRole from bh-helm-charts (includes Gateway API rules):
kubectl apply -f scripts/github-actions-runner-aks/runner-role.yaml
kubectl apply -f scripts/github-actions-runner-aks/runner-rolebinding.yaml
Repository path: bh-helm-charts/scripts/github-actions-runner-aks/.
Minimum additional rules (if patching an existing role):
- apiGroups: ["gateway.networking.k8s.io"]
resources: ["httproutes", "gateways", "referencegrants"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["gateway.networking.k8s.io"]
resources: ["httproutes/status", "gateways/status"]
verbs: ["get", "update", "patch"]
Verify
kubectl auth can-i get httproutes \
--as=system:serviceaccount:github-runner:github-runner-sa \
-n bh-control-plane
# expected: yes
kubectl auth can-i create httproutes \
--as=system:serviceaccount:github-runner:github-runner-sa \
-n bh-control-plane
# expected: yes
When this step is required
| Edge mode | Runner needs Gateway API RBAC? |
|---|---|
nginx (global.ingress.enabled: true) | No — ingresses only |
Gateway (global.gateway.enabled: true) | Yes — before first CD deploy |
If you stay on nginx Ingress and do not enable gateway mode, the existing runner ClusterRole is sufficient; skip this section.
What to do next
When TLS, secrets, Workload Identity, and edge routing are in place:
- Platform Deployment —
helm upgradethebighammerchart - Deployment Checklist — final verification
- Troubleshooting — if something fails
For customer artifact access and release pins, see Release Manifest & Distribution.