Usar Artifact Registry como registro privado de imágenes de cargas de trabajo

En esta página se describe cómo configurar un Google Distributed Cloud (solo software) para que un clúster de administrador de VMware use Artifact Registry de Google como registro privado de Docker en el que almacenar imágenes de cargas de trabajo. Cuando configuras un registro privado para almacenar imágenes de cargas de trabajo, las imágenes del sistema de Google Distributed Cloud también se almacenan en el registro privado cuando creas o actualizas clústeres.

Aunque Artifact Registry admite varios métodos de autenticación, debes usar una clave de cuenta de servicio para autenticarte y usar Artifact Registry como registro privado. En esta página se explica cómo obtener la dirección, las credenciales y el certificado de AC que se requieren en la sección privateRegistry del archivo de configuración del clúster de administrador.

Configurar un archivo de credenciales

  1. Si no has configurado la autenticación para el registro, sigue los pasos que se indican en Configurar la autenticación en Artifact Registry para Docker para configurar la autenticación con una cuenta de servicio. Para la autenticación, debes usar una cuenta de servicio con un archivo de clave JSON.

  2. Crea un archivo de configuración de credenciales, admin-creds.yaml, como se muestra en el siguiente ejemplo. El username debe ser "_json_key". Puedes usar cualquier valor en el campo name, siempre que coincida con el valor que añadas al campo privateRegistry.entry.

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. En el directorio donde se encuentra el archivo de clave JSON de la cuenta de servicio del registro, ejecuta cat en el archivo de clave para mostrar el contenido.

  4. Copia todo el contenido de la clave JSON y pégalo en el campo password. Asegúrate de incluir el contenido de la clave JSON entre comillas simples, ya que contiene comillas dobles. Por ejemplo:

    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 en el archivo de configuración del clúster de administrador

Para usar un registro privado, debe configurar la sección privateRegistry al crear el clúster de administrador. Una vez creado el clúster, no podrás cambiar el privateRegistry.address, pero el resto de los ajustes se pueden modificar y puedes actualizarlos si es necesario.

  1. Ejecuta el siguiente comando para obtener la dirección del registro:

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

    Haz los cambios siguientes:

    • REGISTRY_NAME: el nombre del registro.
    • PROJECT_ID: el ID del proyecto en el que se creó el registro.
    • LOCATION: la región en la que se creó el registro, como us-west2.

    El resultado debería ser similar al siguiente:

    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'
    

    Usa el valor de registryUri en el resultado de privateRegistry.address.

  2. Ejecuta el siguiente comando para extraer el certificado de la AC del endpoint de Artifact Registry y guárdalo en un archivo llamado 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. Rellena la sección privateRegistry de la siguiente manera:

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

    Haz los cambios siguientes:

    • REGISTRY_ADDRESS: el valor de registryUri.
    • CREDENTIAL_FILE_PATH: la ruta completa o relativa del archivo admin-creds.yaml.
    • CA_CERT_PATH: la ruta completa o relativa del archivo ar-ca.pem.
    • COMPONENT_ACCESS_KEY_PATH: la ruta completa o relativa del archivo de clave de la cuenta de servicio de acceso al componente.