Utilizzare Artifact Registry come registro privato per le immagini dei workload

Questa pagina descrive come configurare un cluster di amministrazione Google Distributed Cloud (solo software) per VMware in modo che utilizzi Artifact Registry di Google come registro Docker privato in cui puoi archiviare le immagini dei carichi di lavoro. Quando configuri un registro privato per archiviare le immagini dei carichi di lavoro, le immagini di sistema di Google Distributed Cloud vengono archiviate anche nel registro privato quando crei o esegui l'upgrade dei cluster.

Sebbene Artifact Registry supporti diversi metodi di autenticazione, devi utilizzare una chiave dell'account di servizio per l'autenticazione per utilizzare Artifact Registry come registro privato. I passaggi descritti in questa pagina spiegano come ottenere l'indirizzo, le credenziali e il certificato CA richiesti dalla privateRegistry sezione nel file di configurazione del cluster di amministrazione.

Configurare un file di credenziali

  1. Se non hai configurato l'autenticazione per il registro, segui i passaggi descritti in Configurare l'autenticazione ad Artifact Registry per Docker per configurare l'autenticazione utilizzando un account di servizio. Per l'autenticazione devi utilizzare un account di servizio con un file della chiave JSON.

  2. Crea un file di configurazione delle credenziali, admin-creds.yaml, come mostrato nell'esempio seguente. Il valore di username deve essere "_json_key". Puoi utilizzare qualsiasi valore per il campo name, purché corrisponda al valore che aggiungerai al campo privateRegistry.entry.

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. Nella directory in cui si trova il file della chiave JSON del account di servizio del registro, esegui cat sul file della chiave per visualizzarne i contenuti.

  4. Copia l'intero contenuto della chiave JSON e incollalo nel campo password. Assicurati di racchiudere il contenuto della chiave JSON tra virgolette singole, poiché il contenuto contiene virgolette doppie. Ad esempio:

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

Configurare privateRegistry nel file di configurazione del cluster di amministrazione

Per utilizzare un registro privato, devi configurare la sezione privateRegistry quando crei il cluster di amministrazione. Dopo aver creato il cluster, non puoi modificare privateRegistry.address, ma le altre impostazioni sono modificabili e puoi aggiornarle, se necessario.

  1. Esegui il comando seguente per ottenere l'indirizzo del registro:

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

    Sostituisci quanto segue:

    • REGISTRY_NAME: il nome del registro.
    • PROJECT_ID: l'ID del progetto in cui è stato creato il registro.
    • LOCATION: la regione in cui è stato creato il registro, ad esempio us-west2.

    L'output è simile al seguente:

    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'
    

    Utilizza il valore registryUri nell'output per privateRegistry.address.

  2. Esegui il comando seguente per estrarre il certificato CA dell'endpoint di Artifact Registry e salvarlo in un file denominato 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. Compila la sezione privateRegistry come segue:

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

    Sostituisci quanto segue:

    • REGISTRY_ADDRESS: il valore registryUri.
    • CREDENTIAL_FILE_PATH: il percorso completo o relativo del file admin-creds.yaml.
    • CA_CERT_PATH: il percorso completo o relativo del file ar-ca.pem.
    • COMPONENT_ACCESS_KEY_PATH: il percorso completo o relativo del file della chiave dell'account di servizio di accesso ai componenti.