Use o Artifact Registry como um registo privado para imagens de cargas de trabalho

Esta página descreve como configurar um Google Distributed Cloud (apenas software) para que o cluster de administrador do VMware use o Artifact Registry da Google como o registo Docker privado onde pode armazenar imagens de cargas de trabalho. Quando configura um registo privado para armazenar imagens de cargas de trabalho, as imagens do sistema do Google Distributed Cloud também são armazenadas no registo privado quando cria ou atualiza clusters.

Embora o Artifact Registry suporte vários métodos de autenticação, tem de usar uma chave de conta de serviço para a autenticação para usar o Artifact Registry como um registo privado. Os passos nesta página explicam como obter o endereço, as credenciais e o certificado de AC que a secção privateRegistry no ficheiro de configuração do cluster de administrador requer.

Configure um ficheiro de credenciais

  1. Se não tiver configurado a autenticação para o registo, siga os passos em Configurar a autenticação para o Artifact Registry para o Docker para configurar a autenticação através de uma conta de serviço. Tem de usar uma conta de serviço com um ficheiro de chave JSON para autenticação.

  2. Crie um ficheiro de configuração de credenciais, admin-creds.yaml, conforme mostrado no exemplo seguinte. O username tem de ser "_json_key". Pode usar qualquer valor para o campo name, desde que corresponda ao valor que vai adicionar ao campo privateRegistry.entry.

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. No diretório onde se encontra o ficheiro de chave JSON da conta de serviço do registo, execute cat no ficheiro de chave para gerar o conteúdo.

  4. Copie todo o conteúdo da chave JSON e cole-o no campo password. Certifique-se de que coloca o conteúdo da chave JSON entre aspas simples, uma vez que o conteúdo contém aspas duplas. Por exemplo:

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

Configure privateRegistry no ficheiro de configuração do cluster de administração

Para usar um registo privado, tem de configurar a secção privateRegistry quando cria o cluster de administrador. Depois de criar o cluster, não pode alterar o privateRegistry.address, mas as outras definições são mutáveis e pode atualizá-las, se necessário.

  1. Execute o seguinte comando para obter o endereço do registo:

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

    Substitua o seguinte:

    • REGISTRY_NAME: o nome da base de dados de registo.
    • PROJECT_ID: o ID do projeto no qual o registo foi criado.
    • LOCATION: a região em que o registo foi criado, como us-west2.

    O resultado é semelhante ao seguinte:

    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'
    

    Use o valor registryUri no resultado para privateRegistry.address.

  2. Execute o seguinte comando para extrair o certificado de AC do ponto final do Artifact Registry e guardá-lo num ficheiro denominado 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. Preencha a secção privateRegistry da seguinte forma:

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

    Substitua o seguinte:

    • REGISTRY_ADDRESS: o valor registryUri.
    • CREDENTIAL_FILE_PATH: o caminho completo ou relativo do ficheiro admin-creds.yaml.
    • CA_CERT_PATH: o caminho completo ou relativo do ficheiro ar-ca.pem.
    • COMPONENT_ACCESS_KEY_PATH: o caminho completo ou relativo do ficheiro de chave da conta de serviço de acesso ao componente.