Container registry
איפה ה-registry ומה הנתיב
Section titled “איפה ה-registry ומה הנתיב”Project → Deploy → Container registry shows the repositories and tags, and the exact "docker login" / "docker push" commands (older UI: Packages & registries → Container Registry)| חלק | ערך | מקור |
|---|---|---|
| server | registry.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, push | CI_REGISTRY_USER + CI_REGISTRY_PASSWORD (אוטומטיים, קצרי חיים) | job של CI, מוגדר אוטומטית |
| kubelet, pull | deploy token עם read_registry | docker-registry Secret בכל namespace |
| אתה, בדיקה ידנית | deploy token או PAT עם read_registry | docker login |
ליצור deploy token למשיכה
Section titled “ליצור deploy token למשיכה”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):
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.
לאמת credentials למשיכה
Section titled “לאמת credentials למשיכה”בדיקה בלי docker, מול ה-endpoint של ה-token:
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:
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 פורסם).