בדף הזה מוסבר איך להגדיר Google Distributed Cloud (תוכנה בלבד) עבור אשכול אדמין של VMware כדי להשתמש ב-Artifact Registry של Google כמאגר Docker פרטי שבו אפשר לאחסן תמונות של עומסי עבודה. כשמגדירים מאגר פרטי לאחסון תמונות של עומסי עבודה, גם תמונות המערכת של Google Distributed Cloud מאוחסנות במאגר הפרטי כשיוצרים או משדרגים אשכולות.
למרות ש-Artifact Registry תומך בכמה שיטות אימות שונות, כדי להשתמש ב-Artifact Registry כמאגר פרטי, צריך להשתמש במפתח של חשבון שירות לצורך אימות. השלבים בדף זה מסבירים איך לקבל את הכתובת, פרטי הכניסה ואישור CA שנדרשים בקטע privateRegistry בקובץ התצורה של אשכול הניהול.
הגדרת קובץ פרטי כניסה
אם לא הגדרתם אימות למאגר, אתם צריכים לפעול לפי השלבים במאמר הגדרת אימות ל-Artifact Registry עבור Docker כדי להגדיר אימות באמצעות חשבון שירות. כדי לבצע אימות, צריך להשתמש בחשבון שירות עם קובץ מפתח JSON.
יוצרים קובץ תצורה של פרטי הכניסה,
admin-creds.yaml, כמו שמוצג בדוגמה הבאה. הערך שלusernameחייב להיות"_json_key". אפשר להשתמש בכל ערך בשדהname, כל עוד הוא תואם לערך שתוסיפו לשדהprivateRegistry.entry.apiVersion: v1 kind: "CredentialFile" items: - name: "private-registry-creds" username: "_json_key" password:בספרייה שבה נמצא קובץ מפתח ה-JSON של חשבון השירות של המאגר, מריצים את הפקודה
catבקובץ המפתח כדי להציג את התוכן.מעתיקים את כל התוכן של מפתח ה-JSON ומדביקים אותו בשדה
password. חשוב להקיף את התוכן של מפתח ה-JSON בגרשיים, כי התוכן כולל מירכאות כפולות. לדוגמה:apiVersion: v1 kind: "CredentialFile" items: - name: "private-registry-creds" username: "_json_key" password: '{ "type": "service_account", "project_id": "example-project-12345", "private_key_id": "d2661ccb21e686658c6552cf1e0166b857091b2e", "private_key": "-----BEGIN PRIVATE ... -----END PRIVATE KEY-----\n", "client_email": "test-537@example-project-12345.iam.gserviceaccount.com", "client_id": "111772984510027821291", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test-537%40example-project-12345.iam.gserviceaccount.com", "universe_domain": "googleapis.com" } '
הגדרת privateRegistry בקובץ התצורה של אשכול האדמין
כדי להשתמש במאגר פרטי, צריך להגדיר את הקטע privateRegistry כשיוצרים את אשכול האדמין. אחרי שיוצרים את האשכול, אי אפשר לשנות את privateRegistry.address, אבל אפשר לשנות את שאר ההגדרות ולעדכן אותן לפי הצורך.
מריצים את הפקודה הבאה כדי לקבל את כתובת המאגר:
gcloud artifacts repositories describe REGISTRY_NAME \ --project=PROJECT_ID --location=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
REGISTRY_NAME: שם המרשם. -
PROJECT_ID: מזהה הפרויקט שבו נוצר המאגר. -
LOCATION: האזור שבו נוצר המאגר, למשלus-west2.
הפלט אמור להיראות כך:
Encryption: Google-managed key Repository Size: 0.000MB cleanupPolicyDryRun: true createTime: '2025-01-28T03:27:57.701672Z' dockerConfig: {} format: DOCKER mode: STANDARD_REPOSITORY name: projects/example-project-12345/locations/us-west2/repositories/test registryUri: us-west2-docker.pkg.dev/example-project-12345/test satisfiesPzi: true updateTime: '2025-01-28T03:27:57.701672Z' vulnerabilityScanningConfig: enablementConfig: INHERITED enablementState: SCANNING_ACTIVE lastEnableTime: '2025-01-28T03:27:49.385246079Z'משתמשים בערך
registryUriבפלט שלprivateRegistry.address.-
מריצים את הפקודה הבאה כדי לחלץ את אישור ה-CA של נקודת הקצה של Artifact Registry ולשמור אותו בקובץ בשם
ar-ca.pem:true | openssl s_client -connect REGION-docker.pkg.dev:443 -showcerts 2>/dev/null| sed -ne '/-BEGIN/,/-END/p' > ar-ca.pemממלאים את הקטע
privateRegistryבאופן הבא:privateRegistry: address: "REGISTRY_ADDRESS" credentials: fileRef: path: "CREDENTIAL_FILE_PATH" entry: "private-registry-creds" caCertPath: "CA_CERT_PATH" componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_KEY_PATH"מחליפים את מה שכתוב בשדות הבאים:
-
REGISTRY_ADDRESS: הערך שלregistryUri. -
CREDENTIAL_FILE_PATH: הנתיב המלא או היחסי של קובץadmin-creds.yaml. -
CA_CERT_PATH: הנתיב המלא או היחסי של קובץar-ca.pem. -
COMPONENT_ACCESS_KEY_PATH: הנתיב המלא או היחסי של קובץ המפתח של חשבון השירות לגישה לרכיב.
-