Azure Setup Guide
This guide helps Azure shops connect LlamaCloud to existing Azure services. It assumes you already have Azure infrastructure provisioned (via Terraform, ARM templates, or other means) and focuses on gathering the right credentials and configuring LlamaCloud to connect to your Azure services.
Overview
Section titled “Overview”This guide covers connecting LlamaCloud to:
- Azure Kubernetes Service (AKS) for container orchestration
- Azure Database for PostgreSQL for primary data storage
- Azure Cache for Redis for caching and sessions
- Azure Service Bus for job queue management
- Azure Cosmos DB (MongoDB API) for document storage
- Azure Blob Storage for file storage
- Azure OpenAI for LLM integration
- Microsoft Entra ID for authentication (OIDC)
Prerequisites
Section titled “Prerequisites”- Existing Azure infrastructure with the required services provisioned
- AKS cluster with kubectl access configured
- Helm v3.7.0+ installed
- LlamaCloud License Key (contact support@llamaindex.ai)
Step 1: Configure External Azure Services
Section titled “Step 1: Configure External Azure Services”LlamaCloud requires the following Azure services to be provisioned and configured. Click each section below to view requirements and credential gathering steps:
Azure Database for PostgreSQL
Section titled “Azure Database for PostgreSQL”Click to expand PostgreSQL configuration
Requirements:
Section titled “Requirements:”- Version: PostgreSQL 14 or higher
- Networking: Accessible from your AKS cluster
- Performance: General Purpose or Memory Optimized tier recommended
Gather Credentials:
Section titled “Gather Credentials:”From Azure Portal:
- Navigate to your Azure Database for PostgreSQL Flexible Server
- Go to Settings → Connection strings
- Copy the ADO.NET connection string (it will look similar to below)
Connection String Format:
postgresql://username:password@servername.postgres.database.azure.com:5432/databasename
Required Information:
- Server FQDN:
your-server.postgres.database.azure.com
- Database Name: Usually
llamacloud
- Username: Your admin username or dedicated LlamaCloud user
- Password: The password for the user
- Port: 5432 (default)
Ensure pgvector Extension: Connect to your database and enable the vector extension:
CREATE EXTENSION IF NOT EXISTS vector;
Create PostgreSQL Secret:
Create postgresql-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: postgresql-secret namespace: defaulttype: OpaquestringData: DATABASE_HOST: "your-server.postgres.database.azure.com" DATABASE_PORT: "5432" DATABASE_NAME: "llamacloud" DATABASE_USER: "your-username" DATABASE_PASSWORD: "your-password"
Apply the secret:
kubectl apply -f postgresql-secret.yaml
Azure Cache for Redis
Section titled “Azure Cache for Redis”Click to expand Redis configuration
Requirements:
Section titled “Requirements:”- Tier: Standard or Premium (Basic not supported for clustering)
- Configuration: Default configuration works
- Networking: Accessible from your AKS cluster
Gather Credentials:
Section titled “Gather Credentials:”From Azure Portal:
- Navigate to your Azure Cache for Redis instance
- Go to Settings → Access keys
- Copy the Primary connection string
Connection String Format:
redis://your-redis-name.redis.cache.windows.net:6380
For SSL Connection (Recommended):
rediss://your-redis-name.redis.cache.windows.net:6380,password=your-primary-access-key,ssl=True
Required Information:
- Redis Host:
your-redis-name.redis.cache.windows.net
- Port: 6380 (SSL) or 6379 (non-SSL)
- Access Key: Primary or Secondary access key from the portal
Create Redis Secret:
Create redis-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: redis-secret namespace: defaulttype: OpaquestringData: REDIS_SCHEME: "rediss" # Use "redis" for non-SSL REDIS_HOST: "your-redis-name.redis.cache.windows.net" REDIS_PORT: "6380" # Use "6379" for non-SSL REDIS_PASSWORD: "your-primary-access-key"
Apply the secret:
kubectl apply -f redis-secret.yaml
Azure Service Bus
Section titled “Azure Service Bus”Click to expand Service Bus configuration
Requirements:
Section titled “Requirements:”- Tier: Standard or higher (Basic tier lacks required features)
- Configuration: Namespace with appropriate access policies
- Permissions: Manage, Send, and Listen rights required
Gather Credentials:
Section titled “Gather Credentials:”From Azure Portal:
- Navigate to your Service Bus Namespace
- Go to Settings → Shared access policies
- Select or create a policy with Manage, Send, and Listen permissions
- Copy the Primary Connection String
Connection String Format:
Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=your-key;EntityPath=your-queue
Required Information:
- Service Bus Namespace:
your-namespace.servicebus.windows.net
- Policy Name: Name of your shared access policy
- Primary Key: The access key for the policy
- Queue Names: LlamaCloud will create queues automatically if the policy has Manage permissions
Create Service Bus Secret:
Create servicebus-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: servicebus-secret namespace: defaulttype: OpaquestringData: JOB_QUEUE_CONNECTION_STRING: "Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=your-policy-name;SharedAccessKey=your-access-key"
Apply the secret:
kubectl apply -f servicebus-secret.yaml
Azure Cosmos DB (MongoDB API)
Section titled “Azure Cosmos DB (MongoDB API)”Click to expand Cosmos DB configuration
Requirements:
Section titled “Requirements:”- API: Must use MongoDB API (not SQL API)
- Configuration: Default settings work for most deployments
- Networking: Accessible from your AKS cluster
- Performance: Provisioned throughput or serverless
Gather Credentials:
Section titled “Gather Credentials:”From Azure Portal:
- Navigate to your Azure Cosmos DB account
- Verify it’s using the MongoDB API (check the API type in Overview)
- Go to Settings → Keys
- Copy the Primary Connection String or Secondary Connection String
Connection String Format:
mongodb://account-name:primary-key@account-name.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@account-name@
Required Information:
- Account Name: Your Cosmos DB account name
- Primary Key: The primary or secondary key from the portal
- Connection String: Full MongoDB connection string (recommended)
- Database Name: LlamaCloud will create
llamacloud
database automatically
Important Notes:
- Must use MongoDB API: SQL API or other APIs won’t work
- SSL Required: Azure Cosmos DB requires SSL connections
- Auto-scaling: Consider enabling auto-scale for variable workloads
Create Cosmos DB Secret:
Create cosmosdb-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: cosmosdb-secret namespace: defaulttype: OpaquestringData: MONGODB_URL: "mongodb://your-account:your-primary-key@your-account.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@your-account@"
Apply the secret:
kubectl apply -f cosmosdb-secret.yaml
Azure Blob Storage
Section titled “Azure Blob Storage”Click to expand Blob Storage configuration
Requirements:
Section titled “Requirements:”- Performance: Standard performance tier is sufficient
- Access: Account key or managed identity access
Required Storage Containers:
Section titled “Required Storage Containers:”LlamaCloud requires these containers to exist in your storage account:
llama-platform-parsed-documents
llama-platform-etl
llama-platform-external-components
llama-platform-file-parsing
llama-platform-raw-files
llama-cloud-parse-output
llama-platform-file-screenshots
llama-platform-extract-output
Gather Credentials:
Section titled “Gather Credentials:”From Azure Portal:
- Navigate to your Storage Account
- Go to Security + networking → Access keys
- Copy Storage account name and Key (key1 or key2)
Required Information:
- Storage Account Name: The name of your storage account
- Storage Account Key: Primary or secondary access key
- Storage Endpoint:
https://yourstorageaccount.blob.core.windows.net
- Azure Region: The region where your storage account is located (e.g.,
eastus
,westus2
)
Required Storage Containers: LlamaCloud requires these containers to exist in your storage account:
llama-platform-parsed-documents
llama-platform-etl
llama-platform-external-components
llama-platform-file-parsing
llama-platform-raw-files
llama-cloud-parse-output
llama-platform-file-screenshots
llama-platform-extract-output
Create Blob Storage Secret:
Create blobstorage-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: blobstorage-secret namespace: defaulttype: OpaquestringData: JCLOUDS_IDENTITY: "your-storage-account-name" JCLOUDS_CREDENTIAL: "your-storage-account-key" JCLOUDS_REGION: "eastus" # Change to your Azure region JCLOUDS_ENDPOINT: "https://yourstorageaccount.blob.core.windows.net"
Apply the secret:
kubectl apply -f blobstorage-secret.yaml
Azure OpenAI
Section titled “Azure OpenAI”Click to expand Azure OpenAI configuration
Requirements:
Section titled “Requirements:”- Required Models: gpt-4o, gpt-4o-mini, or other supported models
- Deployment: Models must be deployed, not just available
Gather Credentials:
Section titled “Gather Credentials:”If using Azure OpenAI instead of OpenAI API:
From Azure Portal:
- Navigate to your Azure OpenAI resource
- Go to Resource Management → Keys and Endpoint
- Copy Endpoint and KEY 1 or KEY 2
- Go to Model deployments to get deployment names
Required Information for Each Model:
- Endpoint:
https://your-resource.openai.azure.com
- API Key: One of the access keys
- Deployment Names: The actual deployment names (may be model names by default, e.g.
gpt-4o-mini
or a custom name, e.g.our-fast-gpt
) - API Version: Use
2024-12-01-preview
or latest
Example Deployment Mapping:
Model: gpt-4o → Deployment Name: my-gpt-4o-deploymentModel: gpt-4o-mini → Deployment Name: my-gpt-4o-mini-deployment
Create Azure OpenAI Secret:
Create azure-openai-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: azure-openai-secret namespace: defaulttype: OpaquestringData: AZURE_OPENAI_GPT_4O_API_KEY: "your-api-key" AZURE_OPENAI_GPT_4O_BASE_URL: "https://your-resource.openai.azure.com" AZURE_OPENAI_GPT_4O_DEPLOYMENT_NAME: "your-gpt-4o-deployment-name" AZURE_OPENAI_GPT_4O_API_VERSION: "2024-12-01-preview" # Add additional models as needed: # AZURE_OPENAI_GPT_4O_MINI_API_KEY: "your-api-key" # AZURE_OPENAI_GPT_4O_MINI_BASE_URL: "https://your-resource.openai.azure.com" # AZURE_OPENAI_GPT_4O_MINI_DEPLOYMENT_NAME: "your-gpt-4o-mini-deployment-name" # AZURE_OPENAI_GPT_4O_MINI_API_VERSION: "2024-12-01-preview"
Apply the secret:
kubectl apply -f azure-openai-secret.yaml
Step 2: Configure Microsoft Entra ID (OIDC)
Section titled “Step 2: Configure Microsoft Entra ID (OIDC)”Click to expand Microsoft Entra ID OIDC configuration steps
For Microsoft Entra ID Authentication:
Section titled “For Microsoft Entra ID Authentication:”- Navigate to Microsoft Entra ID → App registrations
- Find or create your application registration
- Configure redirect URI:
- under “Select a platform”, select “Web” (not SPA!)
- if you are port-forwarding:
http://localhost:3000/api/v1/auth/callback
- if you have ingress configured:
https://<internal-domain-for-llamacloud>/api/v1/auth/callback
- Go to Overview to get Application (client) ID
- Go to Certificates & secrets to get or create a client secret
- Note your Tenant ID from the Overview page
Required Information:
Section titled “Required Information:”- Tenant ID: Your Microsoft Entra ID tenant ID
- Client ID: Application (client) ID
- Client Secret: Secret value (not the secret ID)
- Discovery URL:
https://login.microsoftonline.com/{tenant-id}/v2.0/.well-known/openid-configuration
The OIDC configuration will be set directly in your Helm values file with the client secret included.
Step 3: Create License Key Secret
Section titled “Step 3: Create License Key Secret”Contact your LlamaIndex account manger (or enterprise-support@runllama.ai) to obtain your LlamaCloud license key.
Create your LlamaCloud license key secret:
Create license-secret.yaml
:
apiVersion: v1kind: Secretmetadata: name: license-secret namespace: defaulttype: OpaquestringData: license-key: "<YOUR_LLAMACLOUD_LICENSE_KEY>"
Apply the secret:
kubectl apply -f license-secret.yaml
Step 4: Configure Helm Values
Section titled “Step 4: Configure Helm Values”Create your azure-values.yaml
file with the appropriate configuration:
Complete Azure Configuration:
Section titled “Complete Azure Configuration:”global: cloudProvider: "azure" config: existingLicenseKeySecret: "license-secret"
# External Azure services postgres: external: enabled: true existingSecretName: "postgresql-secret"
redis: external: enabled: true existingSecretName: "redis-secret"
rabbitmq: external: enabled: true existingSecretName: "servicebus-secret"
mongodb: external: enabled: true existingSecretName: "cosmosdb-secret"
backend: config: # Microsoft Entra ID OIDC configuration oidc: discoveryUrl: "https://login.microsoftonline.com/<your-tenant-id>/v2.0/.well-known/openid-configuration" clientId: "<your-client-id>" clientSecret: "<your-client-secret>"
# Azure OpenAI via secrets (or use OpenAI secret if preferred) azureOpenAi: enabled: true existingSecret: "azure-openai-credentials"
llamaParse: azureOpenAi: enabled: true existingSecret: "azure-openai-credentials"
# S3Proxy for Azure Blob Storages3proxy: enabled: true config: S3PROXY_ENDPOINT: "http://0.0.0.0:80" S3PROXY_AUTHORIZATION: "none" S3PROXY_IGNORE_UNKNOWN_HEADERS: "true" S3PROXY_CORS_ALLOW_ORIGINS: "*" JCLOUDS_PROVIDER: "azureblob" JCLOUDS_AZUREBLOB_AUTH: "azureKey" envFromSecretName: "blobstorage-secret"
# Disable internal servicespostgresql: enabled: falseredis: enabled: falserabbitmq: enabled: falsemongodb: enabled: false
:::note LLM Provider Options While this guide uses Azure OpenAI, LlamaCloud supports many LLM providers including but not limited to:
- OpenAI (GPT-4o, GPT-4.1, GPT-3.5)
- Anthropic (Claude 3.5 Sonnet, Claude 3 Opus)
- Google (Gemini 1.5 Pro, Gemini 2.0 Flash)
For complete setup instructions for other providers, see the LLM Integrations Overview.
To use a different provider, replace Step 6 with your preferred provider’s configuration and update the externalSecrets.secrets
references accordingly.
:::
Step 5: Deploy LlamaCloud
Section titled “Step 5: Deploy LlamaCloud”# Add Helm repositoryhelm repo add llamaindex https://run-llama.github.io/helm-chartshelm repo update
# Install LlamaCloudhelm install llamacloud llamaindex/llamacloud -f azure-values.yaml
# Monitor deploymentkubectl get pods -w
Next Steps
Section titled “Next Steps”- Validation Guide - Verify your deployment is working correctly
- Troubleshooting Guide - Common issues and solutions
For additional configuration options and advanced setups, refer to the detailed configuration guides in the main documentation.