Skip to main content
Version: 1.3.0

Helm Chart Parameters

This comprehensive guide covers all Helm chart parameters for the Obliq SRE Agent platform, including parameter architecture, configuration flow, and complete deployment examples.

This topic covers:

Parameter Architecture

The Obliq SRE Agent uses a sophisticated umbrella chart architecture where parameters flow from global configurations to individual service charts through multiple layers as illustrated in the figure below.

┌─────────────────────────────────────────────────────────┐
│ Global values.yaml │
│ ┌─────────────────┬──────────────────┬─────────────────┐ │
│ │ Global Env │ Common Config │ Service Config │ │
│ │ Variables │ Templates │ Overrides │ │
│ └─────────────────┴──────────────────┴─────────────────┘ │
└─────────────────────┬───────────────────────────────────┘

┌──────────────┼──────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Service A │ │ Service B │ │ Service C │
│ Chart │ │ Chart │ │ Chart │
│ values.yaml│ │ values.yaml│ │ values.yaml│
└─────────────┘ └─────────────┘ └─────────────┘

Parameter Flow and Precedence

Parameters follow this precedence order that is from highest to lowest:

  1. Helm Install/Upgrade --set options (highest priority)
  2. Custom values files (-f custom-values.yaml)
  3. Service-specific configuration (in umbrella values.yaml`)
  4. Common configuration templates (x-commonConfig)
  5. Global environment variables (global.env.*)
  6. Individual chart defaults (lowest priority)

Example Parameter Flow

# 1. Global env var sets default
global.env.common.LOG_LEVEL: "INFO"

# 2. Service inherits global + adds specific config
backend:
env:
app:
AGENT_TYPE: "backend" # Service-specific
# LOG_LEVEL: "INFO" # Inherited from global

# 3. Helm install can override
helm install --set backend.env.app.LOG_LEVEL="DEBUG" # Highest priority

Global Environment Variables

This section describes the global environment variables of all services including external tools.

Common Environment Variables

ParameterDescriptionDefaultRequiredExample
global.env.common.NODE_ENVNode.js environment"production"No"development"
global.env.common.LOG_LEVELApplication log level"INFO"No"DEBUG"
global.env.common.LOGURU_LEVELPython logging level"INFO"No"WARNING"
global.env.common.TZTimezone"UTC"No"America/New_York"
global.env.common.ENVIRONMENTEnvironment name"production"No"staging"
global.env.common.CLUSTER_NAMEKubernetes cluster name"obliq-cluster"No"my-cluster"
global.env.common.KUBECONFIGPath to kubeconfig file"/etc/kubeconfig/config"No"/root/.kube/config"
global.env.common.DEBUGEnable debug mode"false"No"true"
global.env.common.AUTOMATIC_EXECUTION_ENABLEDEnable automatic execution"true"No"false"

AWS Configuration

ParameterDescriptionDefaultRequiredExample
global.env.aws.AWS_ACCESS_KEY_IDAWS access key ID""Yes"AKIAIOSFODNN7EXAMPLE"
global.env.aws.AWS_SECRET_ACCESS_KEYAWS secret access key""Yes"wJalrXUtnFEMI/K7MDENG/bPxRfiCY"
global.env.aws.AWS_REGIONAWS region"us-east-1"No"us-west-2"
global.env.aws.AWS_ROLE_ARN_AWS_MCPAWS MCP role ARN""For aws-mcp"arn:aws:iam::123456789012:role/aws-mcp"
global.env.aws.AWS_ROLE_ARN_EC2_CLOUDWATCH_ALARMSCloudWatch alarms role ARN""For aws-ec2-cloudwatch-alarms"arn:aws:iam::123456789012:role/cloudwatch"
global.env.aws.AWS_MCP_USERNAMEAWS MCP username"admin"No"your-username"
global.env.aws.AWS_MCP_PASSWORDAWS MCP password"admin123"No"your-password"

OpenAI Configuration

ParameterDescriptionDefaultRequiredExample
global.env.openai.OPENAI_API_KEYOpenAI API key""Yes"sk-1234567890abcdef..."

Database Configuration

ParameterDescriptionDefaultRequiredExample
global.env.database.NEO4J_USERNeo4j username"neo4j"No"admin"
global.env.database.NEO4J_PASSWORDNeo4j password"admin123"No"changeme"
global.env.database.NEO4J_AUTHNeo4j auth string"neo4j/admin123"No"neo4j/changeme"
global.env.database.NEO4J_DATABASENeo4j database name"neo4j"No"production"
global.env.database.MONGO_ROOT_USERNAMEMongoDB root username"admin"No"root"
global.env.database.MONGO_ROOT_PASSWORDMongoDB root password"admin123"No"changeme"
global.env.database.MONGODB_DATABASEMongoDB database name"infra_db"No"obliq_data"
global.env.database.MONGODB_USERNAMEMongoDB app username"admin"No"appuser"
global.env.database.MONGODB_PASSWORDMongoDB app password"admin123"No"changeme"

Integration Services Configuration

ParameterDescriptionDefaultRequiredExample
global.env.slack.SLACK_BOT_TOKENSlack bot token""For slack-ingester"xoxb-your-token"
global.env.slack.SLACK_WEBHOOK_URLSlack webhook URL""No"https://hooks.slack.com/..."
global.env.sg.DD_API_KEYDataDog API key""For service-graph-engine"your-dd-api-key"
global.env.sg.DD_APP_KEYDataDog app key""For service-graph-engine"your-dd-app-key"
global.env.sg.DD_SITEDataDog site"us5.datadoghq.com"No"datadoghq.com"
global.env.sg.DD_ENVIRONMENTSDataDog environments"production"No"staging,production"

MCP Services Configuration

ParameterDescriptionDefaultRequiredExample
global.env.prometheus.PROMETHEUS_URLPrometheus URL""For prometheus-mcp"http://prometheus:9090"
global.env.prometheus.PROMETHEUS_MCP_USERNAMEPrometheus MCP username""For prometheus-mcp"admin"
global.env.prometheus.PROMETHEUS_MCP_PASSWORDPrometheus MCP password""For prometheus-mcp"password"
global.env.loki.LOKI_URLLoki URL""For loki-mcp"http://loki:3100"
global.env.loki.LOKI_USERNAMELoki username""No"admin"
global.env.loki.LOKI_PASSWORDLoki password""No"password"
global.env.loki.LOKI_TOKENLoki token""No"your-token"
global.env.mcp.NEO4J_MCP_USERNAMENeo4j MCP username"admin"No"mcp-user"
global.env.mcp.NEO4J_MCP_PASSWORDNeo4j MCP password"admin123"No"mcp-password"

JIRA Integration Configuration

ParameterDescriptionDefaultRequiredExample
global.env.jira.JIRA_BASE_URLJIRA base URL""For JIRA integration"https://company.atlassian.net"
global.env.jira.JIRA_EMAILJIRA email""For JIRA integration"admin@company.com"
global.env.jira.JIRA_API_TOKENJIRA API token""For JIRA integration"your-api-token"
global.env.jira.JIRA_PROJECT_KEYJIRA project key""For JIRA integration"PROJ"

External Tools

ParameterDescriptionDefaultRequiredExample
cert-managerOPTIONAL ADD-ON - Install separatelyN/ANoInstall from upstream
ingress-nginxOPTIONAL ADD-ON - Install separatelyN/ANoInstall from upstream

Service Configuration

Service Enable/Disable Options

ServiceDefaultPurposeDependencies
Core Services (Always Enabled)
neo4j.enabledtrueGraph databaseNone
mongodb.enabledtrueDocument databaseNone
opentelemetry-collector.enabledtrueObservabilityNone
backend.enabledtrueMain API serverOpenAI API key
avesha-unified-ui.enabledtrueWeb interfaceNone
orchestrator.enabledtrueWorkflow engineOpenAI API key
rca-agent.enabledtrueRoot cause analysisOpenAI API key
anomaly-detection.enabledtrueAnomaly detectionOpenAI API key
auto-remediation.enabledtrueAuto-remediationOpenAI API key
incident-manager.enabledtrueIncident managementOpenAI API key
active-inventory.enabledtrueInfrastructure inventoryNone
infra-agent.enabledtrueInfrastructure monitoringNone
k8s-mcp.enabledtrueKubernetes MCPkubeconfig
Optional MCP Services (Disabled by Default)
aws-mcp.enabledfalseAWS MCP integrationAWS credentials
prometheus-mcp.enabledfalsePrometheus MCPPrometheus credentials
neo4j-mcp.enabledfalseNeo4j MCPUses internal Neo4j
loki-mcp.enabledfalseLoki MCPLoki URL
cloudwatch-mcp.enabledfalseCloudWatch MCPAWS credentials
Optional Integration Services (Disabled by Default)
service-graph-engine.enabledfalseDataDog integrationDataDog credentials
slack-ingester.enabledfalseSlack integrationSlack token
kubernetes-events-ingester.enabledfalseK8s eventskubeconfig
aws-ec2-cloudwatch-alarms.enabledfalseCloudWatch alarmsAWS credentials

Common Service Parameters

Each service supports the common configuration options described below.

Resource Management

<service-name>:
resources:
limits:
cpu: "1000m"
memory: "1Gi"
requests:
cpu: "500m"
memory: "512Mi"

replicaCount: 1

autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 3
targetCPUUtilizationPercentage: 80

Service Configuration

<service-name>:
service:
type: ClusterIP
port: 8080
targetPort: 8080

ingress:
enabled: false
annotations: {}
hosts:
- host: service.example.com
paths:
- path: /
pathType: Prefix
tls: []

Health Checks

<service-name>:
livenessProbe:
enabled: true
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 10

readinessProbe:
enabled: true
httpGet:
path: /ready
port: http
initialDelaySeconds: 5
periodSeconds: 5

Security Context

<service-name>:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000

podSecurityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000

Complete Deployment Examples

This section provides the deployment examples.

Minimal or Core Services Only Deployment

helm install obliq-sre-agent obliq-charts/obliq-sre-agent \
--namespace avesha \
--create-namespace \
--set-file global.kubeconfig.content=./kubeconfig \
--set global.env.openai.OPENAI_API_KEY="${OPENAI_API_KEY}"

AWS Integration Deployment

helm install obliq-sre-agent obliq-charts/obliq-sre-agent \
--namespace avesha \
--create-namespace \
--set-file global.kubeconfig.content=./kubeconfig \
--set global.env.openai.OPENAI_API_KEY="${OPENAI_API_KEY}" \
# Enable AWS services
--set aws-mcp.enabled=true \
--set cloudwatch-mcp.enabled=true \
--set aws-ec2-cloudwatch-alarms.enabled=true \
# AWS credentials
--set global.env.aws.AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
--set global.env.aws.AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \
--set global.env.aws.AWS_ROLE_ARN_AWS_MCP="${AWS_ROLE_ARN_AWS_MCP}" \
--set global.env.aws.AWS_ROLE_ARN_EC2_CLOUDWATCH_ALARMS="${AWS_ROLE_ARN_EC2_CLOUDWATCH}"

Full Integration Deployment

helm install obliq-sre-agent obliq-charts/obliq-sre-agent \
--namespace avesha \
--create-namespace \
--set-file global.kubeconfig.content=./kubeconfig \
# Essential parameters
--set global.env.openai.OPENAI_API_KEY="${OPENAI_API_KEY}" \
# Enable optional MCP services
--set aws-mcp.enabled=true \
--set prometheus-mcp.enabled=true \
--set neo4j-mcp.enabled=true \
--set loki-mcp.enabled=true \
--set cloudwatch-mcp.enabled=true \
# Enable optional integration services
--set service-graph-engine.enabled=true \
--set slack-ingester.enabled=true \
--set kubernetes-events-ingester.enabled=true \
--set aws-ec2-cloudwatch-alarms.enabled=true \
# AWS credentials
--set global.env.aws.AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
--set global.env.aws.AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \
--set global.env.aws.AWS_ROLE_ARN_AWS_MCP="${AWS_ROLE_ARN_AWS_MCP}" \
--set global.env.aws.AWS_ROLE_ARN_EC2_CLOUDWATCH_ALARMS="${AWS_ROLE_ARN_EC2_CLOUDWATCH}" \
# DataDog credentials
--set global.env.sg.DD_API_KEY="${DD_API_KEY}" \
--set global.env.sg.DD_APP_KEY="${DD_APP_KEY}" \
# Slack credentials
--set global.env.slack.SLACK_BOT_TOKEN="${SLACK_BOT_TOKEN}" \
# Prometheus credentials
--set global.env.prometheus.PROMETHEUS_URL="${PROMETHEUS_URL}" \
--set global.env.prometheus.PROMETHEUS_MCP_USERNAME="${PROMETHEUS_MCP_USERNAME}" \
--set global.env.prometheus.PROMETHEUS_MCP_PASSWORD="${PROMETHEUS_MCP_PASSWORD}" \
# Loki credentials
--set global.env.loki.LOKI_URL="${LOKI_URL}" \
# JIRA credentials
--set global.env.jira.JIRA_BASE_URL="${JIRA_BASE_URL}" \
--set global.env.jira.JIRA_EMAIL="${JIRA_EMAIL}" \
--set global.env.jira.JIRA_API_TOKEN="${JIRA_API_TOKEN}" \
# Enable ingress
--set backend.ingress.enabled=true \
--set avesha-unified-ui.ingress.enabled=true

Environment-Specific Configuration

# Production values
--set global.env.common.NODE_ENV="production" \
--set global.env.common.LOG_LEVEL="WARN" \
--set global.env.common.ENVIRONMENT="production" \
--set backend.replicaCount=3 \
--set backend.resources.limits.cpu="2000m" \
--set backend.resources.limits.memory="2Gi"

# Staging values
--set global.env.common.NODE_ENV="staging" \
--set global.env.common.LOG_LEVEL="DEBUG" \
--set global.env.common.ENVIRONMENT="staging" \
--set backend.replicaCount=1 \
--set backend.resources.limits.cpu="500m" \
--set backend.resources.limits.memory="512Mi"

Validate Parameters

Validate Parameters Prior to Deployment

# Dry run to validate configuration
helm install obliq-sre-agent obliq-charts/obliq-sre-agent \
--namespace avesha \
--dry-run \
--set-file global.kubeconfig.content=./kubeconfig \
--set global.env.openai.OPENAI_API_KEY="test" \
# ... other parameters ...

Common Parameter Validation Errors

ErrorDescription
Empty required parametersOpenAI API key and kubeconfig content
Invalid ARN formatsAWS role ARNs must follow proper format.
Missing service dependenciesEnabled services without required credentials.
Resource conflictsSet conflicting resource limits.

Required Parameters

ParameterRequired ForError Message
global.env.openai.OPENAI_API_KEYCore AI services"OpenAI API key is required for AI services"
global.kubeconfig.contentk8s-mcp, kubernetes-events-ingester"kubeconfig is required for Kubernetes integration"
global.env.aws.AWS_ACCESS_KEY_IDAWS services"AWS credentials required for AWS integrations"
global.env.sg.DD_API_KEYservice-graph-engine"DataDog API key required for service graph engine"
global.env.slack.SLACK_BOT_TOKENslack-ingester"Slack bot token required for Slack integration"

Configuration Tips

Parameter Organization

  1. Start with minimal: Begin with core services only
  2. Add incrementally: Enable optional services as needed
  3. Environment-specific: Use different parameter sets per environment
  4. Security first: Use real credentials for production
  5. Monitor resources: Watch resource usage and adjust limits

Common Patterns

# Override global settings for specific service
--set global.env.common.LOG_LEVEL="INFO" \
--set backend.env.app.LOG_LEVEL="DEBUG"

# Service-specific resource configuration
--set service-graph-engine.resources.limits.cpu="2000m" \
--set service-graph-engine.resources.limits.memory="4Gi" \
--set service-graph-engine.replicaCount=3

# Conditional service enablement
--set aws-mcp.enabled=true \
--set global.env.aws.AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
--set global.env.aws.AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"

Configuration Dependencies

  • Core AI Services: All require global.env.openai.OPENAI_API_KEY
  • AWS Services: All require global.env.aws.AWS_ACCESS_KEY_ID and global.env.aws.AWS_SECRET_ACCESS_KEY
  • Kubernetes Services: k8s-mcp and kubernetes-events-ingester require kubeconfig
  • Database Services: Use global.env.database.* for credentials
  • External Integrations: Each requires service-specific credentials

Support

  • For parameter-related issues, see Obliq AI SRE Agent Installation Issues.

  • Common parameter validation errors:

    • Empty required parameters
    • Invalid ARN formats
    • Missing service dependencies
    • Resource conflicts