Key points
- Infrastructure-owned platform pull secrets (
imagePullSecrets,KUBERNETES_IMAGE_PULL_SECRETS) and NopsAI-owned runner credential assignments (runner_registry_credentials,registry_credential_ref) are distinct and should not be conflated. - Docker runners use bootstrap-delivered
NOPSAI_REGISTRY_DOCKER_CONFIG_B64to build local per-imageRegistryAuth. - The legacy
/v1/internal/registry-auth/dockerbroker route has been removed. - Kubernetes step and agent pods continue to pull through explicit
imagePullSecrets.
Examples
curl -s -H "Authorization: Bearer $NOPSAI_TOKEN" \
"$NOPSAI_URL/v1/system/dispatcher/runner-bootstrap-command?runner_id=runner-prod-1®istry_credential_ref=platform/registry" \
| jq '{runner_image, registry_credentials, registry_hosts}'How it works
Assigning a registry credential to a runner is a NopsAI-side operation recorded with audit and metrics. Attaching a pull secret to a pod is a cluster-side operation owned by whoever manages the namespace.
Keep the two boundaries separate when debugging a pull failure: a Kubernetes ImagePullBackOff is almost always a missing or wrong imagePullSecret, while a Docker runner pull failure points at the delivered docker config.
Implementation evidence
doc/runner-registry-auth.mdCredential assignment, image pulls, GitOps, audit, and metrics behavior.
pkg/registryauthRegistryAuth construction for Docker image pulls.

