Kubernetes / Helm
import { Steps, Aside } from ‘@astrojs/starlight/components’;
The official Helm chart deploys the API, web frontend, and Redis as a single release.
Add the Helm repository
Section titled “Add the Helm repository”helm repo add quibble https://play-quibble.github.io/chartshelm repo updateInstall
Section titled “Install”-
Create a values file
Terminal window helm show values quibble/quibble > values.yamlEdit
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: trueclassName: nginxhost: "quibble.yourdomain.com"tls:enabled: trueissuer: letsencrypt-prodSee the full values reference below.
-
Create a namespace
Terminal window kubectl create namespace quibble -
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 -
Install the chart
Terminal window helm install quibble quibble/quibble \--namespace quibble \--values values.yaml -
Verify
Terminal window kubectl get pods -n quibblekubectl logs -n quibble deployment/quibble-api
Upgrade
Section titled “Upgrade”helm upgrade quibble quibble/quibble \ --namespace quibble \ --values values.yamlUninstall
Section titled “Uninstall”helm uninstall quibble --namespace quibbleValues reference
Section titled “Values reference”| Key | Default | Description |
|---|---|---|
api.image.repository | ghcr.io/play-quibble/trivia-api | API image |
api.image.tag | "" (chart appVersion) | Image tag |
api.replicaCount | 1 | API 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.repository | ghcr.io/play-quibble/trivia-web | Web image |
web.replicaCount | 1 | Web replicas |
redis.enabled | true | Deploy in-cluster Redis |
ingress.enabled | false | Enable ingress |
ingress.className | nginx | Ingress class |
ingress.host | "" | Hostname |
ingress.tls.enabled | false | Enable TLS |
ingress.tls.issuer | letsencrypt-prod | cert-manager ClusterIssuer name |