Configuration Reference

Complete values.yaml configuration guide for Composio Helm Charts

Global Configuration

Namespace Settings

Parameter Description Default Required
namespace.create Create namespace automatically false No
namespace.name Namespace for Composio services "composio" No
global.environment Deployment environment "development" No
global.domain Base domain for services "localhost" No

Example Configuration:

namespace:
  create: true
  name: "composio-prod"

global:
  environment: production
  domain: "composio.example.com"
  imagePullSecrets:
    - name: ecr-secret

Secrets & External Services

External Secrets Configuration

Parameter Description Required Set Via
externalSecrets.ecr.token AWS ECR authentication token Yes --set flag
externalSecrets.ecr.server ECR registry server URL Yes values.yaml
externalSecrets.ecr.username ECR username (typically "AWS") Yes values.yaml

Setting Secrets via Environment Variables:

# Required: PostgreSQL connection string
export POSTGRES_URL="postgresql://user:password@host:5432/db?sslmode=require"

# Optional: External Redis
export REDIS_URL="redis://user:password@host:6379/0"

# Optional: OpenAI API key
export OPENAI_API_KEY="sk-1234567890..."

# Run secret setup script
./secret-setup.sh -r composio -n composio

Database Configuration

Parameter Description Default
externalPostgreSQL.enabled Use external PostgreSQL database true
externalRedis.enabled Use external Redis true
redis.enabled Deploy bundled Redis (Bitnami) false

Apollo Service

Deployment Configuration

Parameter Description Default
apollo.replicaCount Number of Apollo replicas 2
apollo.image.repository Apollo container image repository ECR repository
apollo.image.tag Apollo container image tag "0e07c93"
apollo.image.pullPolicy Image pull policy Always

Service Configuration

Parameter Description Default
apollo.service.type Kubernetes service type NodePort
apollo.service.port Service port 9900
apollo.service.nodePort NodePort for external access 30900

Resource Limits

Parameter Description Default
apollo.resources.requests.memory Memory request "5Gi"
apollo.resources.requests.cpu CPU request "1"
apollo.resources.limits.memory Memory limit "6Gi"
apollo.resources.limits.cpu CPU limit "1"

Horizontal Pod Autoscaler (HPA)

Parameter Description Default
apollo.autoscaling.enabled Enable HPA for Apollo false
apollo.autoscaling.minReplicas Minimum replicas 2
apollo.autoscaling.maxReplicas Maximum replicas 10
apollo.autoscaling.targetCPUUtilizationPercentage Target CPU for scaling 70
apollo.autoscaling.targetMemoryUtilizationPercentage Target memory for scaling 80

Example: Enable HPA for Production:

apollo:
  replicaCount: 3
  autoscaling:
    enabled: true
    minReplicas: 3
    maxReplicas: 20
    targetCPUUtilizationPercentage: 70
    targetMemoryUtilizationPercentage: 80

Thermos Service

Parameter Description Default
thermos.replicaCount Number of Thermos replicas 2
thermos.service.type Kubernetes service type ClusterIP
thermos.service.port Service port 8180
thermos.resources.requests.memory Memory request "4Gi"
thermos.resources.requests.cpu CPU request "2"
thermos.autoscaling.enabled Enable HPA for Thermos false

Mercury Service (Knative)

Deployment Configuration

Parameter Description Default
mercury.enabled Deploy Mercury service true
mercury.useKnative Use Knative for serverless deployment true
mercury.replicaCount Initial replicas (if not Knative) 1

Auto-scaling Configuration

Parameter Description Default
mercury.autoscaling.minScale Minimum Knative replicas 1
mercury.autoscaling.maxScale Maximum Knative replicas 10
mercury.autoscaling.target Target CPU utilization (%) 80
mercury.containerConcurrency Max concurrent requests per container 0 (unlimited)
mercury.timeoutSeconds Request timeout in seconds 300

Example: Mercury with Scale-to-Zero:

mercury:
  enabled: true
  useKnative: true
  autoscaling:
    minScale: 0  # Scale to zero when idle
    maxScale: 20
    target: 80
  containerConcurrency: 100  # Limit concurrent requests
  timeoutSeconds: 600  # 10-minute timeout

Temporal Workflow Engine

Parameter Description Default
temporal.server.enabled Deploy Temporal server true
temporal.server.replicaCount Number of Temporal replicas 2
temporal.web.enabled Deploy Temporal web UI true
temporal.schema.setup.enabled Auto-create database schema true
Note: Temporal uses the external PostgreSQL database configured via secret-setup.sh. It automatically creates temporal and temporal_visibility databases.

Minio Object Storage

Parameter Description Default
minio.replicaCount Number of Minio instances 1
minio.auth.rootUser Minio admin username "minioadmin"
minio.auth.rootPassword Minio admin password "minioadmin123"
minio.persistence.enabled Enable persistent storage true
minio.persistence.size Persistent volume size 8Gi
minio.persistence.storageClass Storage class for PVC "" (default)
Warning: Minio uses a RollingUpdate strategy with maxUnavailable=1 and maxSurge=0 to prevent Multi-Attach volume errors on single-replica deployments.

Redis Configuration

Parameter Description Default
redis.enabled Deploy bundled Redis (Bitnami) false
externalRedis.enabled Use external Redis true
redis.auth.enabled Enable Redis authentication true
redis.auth.password Redis password (if bundled) "redis123"
redis.master.persistence.size Redis storage size (if bundled) 8Gi

Example: Use Bundled Redis:

externalRedis:
  enabled: false

redis:
  enabled: true
  auth:
    enabled: true
    password: "securepassword"
  master:
    persistence:
      enabled: true
      size: 16Gi

OpenTelemetry & Observability

Core Configuration

Parameter Description Default
otel.enabled Enable OpenTelemetry true
otel.traces.enabled Enable trace collection true
otel.metrics.enabled Enable metrics collection true
otel.environment Environment label "development"

Collector Configuration

Parameter Description Default
otel.collector.enabled Deploy OTEL collector true
otel.collector.replicaCount Number of collector instances 1
otel.collector.googleCloud.enabled Export to Google Cloud true
otel.collector.googleCloud.projectId GCP project ID "self-host-kubernetes"

Example: Disable Google Cloud Export:

otel:
  enabled: true
  collector:
    enabled: true
    googleCloud:
      enabled: false  # Only use local Prometheus
    config:
      exporters:
        prometheus:
          endpoint: "0.0.0.0:8889"
      service:
        pipelines:
          traces:
            exporters: [debug]
          metrics:
            exporters: [prometheus]

Configuration Tips

Security Best Practices

  • Always use strong, auto-generated passwords in production
  • Enable external secrets management (AWS Secrets Manager, HashiCorp Vault)
  • Use TLS/SSL for all external database connections
  • Rotate ECR tokens regularly using automation
  • Apply network policies to restrict pod-to-pod communication

Performance Optimization

  • Enable HPA for production workloads
  • Use external managed databases (Cloud SQL, RDS) for better performance
  • Configure appropriate resource requests/limits based on load testing
  • Use node affinity to place services on appropriate node pools
  • Consider using Redis for caching to reduce database load

Cost Optimization

  • Use Mercury's scale-to-zero feature for dev/staging environments
  • Right-size resource requests after monitoring actual usage
  • Use spot/preemptible instances for non-critical workloads
  • Disable unused services (OTEL collector in dev, Temporal web UI)
  • Use shared managed services across multiple environments