The Kubernetes ServiceAccount provides an identity for processes running in pods. For cloud provider integrations (GCP, AWS, Azure), annotations on the ServiceAccount enable Workload Identity or IRSA to grant cloud permissions without static credentials.Documentation Index
Fetch the complete documentation index at: https://enterprise-docs.crewai.com/llms.txt
Use this file to discover all available pages before exploring further.
Name of the Kubernetes ServiceAccount to create or use.Default Behavior: When empty, defaults to
{release-name}-sa when rbac.create: true.Purpose: Provides an identity for web, worker, buildkit, and job pods.Example:The default ServiceAccount name is automatically generated based on the Helm release name. Most deployments don’t need to override this.
Annotations to add to the ServiceAccount.Purpose: Enable cloud provider Workload Identity or IRSA bindings to grant cloud permissions without static credentials.Common Use Cases:Example - AWS IRSA:Example - Azure Workload Identity:Example - Multiple Annotations:
- GCP Workload Identity - Bind Kubernetes ServiceAccount to Google Service Account
- AWS IRSA - Bind Kubernetes ServiceAccount to IAM Role
- Azure Workload Identity - Bind Kubernetes ServiceAccount to Azure Managed Identity
- Custom Metadata - Add arbitrary metadata for organizational tracking
Cloud Provider Workload Identity
GCP Workload Identity
Workload Identity allows Kubernetes pods to authenticate as a Google Service Account without needing static credentials (JSON keys). Prerequisites:- GKE cluster has Workload Identity enabled
- Google Service Account (GSA) created with required IAM roles
- IAM binding created between Kubernetes ServiceAccount and GSA
AWS IRSA (IAM Roles for Service Accounts)
IRSA allows Kubernetes pods to assume an IAM role without needing static access keys. Prerequisites:- EKS cluster has IRSA enabled (OIDC provider configured)
- IAM role created with required policies
- Trust relationship configured between IAM role and Kubernetes ServiceAccount
Azure Workload Identity
Azure Workload Identity allows Kubernetes pods to authenticate as an Azure Managed Identity. Prerequisites:- AKS cluster has Workload Identity enabled
- Azure Managed Identity created with required permissions
- Federated identity credential configured
RBAC Integration
Create RBAC resources (ServiceAccount, Role, RoleBinding) automatically.When true:
- Chart creates ServiceAccount
- Chart creates Role with required permissions
- Chart creates RoleBinding linking ServiceAccount to Role
- ServiceAccount must already exist
- Permissions must be manually configured
- Specify existing ServiceAccount name via
serviceAccount.name
Enable ClusterRole and ClusterRoleBinding for namespace isolation.When true:
- Chart creates ClusterRole with permissions to manage resources across namespaces
- Chart creates ClusterRoleBinding to grant ServiceAccount cluster-wide access
- Required when
k8s_namespace_isolationfeature flag is enabled
- Platform operates within release namespace and configured crew namespace only
- No cluster-wide permissions granted
crewai-crews-org-1, crewai-crews-org-2) for workload isolation when the k8s_namespace_isolation feature flag is enabled.Permissions Granted (when enabled):- Namespace management: create, get, list, watch
- Resource management across namespaces: secrets, configmaps, services, pods, PVCs, deployments, statefulsets, jobs, ingresses
- Pod operations: exec, logs
This setting is only relevant when
rbac.create: true. If using an existing ServiceAccount (rbac.create: false), you must manually configure the required ClusterRole and ClusterRoleBinding permissions for namespace isolation to work.Complete Examples
GCP with Workload Identity (Recommended for GCP)
AWS with IRSA (Recommended for AWS)
Azure with Workload Identity
Using Existing ServiceAccount
When using an existing ServiceAccount (
rbac.create: false), ensure it has the required permissions for CrewAI Platform operations. See the chart’s Role template for the full list of required permissions.Troubleshooting
Workload Identity Not Working
Symptoms: Pods showcould not retrieve default credentials or 403 Forbidden when accessing cloud services.
Debug Steps:
- Annotation missing or incorrect
- IAM binding not configured (cloud provider side)
- Workload Identity not enabled on cluster
- Namespace or ServiceAccount name mismatch in IAM binding
Pods Can’t Access Cloud Resources
Symptoms: Application logs showAccess Denied, Unauthorized, or InvalidCredentials.
Verify IAM Permissions:
GCP:
