···80prefect-server services # background services only
81```
8200000000000000000000000083## production considerations
84851. **postgres**: use a managed database (RDS, Cloud SQL, etc.)
···80prefect-server services # background services only
81```
8283+## image registry auth (atcr.io)
84+85+atcr.io uses a credential helper for docker CLI auth. k8s needs explicit credentials:
86+87+```bash
88+# extract creds from docker credential helper
89+echo "atcr.io" | docker-credential-atcr get
90+# returns: {"ServerURL":"atcr.io","Username":"<handle>","Secret":"<token>"}
91+92+# create k8s secret with those values
93+kubectl -n prefect create secret docker-registry atcr-creds \
94+ --docker-server=atcr.io \
95+ --docker-username=<handle> \
96+ --docker-password=<token>
97+98+# patch deployments to use the secret
99+kubectl -n prefect patch deployment prefect-api \
100+ -p '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"atcr-creds"}]}}}}'
101+kubectl -n prefect patch deployment prefect-services \
102+ -p '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"atcr-creds"}]}}}}'
103+```
104+105+alternatively, add `imagePullSecrets` directly to the deployment manifests.
106+107## production considerations
1081091. **postgres**: use a managed database (RDS, Cloud SQL, etc.)