Artifact Registry als private Registry für Arbeitslast-Images verwenden

Auf dieser Seite wird beschrieben, wie Sie einen Administratorcluster von Google Distributed Cloud (nur Software) für VMware so konfigurieren, dass die Artifact Registry von Google als private Docker-Registry verwendet wird, in der Sie Arbeitslast-Images speichern können. Wenn Sie eine private Registry zum Speichern von Arbeitslast-Images konfigurieren, werden die Google Distributed Cloud-System-Images auch in der privaten Registry gespeichert, wenn Sie Cluster erstellen oder aktualisieren.

Artifact Registry unterstützt zwar mehrere verschiedene Authentifizierungsmethoden, Sie müssen jedoch einen Dienstkontoschlüssel für die Authentifizierung verwenden, um Artifact Registry als private Registry zu nutzen. In den Schritten auf dieser Seite wird beschrieben, wie Sie die Adresse, die Anmeldedaten und das CA-Zertifikat abrufen, die für den Abschnitt privateRegistry in der Konfigurationsdatei des Administratorclusters erforderlich sind.

Datei mit Anmeldedaten konfigurieren

  1. Wenn Sie die Authentifizierung für die Registry noch nicht konfiguriert haben, folgen Sie der Anleitung unter Authentifizierung bei Artifact Registry für Docker konfigurieren, um die Authentifizierung mit einem Dienstkonto zu konfigurieren. Sie müssen ein Dienstkonto mit einer JSON-Schlüsseldatei für die Authentifizierung verwenden.

  2. Erstellen Sie eine Konfigurationsdatei für Anmeldedaten, admin-creds.yaml, wie im folgenden Beispiel gezeigt. Der username muss "_json_key" lauten. Sie können einen beliebigen Wert für das Feld name verwenden, sofern er mit dem Wert übereinstimmt, den Sie dem Feld privateRegistry.entry hinzufügen.

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. Führen Sie im Verzeichnis, in dem sich die JSON-Schlüsseldatei für das Dienstkonto der Registry befindet, cat für die Schlüsseldatei aus, um den Inhalt auszugeben.

  4. Kopieren Sie den gesamten Inhalt des JSON-Schlüssels und fügen Sie ihn in das Feld password ein. Achten Sie darauf, den Inhalt des JSON-Schlüssels in einfache Anführungszeichen zu setzen, da der Inhalt doppelte Anführungszeichen enthält. Beispiel:

    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 in der Konfigurationsdatei für den Administratorcluster konfigurieren

Wenn Sie eine private Registry verwenden möchten, müssen Sie beim Erstellen des Administratorclusters den Abschnitt privateRegistry konfigurieren. Nachdem der Cluster erstellt wurde, können Sie privateRegistry.address nicht mehr ändern. Die anderen Einstellungen sind jedoch veränderbar und können bei Bedarf aktualisiert werden.

  1. Führen Sie den folgenden Befehl aus, um die Registry-Adresse abzurufen:

    gcloud artifacts repositories describe REGISTRY_NAME \
        --project=PROJECT_ID
        --location=REGION
    

    Ersetzen Sie Folgendes:

    • REGISTRY_NAME: der Name der Registrierung.
    • PROJECT_ID: die ID des Projekts, in dem die Registrierung erstellt wurde.
    • LOCATION: die Region, in der die Registry erstellt wurde, z. B. us-west2.

    Die Ausgabe sieht etwa so aus:

    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'
    

    Verwenden Sie den Wert registryUri in der Ausgabe für privateRegistry.address.

  2. Führen Sie den folgenden Befehl aus, um das CA-Zertifikat des Artifact Registry-Endpunkts zu extrahieren und in einer Datei namens ar-ca.pem zu speichern:

    true | openssl s_client -connect REGION-docker.pkg.dev:443 -showcerts 2>/dev/null| sed -ne '/-BEGIN/,/-END/p' > ar-ca.pem
    
  3. Füllen Sie den Abschnitt privateRegistry so aus:

    privateRegistry:
      address: "REGISTRY_ADDRESS"
      credentials:
        fileRef:
          path: "CREDENTIAL_FILE_PATH"
          entry: "private-registry-creds"
      caCertPath: "CA_CERT_PATH"
    componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_KEY_PATH"
    

    Ersetzen Sie Folgendes:

    • REGISTRY_ADDRESS: Der Wert registryUri.
    • CREDENTIAL_FILE_PATH: Der vollständige oder relative Pfad der Datei admin-creds.yaml.
    • CA_CERT_PATH: Der vollständige oder relative Pfad der Datei ar-ca.pem.
    • COMPONENT_ACCESS_KEY_PATH: Der vollständige oder relative Pfad zur Schlüsseldatei des Dienstkontos für den Komponentenzugriff.