Skip to main content

Helm Charts Reference

Helm Charts Reference

Helm chart reference for LLM Platform Kubernetes deployment

Overview

The LLM Platform uses Helm charts for Kubernetes deployment, providing templated, version-controlled infrastructure as code.

Chart Version: 1.0.0 Kubernetes: 1.28+ Helm: 3.12+

Chart Structure

infrastructure/helm-chart/
 Chart.yaml               # Chart metadata
 values.yaml             # Default values
 values-dev.yaml         # Development overrides
 values-staging.yaml     # Staging overrides
 values-prod.yaml        # Production overrides
 README.md
 templates/
     _helpers.tpl        # Template helpers
     NOTES.txt           # Post-install notes
     deployments/
        drupal.yaml
        llm-gateway.yaml
        agent-mesh.yaml
        agent-tracer.yaml
        agent-buildkit.yaml
     services/
        drupal.yaml
        llm-gateway.yaml
        agent-mesh.yaml
        postgres.yaml
     statefulsets/
        postgres.yaml
        redis.yaml
        qdrant.yaml
        neo4j.yaml
        mongodb.yaml
     configmaps/
        drupal-config.yaml
        llm-gateway-config.yaml
        nginx-config.yaml
     secrets/
        api-keys.yaml
     ingress.yaml
     hpa.yaml
     pvc.yaml
     serviceaccount.yaml

Chart.yaml

apiVersion: v2 name: llm-platform description: Enterprise AI Orchestration Platform type: application version: 1.0.0 appVersion: "1.0.0" keywords: - ai - llm - drupal - kubernetes home: https://gitlab.com/blueflyio/agent-platform/demos/llm-platform-demo sources: - https://gitlab.com/blueflyio/agent-platform/demos/llm-platform-demo maintainers: - name: Bluefly Team email: dev@bluefly.io dependencies: - name: postgresql version: 12.x.x repository: https://charts.bitnami.com/bitnami condition: postgres.enabled - name: redis version: 18.x.x repository: https://charts.bitnami.com/bitnami condition: redis.enabled

Values Files

values.yaml (Defaults)

# Global settings global: environment: development domain: llm-platform.local # Drupal Platform drupal: enabled: true replicaCount: 1 image: repository: registry.gitlab.com/bluefly/llm-platform pullPolicy: IfNotPresent tag: "latest" service: type: ClusterIP port: 80 resources: requests: cpu: 500m memory: 1Gi limits: cpu: 1000m memory: 2Gi autoscaling: enabled: false minReplicas: 1 maxReplicas: 10 targetCPUUtilizationPercentage: 70 # LLM Gateway llmGateway: enabled: true replicaCount: 1 image: repository: registry.gitlab.com/bluefly/llm-gateway tag: "1.0.0" service: type: ClusterIP port: 4000 env: ANTHROPIC_API_KEY: "" OPENAI_API_KEY: "" REDIS_URL: "redis://redis:6379" # Agent Mesh agentMesh: enabled: true replicaCount: 1 image: repository: registry.gitlab.com/bluefly/agent-mesh tag: "1.0.0" service: type: ClusterIP httpPort: 3005 grpcPort: 50051 # Agent Tracer agentTracer: enabled: true replicaCount: 1 image: repository: registry.gitlab.com/bluefly/agent-tracer tag: "1.0.0" service: type: ClusterIP port: 3007 # PostgreSQL postgres: enabled: true auth: username: llm_user database: llm_platform password: "" primary: persistence: enabled: true size: 10Gi # Redis redis: enabled: true architecture: standalone auth: enabled: true password: "" master: persistence: enabled: true size: 1Gi # Qdrant qdrant: enabled: true replicaCount: 1 image: repository: qdrant/qdrant tag: "latest" persistence: enabled: true size: 10Gi # Ingress ingress: enabled: false className: nginx annotations: cert-manager.io/cluster-issuer: letsencrypt-prod hosts: - host: llm-platform.local paths: - path: / pathType: Prefix tls: []

values-dev.yaml

global: environment: development domain: llm-platform.dev.local drupal: replicaCount: 1 autoscaling: enabled: false resources: requests: cpu: 250m memory: 512Mi limits: cpu: 500m memory: 1Gi llmGateway: replicaCount: 1 postgres: primary: persistence: size: 5Gi qdrant: persistence: size: 5Gi ingress: enabled: true hosts: - host: llm-platform.dev.local

values-staging.yaml

global: environment: staging domain: staging.llm-platform.example.com drupal: replicaCount: 2 autoscaling: enabled: true minReplicas: 2 maxReplicas: 5 resources: requests: cpu: 500m memory: 1Gi limits: cpu: 1000m memory: 2Gi llmGateway: replicaCount: 2 postgres: primary: persistence: size: 50Gi qdrant: persistence: size: 50Gi ingress: enabled: true hosts: - host: staging.llm-platform.example.com tls: - secretName: staging-tls hosts: - staging.llm-platform.example.com

values-prod.yaml

global: environment: production domain: llm-platform.example.com drupal: replicaCount: 3 autoscaling: enabled: true minReplicas: 3 maxReplicas: 10 targetCPUUtilizationPercentage: 70 resources: requests: cpu: 1000m memory: 2Gi limits: cpu: 2000m memory: 4Gi llmGateway: replicaCount: 3 autoscaling: enabled: true minReplicas: 3 maxReplicas: 10 agentMesh: replicaCount: 2 postgres: primary: persistence: enabled: true size: 100Gi storageClass: gp3 resources: requests: cpu: 2000m memory: 4Gi limits: cpu: 4000m memory: 8Gi redis: architecture: replication replica: replicaCount: 2 master: persistence: size: 10Gi qdrant: replicaCount: 3 persistence: enabled: true size: 100Gi ingress: enabled: true annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true" hosts: - host: llm-platform.example.com paths: - path: / pathType: Prefix tls: - secretName: llm-platform-tls hosts: - llm-platform.example.com

Template Examples

Deployment Template

# templates/deployments/drupal.yaml {{- if .Values.drupal.enabled }} apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "llm-platform.fullname" . }}-drupal labels: {{- include "llm-platform.labels" . | nindent 4 }} app.kubernetes.io/component: drupal spec: {{- if not .Values.drupal.autoscaling.enabled }} replicas: {{ .Values.drupal.replicaCount }} {{- end }} selector: matchLabels: {{- include "llm-platform.selectorLabels" . | nindent 6 }} app.kubernetes.io/component: drupal template: metadata: labels: {{- include "llm-platform.selectorLabels" . | nindent 8 }} app.kubernetes.io/component: drupal spec: containers: - name: drupal image: "{{ .Values.drupal.image.repository }}:{{ .Values.drupal.image.tag }}" imagePullPolicy: {{ .Values.drupal.image.pullPolicy }} ports: - name: http containerPort: 80 protocol: TCP env: - name: DRUPAL_DATABASE_HOST value: {{ include "llm-platform.fullname" . }}-postgres - name: DRUPAL_DATABASE_PORT value: "5432" - name: DRUPAL_DATABASE_NAME value: {{ .Values.postgres.auth.database }} - name: DRUPAL_DATABASE_USERNAME value: {{ .Values.postgres.auth.username }} - name: DRUPAL_DATABASE_PASSWORD valueFrom: secretKeyRef: name: {{ include "llm-platform.fullname" . }}-postgres key: password livenessProbe: httpGet: path: / port: http initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 10 periodSeconds: 5 resources: {{- toYaml .Values.drupal.resources | nindent 12 }} {{- end }}

Service Template

# templates/services/drupal.yaml {{- if .Values.drupal.enabled }} apiVersion: v1 kind: Service metadata: name: {{ include "llm-platform.fullname" . }}-drupal labels: {{- include "llm-platform.labels" . | nindent 4 }} spec: type: {{ .Values.drupal.service.type }} ports: - port: {{ .Values.drupal.service.port }} targetPort: http protocol: TCP name: http selector: {{- include "llm-platform.selectorLabels" . | nindent 4 }} app.kubernetes.io/component: drupal {{- end }}

HPA Template

# templates/hpa.yaml {{- if .Values.drupal.autoscaling.enabled }} apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: {{ include "llm-platform.fullname" . }}-drupal labels: {{- include "llm-platform.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: {{ include "llm-platform.fullname" . }}-drupal minReplicas: {{ .Values.drupal.autoscaling.minReplicas }} maxReplicas: {{ .Values.drupal.autoscaling.maxReplicas }} metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: {{ .Values.drupal.autoscaling.targetCPUUtilizationPercentage }} {{- end }}

Helm Commands

Install

# Development helm install llm-platform ./infrastructure/helm-chart \ --namespace llm-platform \ --create-namespace \ --values infrastructure/helm-chart/values-dev.yaml # Staging helm install llm-platform ./infrastructure/helm-chart \ --namespace llm-platform \ --create-namespace \ --values infrastructure/helm-chart/values-staging.yaml # Production helm install llm-platform ./infrastructure/helm-chart \ --namespace llm-platform \ --create-namespace \ --values infrastructure/helm-chart/values-prod.yaml

Upgrade

# Upgrade with new values helm upgrade llm-platform ./infrastructure/helm-chart \ --namespace llm-platform \ --values infrastructure/helm-chart/values-prod.yaml # Upgrade with set values helm upgrade llm-platform ./infrastructure/helm-chart \ --namespace llm-platform \ --set drupal.replicaCount=5

Rollback

# List releases helm history llm-platform -n llm-platform # Rollback to previous version helm rollback llm-platform -n llm-platform # Rollback to specific revision helm rollback llm-platform 2 -n llm-platform

Uninstall

# Uninstall release helm uninstall llm-platform -n llm-platform # Keep history helm uninstall llm-platform -n llm-platform --keep-history

Testing Charts

# Lint chart helm lint ./infrastructure/helm-chart # Dry run helm install llm-platform ./infrastructure/helm-chart \ --dry-run \ --debug \ --namespace llm-platform # Template rendering helm template llm-platform ./infrastructure/helm-chart \ --values infrastructure/helm-chart/values-prod.yaml