Usar o Artifact Registry como um registro particular para imagens de carga de trabalho

Nesta página, descrevemos como configurar um cluster de administrador do Google Distributed Cloud (somente software) para VMware para usar o Artifact Registry do Google como o registro privado do Docker em que você pode armazenar imagens de carga de trabalho. Quando você configura um registro particular para armazenar imagens de carga de trabalho, as imagens do sistema do Google Distributed Cloud também são armazenadas no registro particular ao criar ou fazer upgrade de clusters.

Embora o Artifact Registry seja compatível com vários métodos de autenticação, é necessário usar uma chave de conta de serviço para autenticação e usar o Artifact Registry como um registro particular. As etapas nesta página explicam como conseguir o endereço, as credenciais e o certificado da CA que a seção privateRegistry no arquivo de configuração do cluster de administrador exige.

Configurar um arquivo de credenciais

  1. Se você não tiver configurado a autenticação para o registro, siga as etapas em Configurar a autenticação no Artifact Registry para Docker e use uma conta de serviço. É necessário usar uma conta de serviço com um arquivo de chave JSON para autenticação.

  2. Crie um arquivo de configuração de credenciais, admin-creds.yaml, conforme mostrado no exemplo a seguir. O username precisa ser "_json_key". É possível usar qualquer valor para o campo name, desde que ele corresponda ao valor que você vai adicionar ao campo privateRegistry.entry.

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. No diretório em que o arquivo de chave JSON da conta de serviço do registro está localizado, execute cat no arquivo de chave para gerar o conteúdo.

  4. Copie todo o conteúdo da chave JSON e cole no campo password. Coloque o conteúdo da chave JSON entre aspas simples, já que ele contém aspas duplas. 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 arquivo de configuração do cluster de administrador.

Para usar um registro particular, configure a seção privateRegistry ao criar o cluster de administrador. Depois que o cluster é criado, não é possível mudar o privateRegistry.address, mas as outras configurações são mutáveis e podem ser atualizadas, se necessário.

  1. Execute o comando a seguir para receber o endereço do registro:

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

    Substitua:

    • REGISTRY_NAME: o nome do registro.
    • PROJECT_ID: o ID do projeto em que o registro foi criado.
    • LOCATION: a região em que o registro foi criado, como us-west2.

    O resultado será assim:

    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 na saída para privateRegistry.address.

  2. Execute o comando a seguir para extrair o certificado da CA do endpoint do Artifact Registry e salve-o em um arquivo chamado 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 seção privateRegistry da seguinte maneira:

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

    Substitua:

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