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