דלגו לתוכן

Container registry

GitLab UI
Project → Deploy → Container registry
shows the repositories and tags, and the exact "docker login" / "docker push" commands
(older UI: Packages & registries → Container Registry)
חלקערךמקור
serverregistry.gitlab.com$CI_REGISTRY
נתיב ה-project<GROUP>/<REPO>$CI_REGISTRY_IMAGE = <REGISTRY>/<GROUP>/<REPO>
image לכל service<IMAGE> = $CI_REGISTRY_IMAGE/<SERVICE>
tag<CANDIDATE>נקבע ב-CI, ראה ci/patterns

דוגמה מלאה: registry.gitlab.com/trident-lab00/trident-source/ingest-api:dev-20261001-78e24670. פירוק ה-ref: docker/overview.

  • ה-images ב-registry של source. ל-gitops מגיעה רק מחרוזת ה-tag.
  • לא latest; תמיד ה-candidate.
  • ב-Secret של docker-registry ה-server הוא רק המארח: --docker-server=registry.gitlab.com, בלי נתיב.

credentials: מי דוחף ומי מושך

Section titled “credentials: מי דוחף ומי מושך”
מיcredentialאיפה
ה-CI, pushCI_REGISTRY_USER + CI_REGISTRY_PASSWORD (אוטומטיים, קצרי חיים)job של CI, מוגדר אוטומטית
kubelet, pulldeploy token עם read_registrydocker-registry Secret בכל namespace
אתה, בדיקה ידניתdeploy token או PAT עם read_registrydocker login
GitLab UI
trident-source → Settings → Repository → Deploy tokens → Expand → Add token
Name: registry-pull Scopes: read_registry (only)
→ Create deploy token → copy username (gitlab+deploy-token-N) and token

פירוט מלא: identities. את ה-Secret ב-cluster יוצרים כך (פרטים ב-kubernetes/secrets):

runs on: VM
kubectl create secret docker-registry <SECRET> -n <NS> \
--docker-server=<REGISTRY> \
--docker-username=<USER> \
--docker-password="$(cat <TOKEN_FILE>)" \
--dry-run=client -o yaml | kubectl apply --server-side --force-conflicts -f -

הקשר: Secret לכל namespace של environment (Pod מושך רק עם Secret מה-namespace שלו), והשם נרשם ב-extraImagePullSecrets ב-values.

בדיקה בלי docker, מול ה-endpoint של ה-token:

runs on: VM
curl -s -o /dev/null -w '%{http_code}\n' -u "<USER>:$(cat <TOKEN_FILE>)" \
"https://<GITLAB_HOST>/jwt/auth?service=container_registry&scope=repository:<GROUP>/<REPO>:pull"

איך מוודאים: 200 = ה-credential תקף למשיכה מה-repository הזה. 401 = שם משתמש / token שגוי (או פג).

בדיקה עם docker:

runs on: VM
cat <TOKEN_FILE> | docker login -u <USER> --password-stdin <REGISTRY>
docker pull <IMAGE>:<CANDIDATE>
docker logout <REGISTRY>

איך מוודאים: Login Succeeded ואז Downloaded newer image / Image is up to date. unauthorized = credential שגוי; manifest unknown = ה-tag לא קיים (בדוק ב-UI שה-candidate פורסם).