Skip to content

Kubernetes / Helm

import { Steps, Aside } from ‘@astrojs/starlight/components’;

The official Helm chart deploys the API, web frontend, and Redis as a single release.

Terminal window
helm repo add quibble https://play-quibble.github.io/charts
helm repo update
  1. Create a values file

    Terminal window
    helm show values quibble/quibble > values.yaml

    Edit values.yaml. At minimum, set:

    api:
    env:
    databaseUrl: "postgres://user:pass@host/dbname?sslmode=require"
    auth0Domain: "your-tenant.us.auth0.com"
    auth0Audience: "https://api.yourdomain.com"
    ingress:
    enabled: true
    className: nginx
    host: "quibble.yourdomain.com"
    tls:
    enabled: true
    issuer: letsencrypt-prod

    See the full values reference below.

  2. Create a namespace

    Terminal window
    kubectl create namespace quibble
  3. Create a secret for sensitive values

    Terminal window
    kubectl create secret generic quibble-secrets \
    --namespace quibble \
    --from-literal=databaseUrl="postgres://..." \
    --from-literal=auth0Domain="your-tenant.us.auth0.com" \
    --from-literal=auth0Audience="https://api.yourdomain.com"

    Reference the secret in values.yaml:

    api:
    existingSecret: quibble-secrets
  4. Install the chart

    Terminal window
    helm install quibble quibble/quibble \
    --namespace quibble \
    --values values.yaml
  5. Verify

    Terminal window
    kubectl get pods -n quibble
    kubectl logs -n quibble deployment/quibble-api
Terminal window
helm upgrade quibble quibble/quibble \
--namespace quibble \
--values values.yaml
Terminal window
helm uninstall quibble --namespace quibble
KeyDefaultDescription
api.image.repositoryghcr.io/play-quibble/trivia-apiAPI image
api.image.tag"" (chart appVersion)Image tag
api.replicaCount1API replicas
api.env.databaseUrl""Postgres connection string
api.env.auth0Domain""Auth0 tenant domain
api.env.auth0Audience""Auth0 API audience
api.existingSecret""Name of existing Secret for env vars
web.image.repositoryghcr.io/play-quibble/trivia-webWeb image
web.replicaCount1Web replicas
redis.enabledtrueDeploy in-cluster Redis
ingress.enabledfalseEnable ingress
ingress.classNamenginxIngress class
ingress.host""Hostname
ingress.tls.enabledfalseEnable TLS
ingress.tls.issuerletsencrypt-prodcert-manager ClusterIssuer name