Configura un registro de contenedor privado

En esta página, se explica cómo configurar un servidor de registro de contenedores existente para Google Distributed Cloud (solo software) para VMware.

Esta página está destinada a administradores, arquitectos y operadores que configuran, supervisan y administran la infraestructura tecnológica. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.

Descripción general

De forma predeterminada, durante la creación o actualización del clúster, Google Distributed Cloud extrae imágenes del sistema de gcr.io/gke-on-prem-release con la cuenta de servicio de acceso a componentes. De forma opcional, puedes proporcionar tu propio servidor de registro de contenedores para que las imágenes del sistema se extraigan de tu servidor de registro privado.

Google Distributed Cloud no admite registros de contenedores sin protección. Cuando inicies el servidor de registro de contenedores, debes proporcionar un certificado y una clave. Una autoridad certificada (CA) pública puede firmar el certificado, o este se puede autofirmar.

Crea un servidor de Container Registry

Para obtener información sobre cómo crear un servidor de registro de contenedores, consulta Ejecuta un registro accesible de forma externa en la documentación de Docker.

Configura el registro

Para usar un registro de contenedores privado, puedes usar la herramienta de línea de comandos de gkectl o Terraform.

gkectl

Agrega la sección privateRegistry al archivo de configuración del clúster de administrador antes de crear el clúster.

Cuando se completa esta sección, ocurre lo siguiente:

  • Cuando ejecutas el comando gkectl prepare antes de crear o actualizar el clúster, el comando extrae las imágenes del archivo tar que se especifica en el campo bundlePath de tu archivo de configuración del clúster de administrador y envía las imágenes a tu servidor de registro privado.

  • Durante la creación o actualización del clúster, las imágenes del sistema se extraen de tu servidor de registro privado.

Terraform

  1. Sigue los pasos de la pestaña Terraform en Crea un clúster de administrador para completar el archivo de configuración del clúster de administrador.

  2. Agrega lo siguiente al archivo de configuración del clúster de administrador:

    private_registry_config {
      address = "ADDRESS"
      ca_cert = "CA_CERT"
    }
    

    Reemplaza lo siguiente:

    • "ADDRESS": La dirección IP o el FQDN (nombre de dominio completamente calificado) de la máquina que ejecuta tu registro privado.

    • "CA_CERT": Es la clave pública del certificado de la CA para el registro privado.

  3. Continúa con los pasos de la pestaña Terraform en Crea un clúster de administrador para verificar el archivo de configuración y el plan de Terraform, y, luego, crear el clúster de arranque.

  4. Cuando ejecutas el comando gkectl register bootstrap, gkectl te solicita que ingreses el nombre de usuario y, luego, la contraseña del registro privado.

Durante la creación del clúster, las imágenes del sistema se extraen de tu servidor de registro privado.

Limitaciones con los clústeres avanzados y el paquete completo

Hay dos paquetes de Google Distributed Cloud disponibles: completo y regular. Para determinar qué paquete se encuentra en tu estación de trabajo de administrador, verifica el campo bundlePath en el archivo de configuración del clúster de administrador. Si el nombre del archivo termina en -full, el paquete completo se encuentra en tu estación de trabajo de administrador. Si el nombre de archivo no termina en -full, el paquete normal está en tu estación de trabajo de administrador.

Si creaste tu estación de trabajo de administrador con el comando gkeadm, este crea la VM de la estación de trabajo de administrador con el paquete completo y configura el campo bundlePath en el archivo de configuración del clúster de administrador.

Si está habilitado el clúster avanzado, existen limitaciones para usar el paquete completo con un registro privado, como se indica a continuación:

  • Versión 1.31: El paquete completo no es compatible con un registro privado. Para usar un registro privado en un clúster avanzado, haz lo siguiente:

    1. Descarga el paquete de tamaño normal en tu estación de trabajo de administrador.
    2. Actualiza el nombre de archivo en el campo bundlePath del archivo de configuración del clúster de administrador.
  • Versión 1.32: Se admite el uso del paquete completo, pero el comando gkectl prepare extrae imágenes de gcr.io/gke-on-prem-release en lugar del archivo tar. Sin embargo, el comando sí envía las imágenes a tu registro privado para que las imágenes del sistema se extraigan de tu registro privado durante la creación o actualización del clúster.

Verifica que las imágenes se extraigan de tu servidor de registro

La forma en que verificas que las imágenes se extraigan de tu servidor de registro depende de si el clúster avanzado está habilitado.

  • Si el clúster avanzado no está habilitado, ejecuta el siguiente comando:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
        --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"
    

    Reemplaza ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster de administrador.

    El resultado de este comando muestra todas las imágenes de tu clúster. Puedes verificar que todas las imágenes de Google Distributed Cloud provengan de tu propio servidor de registro.

  • Si el clúster avanzado está habilitado, sigue estos pasos:

    Para determinar si containerd extrae imágenes de tu registro local, examina los contenidos de un archivo llamado config.toml como se muestra en los pasos siguientes:

    1. Accede a un nodo y examina el contenido del archivo /etc/containerd/config.toml.
    2. Verifica el campo plugins."io.containerd.grpc.v1.cri".registry.mirrors del archivo config.toml para ver si el servidor de registro aparece en el campo endpoint.

      El siguiente es un extracto de un archivo config.toml de ejemplo.

      version = 2
      root = "/var/lib/containerd"
      state = "/run/containerd"
      ...
      [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls]
      ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt'
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
      endpoint = ["http://privateregistry.io", "http://privateregistry2.io"]
      ...
      
    3. Si la duplicación del registro aparece en el campo endpoint, el nodo extrae imágenes de la duplicación del registro en lugar de Artifact Registry.