Usa Artifact Registry como un registro privado para las imágenes de cargas de trabajo

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

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

Configura un archivo de credenciales

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

  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 para el campo name, siempre que coincida con el valor que agregarás al campo privateRegistry.entry.

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

  4. Copia todo el contenido de la clave JSON y pégalo en el campo password. Asegúrate de encerrar el contenido de la clave JSON entre comillas simples, ya que el contenido 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"
    }
    '
    

Configura privateRegistry en el archivo de configuración del clúster de administrador

Para usar un registro privado, debes configurar la sección privateRegistry cuando crees el clúster de administrador. Después de crear el clúster, no puedes cambiar privateRegistry.address, pero los otros parámetros de configuración son mutables 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
    

    Reemplaza lo siguiente:

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

    El resultado es similar a este:

    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 extremo de Artifact Registry y guardarlo 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. Completa 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"
    

    Reemplaza lo siguiente:

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