Skip to documentation content
Documentation/Start here
Start here

Install with Helm

Deploy ClusterPilot on Kubernetes with explicit secrets, external PostgreSQL, durable artifacts, and fail-closed production settings.

AudienceKubernetes administrators, platform SREReading time16 minCommands in context6 guided stepsReviewed source9552586 · 1 August 2026

What the chart installs

The ClusterPilot chart installs the API with embedded frontend, background workers, Service, optional Ingress, PodDisruptionBudget, optional filesystem PVC, release metadata, and an optional in-cluster agent. It intentionally does not install PostgreSQL or pull secrets from an external secret manager.

Prepare production values

values.production.yaml
global:
  registry:
    host: ghcr.io
    repositoryPrefix: clusterpilot-system
  imagePullSecrets: []

api:
  replicaCount: 1
  image:
    digest: sha256:b961ca54c4058d79cf535ab7718732351e70da4a97f82bed7971389c5a381c81
  ingress:
    enabled: true
    className: nginx
    hosts:
      - host: clusterpilot.example.com
        paths:
          - path: /
            pathType: Prefix
    tls:
      - secretName: clusterpilot-edge-tls
        hosts:
          - clusterpilot.example.com
  runtime:
    leaderElection:
      enabled: true
      retryIntervalSeconds: 30
    database:
      secretRef:
        name: clusterpilot-api-runtime
        key: connection-string
    artifactStorage:
      provider: filesystem
      filesystem:
        createPersistentVolumeClaim: false
        existingClaim: clusterpilot-artifacts
        shared: true
    featureFlags:
      controlPlaneEnabled: true
      clusterInfrastructureEnabled: true
      clustersEnabled: true
      clusterScaleEnabled: true
      customAddonsEnabled: true
      cloudProviders:
        enabled: true
        ionosEnabled: true
        hetznerEnabled: true
    releaseMetadata:
      backendVersion: "1.1.0"
      frontendVersion: "0.1.0"
    conformanceRelease:
      allowPreSupportedCatalogSelection: false
    secrets:
      masterKeySecretRef:
        name: clusterpilot-api-runtime
        key: master-key
      keyId: self-hosted-prod

agent:
  enabled: false
  image:
    digest: sha256:82dd9e6bf51eb2e7c06c58bcb8b597a7a38dd5851b08ee1c388b0183f41b8929

This example uses only paths present in the published v0.0.5 chart. Create the referenced Kubernetes Secrets separately; do not put connection strings, keys, or tokens in the values file.

Preflight, render, inspect and install

  • Confirm the exact kube context, namespace, chart archive, release identity, and values files.
  • Inspect generated image references, Secret references, storage classes, network policy, Ingress, Service, PodDisruptionBudget, security context, and replica counts.
  • Require preflight and dry-run to succeed before the state-changing installation step.
  • Retain the rendered manifest and installer result with the change record.

Verify the deployment

  • Every API and worker replica is Ready and reports the expected build metadata.
  • Leader election is active whenever API or worker replica count is greater than one.
  • Every replica can read and write the same durable artifact store.
  • Database migrations are complete and startup auto-migration matches your approved policy.
  • Ingress TLS, client address handling, DNS, and health probes work from the actual operator network.

Security defaults to preserve

ControlChart baseline
Runtime identityNon-root user
Root filesystemRead-only
Linux capabilitiesDrop ALL
SeccompRuntimeDefault
ImagesDigest-pinned release subjects
SecretsExisting Kubernetes Secret references
Multi-replica safetyFail closed without leader election and shared artifacts