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

Esta página descreve como configurar um Google Distributed Cloud (somente software) para o cluster de administrador do 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 quando você cria ou faz upgrade de clusters.

Embora o Artifact Registry ofereça suporte a vários métodos de autenticação, é necessário usar uma chave de conta de serviço para autenticação para usar o Artifact Registry como um registro privado. As etapas desta página explicam como conseguir o endereço, as credenciais e o certificado de AC 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 para configurar a autenticação usando 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 abaixo. 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. Cerifique-se de que o conteúdo da chave JSON esteja entre aspas simples, já que o conteúdo tem 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"
    }
    '
    

Configurar 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 conferir 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 de AC do endpoint do Artifact Registry e salvá-lo 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.