Utiliser Artifact Registry comme registre privé pour les images de charges de travail

Cette page explique comment configurer un cluster administrateur Google Distributed Cloud (logiciel uniquement) pour VMware afin qu'il utilise Artifact Registry de Google comme registre Docker privé où vous pouvez stocker des images de charge de travail. Lorsque vous configurez un registre privé pour stocker des images de charge de travail, les images système Google Distributed Cloud sont également stockées dans le registre privé lorsque vous créez ou mettez à niveau des clusters.

Bien qu'Artifact Registry soit compatible avec plusieurs méthodes d'authentification, vous devez utiliser une clé de compte de service pour l'authentification afin d'utiliser Artifact Registry en tant que registre privé. Les étapes de cette page expliquent comment obtenir l'adresse, les identifiants et le certificat d'autorité de certification requis par la section privateRegistry du fichier de configuration du cluster d'administrateur.

Configurer un fichier d'identifiants

  1. Si vous n'avez pas configuré l'authentification pour le registre, suivez la procédure décrite dans la section Configurer l'authentification auprès d'Artifact Registry pour Docker pour configurer l'authentification à l'aide d'un compte de service. Vous devez utiliser un compte de service avec un fichier de clé JSON pour l'authentification.

  2. Créez un fichier de configuration des identifiants, admin-creds.yaml, comme illustré dans l'exemple suivant. La valeur username doit être "_json_key". Vous pouvez utiliser n'importe quelle valeur pour le champ name, à condition qu'elle corresponde à la valeur que vous ajouterez au champ privateRegistry.entry.

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. Dans le répertoire où se trouve le fichier de clé JSON du compte de service du Registre, exécutez cat sur le fichier de clé pour afficher le contenu.

  4. Copiez l'intégralité du contenu de la clé JSON, puis collez-le dans le champ password. Veillez à entourer le contenu de la clé JSON de guillemets simples, car il contient des guillemets doubles. Exemple :

    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"
    }
    '
    

Configurer privateRegistry dans le fichier de configuration du cluster d'administrateur

Pour utiliser un registre privé, vous devez configurer la section privateRegistry lorsque vous créez le cluster d'administration. Une fois le cluster créé, vous ne pouvez pas modifier privateRegistry.address, mais les autres paramètres sont modifiables et vous pouvez les mettre à jour si nécessaire.

  1. Exécutez la commande suivante pour obtenir l'adresse du Registre:

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

    Remplacez les éléments suivants :

    • REGISTRY_NAME: nom du Registre.
    • PROJECT_ID: ID du projet dans lequel le référentiel a été créé.
    • LOCATION: région dans laquelle le Registre a été créé, par exemple us-west2.

    Le résultat ressemble à ce qui suit :

    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'
    

    Utilisez la valeur registryUri dans la sortie pour privateRegistry.address.

  2. Exécutez la commande suivante pour extraire le certificat CA du point de terminaison Artifact Registry et l'enregistrer dans un fichier nommé 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
    
  3. Remplissez la section privateRegistry comme suit:

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

    Remplacez les éléments suivants :

    • REGISTRY_ADDRESS: valeur pour registryUri.
    • CREDENTIAL_FILE_PATH: chemin d'accès complet ou relatif du fichier admin-creds.yaml.
    • CA_CERT_PATH: chemin d'accès complet ou relatif du fichier ar-ca.pem.
    • COMPONENT_ACCESS_KEY_PATH: chemin d'accès complet ou relatif du fichier de clé du compte de service d'accès au composant.