Before you start
- A Kubernetes cluster and
kubectlpointed at it - Helm 3
- An ingress controller, if you want her reachable from outside the cluster
- A Temporal server, which the chart does not provide
Install
The chart is published as an OCI artifact, so there is nohelm repo add step:
The chart is called
postqueen-app, not postqueen. The directory in the repository is
charts/postqueen, but the name inside Chart.yaml, which is what the registry uses, is
postqueen-app. The directory name will not resolve as an OCI reference.A minimal values.yaml
Nothing derives the connection strings for you, not even for the bundled databases, so they
have to be written out. The hostnames below assume a release named postqueen, which is what
the command above creates.
postgresql.auth or redis.auth,
change them here to match. To use databases you already run, point both strings at those and
set postgresql.enabled: false and redis.enabled: false.
Every variable is explained in Configuration Reference. Values
under secrets become a Kubernetes Secret, values under env become a ConfigMap, and both are
handed to the container.
Traps worth knowing about
The image tag needs its v prefix
The image tag needs its v prefix
Published tags look like
v3.0.4. When image.tag is empty the chart falls back to its
appVersion, which carries no v, so it resolves to an image that does not exist and the
pod sits in ImagePullBackOff. Write the tag out, with the v.Uploaded media disappears when the pod restarts
Uploaded media disappears when the pod restarts
With no
extraVolumes configured, /uploads is an emptyDir, which lives and dies with
the pod. For a real install, either mount a persistent volume through extraVolumes and
extraVolumeMounts, or use Cloudflare R2. R2 is also the answer for
more than one replica, since a local disk cannot be shared between pods.There are no health probes
There are no health probes
The deployment defines no liveness or readiness probes, so traffic reaches a pod that is
still starting, and a wedged pod is never restarted. Add your own against
/ on the
container port if you want that behaviour.Empty secrets become empty variables
Empty secrets become empty variables
Every key under
secrets is rendered whether or not you gave it a value, so an unset
provider key arrives as an empty string rather than being absent. Harmless in practice, and
useful to know when something looks set but is not.Resource names look doubled
Resource names look doubled
A release named
postqueen produces objects named postqueen-postqueen-app. That is the
standard Helm naming helper, not a mistake. The bundled databases are unaffected and are
named postqueen-postgresql and postqueen-redis-master, which is why the connection
strings above look the way they do.Check it worked
Backend started successfully on port 3000, and then the lines after it. She reports
configuration problems there and carries on running regardless, so a Running pod is not proof
that the settings are right: