Overview
This guide covers a full production deployment of CrewAI Platform on AWS EKS using:- Amazon RDS (PostgreSQL 16) for all databases including Wharf
- Amazon S3 for object storage
- Amazon ECR for crew container images
- AWS ALB for ingress with ACM TLS termination
- Microsoft Entra ID for SSO authentication
- Wharf for OTLP trace and span collection
- Studio V2 for the AI-powered crew builder (post-install)
Prerequisites Checklist
Complete every item before runninghelm install.
AWS Infrastructure
Microsoft Entra ID
Tools
kubectlconnected to your EKS clusterhelm3.10+- AWS CLI with credentials for your account
Infrastructure Setup
RDS: Pre-Create All Four Databases
Connect to your RDS instance as the postgres superuser and run:When
postgres.enabled: false, the Helm chart does not create databases automatically. All four databases must exist before helm install runs.S3: Create Bucket
ECR: Create Repository
IAM: Pod Identity for S3 and ECR
Create a combined IAM policy for S3 and ECR access, then attach it to a role configured for Pod Identity. Combined IAM policy (crewai-platform-policy.json):
With
rbac.create: true (the chart default), the Helm chart creates a ServiceAccount named crewai-sa. The Pod Identity association must reference this exact name and the namespace you deploy into.ACM: Request Certificate
Entra ID: Azure Portal Setup
Step 1: App Registration
- Go to portal.azure.com > Microsoft Entra ID > App registrations > New registration
- Name:
CrewAI(or your preferred name) - Supported account types: Accounts in this organizational directory only
- Redirect URI: Web platform —
https://<YOUR_DOMAIN>/auth/entra_id/callback - Click Register
Step 2: Collect Credentials
From the app overview page, copy:- Application (client) ID →
ENTRA_ID_CLIENT_ID - Directory (tenant) ID →
ENTRA_ID_TENANT_ID
Step 3: Create Client Secret
- Left sidebar > Manage > Certificates & secrets
- New client secret — enter a description, choose expiration
- Copy the Value immediately — it is not shown again
→
ENTRA_ID_CLIENT_SECRET
Step 4: Grant Admin Consent
- Enterprise applications > select your app
- Security > Permissions > Grant admin consent
- Confirm consent for Microsoft Graph User.Read
Step 5: Create App Roles
- Back in App registrations > your app > Manage > App roles
- Create two roles:
Ensure “Do you want to enable this app role?” is checked for each.
Step 6: Assign Users
- Enterprise applications > your app > Manage > Properties
- Set Assignment required? to Yes, then Save
- Manage > Users and groups > Add user/group
- Regular users: assign Member role
- Admin users: assign Factory Admin role
Complete values.yaml
Replace all<PLACEHOLDER> values before running helm install.
values.yaml
Install
Running:
Post-Install
Required Initialization
These commands must be completed before any user can log in. Run them in the order shown.For Entra ID, the user record is created in the database automatically on first login. The
factory:add_owner command above can be run before or after the user’s first login.Studio V2 Setup
Studio V2 cannot be configured invalues.yaml. Adding studioV2.enabled or STUDIO_V2_ENABLED has no effect — Helm silently ignores unknown keys. Setup requires the platform to be fully running and accessible.
Step 1: Create the LLM Connection (UI)
- Log in to the CrewAI web UI as an admin
- Navigate to Settings → LLM Connections
- Click New Connection
- Set the name to exactly
studio-v2(lowercase, no spaces) - Select your LLM provider, enter the model name and API key
- Click Save
- Navigate to Settings → Crew Studio
- Under Default Connection, select
studio-v2 - Click Save
Verify
Platform Health
ALB Ingress
alb.scheme casing, missing subnet tags, insufficient LBC IAM permissions.
Authentication
- Navigate to
https://<YOUR_DOMAIN> - Click Sign in with Microsoft
- Authenticate with a user assigned a role in Azure portal
- Verify the user lands on the dashboard without error
https://<YOUR_DOMAIN>/auth/entra_id/callback exactly.
Wharf Trace Collection
wharf database on the same RDS host as the main application. If the pod is in CrashLoopBackOff, verify the wharf database exists and the crewai user has access.
Studio V2
Factory Health Endpoint
"status": "ok".