DeployKubernetes

Kubernetes

The repository includes a Helm chart under server/deploy/helm/gestalt.

Install The Chart

helm upgrade --install gestalt ./server/deploy/helm/gestalt \
  --set image.tag=<version> \
  --dry-run --debug

Remove --dry-run --debug when you are ready to apply the release to a real cluster.

Important Chart Values

ValuePurpose
configRendered as /etc/gestalt/config.yaml.
extraEnvEnvironment variables used by ${VAR} placeholders in config.
persistencePVC settings for SQLite or other local state.
pluginInit.enabledRuns gestaltd init in an init container before the main server starts.
ingressStandard ingress settings.

Example Values

config:
  server:
    port: 8080
    base_url: "${GESTALT_BASE_URL}"
    encryption_key: "${GESTALT_ENCRYPTION_KEY}"
  auth:
    provider: oidc
    config:
      issuer_url: "${OIDC_ISSUER_URL}"
      client_id: "${OIDC_CLIENT_ID}"
      client_secret: "${OIDC_CLIENT_SECRET}"
      redirect_url: "${OIDC_REDIRECT_URL}"
  datastore:
    provider: postgres
    config:
      dsn: "${DATABASE_URL}"
 
extraEnv:
  - name: GESTALT_BASE_URL
    value: "https://gestalt.example.com"
 
pluginInit:
  enabled: true

When To Enable pluginInit

Enable the init container when your config uses:

  • plugin.package
  • plugin.source
  • ui.plugin.package
  • ui.plugin.source

The init container copies the rendered config and runs:

/gestaltd init --config /etc/gestalt/config.yaml

The main container then starts in locked mode against the prepared state.