We provide a Google Cloud service-account JSON key. The Helm chart turns it into a Kubernetes image-pull secret named after the release, with a -docker suffix. You do not need to run docker login on the cluster nodes. A laptop login is optional and is only useful to confirm that the key can pull an image.
Registries covered by the key
europe-west6-docker.pkg.dev hosts the Phonemos application images (global.phonemosImageBase). eu.gcr.io/linkyard-191615/linkyard-cloud hosts shared images such as postgres-wait.
Add the key to your values
Start from the defaults in the chart values.yaml and set:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
global:
docker:
gcr:
username: _json_key
email: ops@example.com
password: |
{
"type": "service_account",
"project_id": "...",
...
}
linkyard:
username: unused
email: unused@example.com
password: unusedThe chart template also writes an entry for docker.linkyard.ch. Phonemos images for this installation do not come from that registry. Leave placeholder values so Helm can render the secret. Do not use docker.linkyard.ch for production pulls.
Optional check from a laptop
1
2
cat key.json | docker login -u _json_key --password-stdin europe-west6-docker.pkg.dev
docker pull europe-west6-docker.pkg.dev/linkyard-191615/phonemos-docker/phonemos/frontend:<tag-from-values>Existing secrets
If you create the pull secret yourself, set global.useExistingSecrets to true and also create every other secret the chart would have created (Hasura, Redis, S3, Keycloak, and backend keys). Unless you already have a secret-management workflow, it is simpler to let the chart create the secrets from values.
Public images
Redis, BusyBox, and Envoy are pulled from public registries. They are not covered by the GCR key. Allow those pulls, or mirror the tags into a registry the cluster can reach.