helm install. Most installation failures trace back to a missed prerequisite or a known chart quirk listed here.
Cluster
- Kubernetes 1.27+ (1.32+ recommended)
- Worker nodes are AMD64 (x86_64) — ARM64 is not supported
- AWS: AWS Load Balancer Controller installed
- GCP: Workload Identity enabled on cluster and node pools; Gateway API enabled if using GKE Gateway
- Azure: NGINX Ingress Controller or Azure Application Gateway installed
- Helm 3.10+ installed locally
-
kubectlconfigured and pointing at the correct cluster and namespace
Databases
Create these databases on your managed PostgreSQL instance before installing:envVars key | Database name to create |
|---|---|
POSTGRES_DB | crewai_plus_production |
POSTGRES_CABLE_DB | crewai_plus_cable_production |
POSTGRES_OAUTH_DB | crewai_plus_oauth_production |
wharf (Wharf service) | wharf |
GCP Cloud SQL IAM auth:
GRANT ALL PRIVILEGES ON DATABASE is not sufficient for Cloud SQL IAM-authenticated users. Schema-level grants are also required. See the GCP Integration Guide for the complete SQL.Auth Provider
- WorkOS: Redirect URI
https://<your-domain>/auth/workos/callbackadded in WorkOS Dashboard → Applications → your app - Entra ID: Redirect URI
https://<your-domain>/auth/entra_id/callbackregistered in Azure App Registration (Web platform). Must be done beforehelm install— auth fails at login if missing. - Okta: Sign-in redirect URI
https://<your-domain>/auth/okta/callbackconfigured in Okta app - Keycloak: Valid redirect URI
https://<your-domain>/auth/keycloak/callbackadded to the Keycloak client
Cloud IAM / Credentials
- AWS (Pod Identity): Pod Identity association created for
crewai-saServiceAccount with S3 + ECR permissions - AWS (IRSA): IRSA trust policy references correct namespace and ServiceAccount name (
crewai-sa) - GCP: GSA created with required IAM roles; Workload Identity binding created for
crewai-sa - Azure: Managed Identity created; federated credential configured for
crewai-saServiceAccount
Container Registry
- ECR / ACR / GAR repository created with path ending in
/crewai-enterprise - ECR: Image tag mutability set to MUTABLE (CrewAI overwrites image tags)
-
CREW_IMAGE_REGISTRY_OVERRIDEset to the registry prefix only — do not include/crewai-enterprise(the platform appends it automatically)
Known Chart Gotchas
These are silent failures — the chart installs without errors but the platform behaves incorrectly at runtime.WorkOS: API key and cookie password placement
Entra ID: client ID and tenant ID placement
AWS ALB: SSL termination
AWS ALB: scheme casing
Thealb.scheme value is case-sensitive. The AWS Load Balancer Controller accepts only lowercase:
- ✅
"internet-facing"/"internal" - ❌
"Internet-Facing"/"Internal"— silently fails to provision the ALB
GCP: signed URL generation
ECR: do not set global.imageRegistry for crew builds only
Studio V2 has no Helm values
Admin users have no Helm key
There is noadminUsers key in the chart. Admin roles are granted after install via:
factory-admin App Role in the Azure portal. factory:grant_admin has no effect for Entra ID users.
ArgoCD / GitOps: auto-generated secrets
The chart auto-generates several secrets (SECRET_KEY_BASE, ENCRYPTION_KEY, OAUTH_DB_ENCRYPTION_KEY, FACTORY_DEBUG_TOKEN, WHARF_JWT_SECRET, CUBE_JWT_SECRET, DEPLOYMENT_INSTANCE_JWT_SECRET) using the Helm lookup function, which does not work in GitOps pipelines. If deploying via ArgoCD or Flux, set these explicitly in your values. Generate with:
