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 Google Cloud el contenido de, consulta Roles y tareas comunes del usuario de GKE.

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 manera 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 no seguros. Cuando inicias 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 registro de contenedores

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

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

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

    • Cuando ejecutas el gkectl prepare comando antes de la creación o actualización del clúster, el comando extrae las imágenes del archivo tar que se especifica en el bundlePath campo del 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.

  2. Si la red está detrás de un servidor proxy, completa la proxy sección.

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.

  1. 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 FQDN (nombre de dominio completamente calificado) de la máquina que ejecuta tu registro privado.

    • CA_CERT: Los datos del certificado de la AC de la clave pública, pero con todas las líneas nuevas reemplazadas por la cadena \n.

    1. Ejecuta el siguiente comando para reemplazar los saltos de línea por \n:

      awk 'ORS="\\n" {print}' PUBLIC_KEY_PATH
      

      Reemplaza PUBLIC_KEY_PATH por la ruta de acceso a la clave pública.

    2. Copia el resultado del comando anterior y pégalo en la variable de marcador de posición CA_CERT.

  2. Si la red está detrás de un servidor proxy, agrega lo siguiente:

    proxy {
      url: "PROXY_SERVER_ADDRESS"
      no_proxy: "BYPASS_LIST"
    }
    

    Reemplaza lo siguiente:

    • PROXY_SERVER_ADDRESS: La dirección HTTP de tu servidor proxy. Incluye el número de puerto incluso si es el mismo que el puerto predeterminado del esquema.

    • BYPASS_LIST: Es una lista separada por comas de direcciones IP, rangos de direcciones IP, nombres de host y nombres de dominio que no deben pasar por el servidor proxy.

    Ejemplo:

    url: "http://my-proxy.example.local:80"
    no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"
    

    Cuando Google Distributed Cloud envía una solicitud a una de estas direcciones, hosts o dominios, la solicitud omite el servidor proxy y se envía directamente al destino.

  1. 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 bootstrap.

  2. 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 clústeres avanzados y el paquete completo

Hay dos paquetes de Google Distributed Cloud disponibles: completo y normal. Para determinar qué paquete está en tu estación de trabajo de administrador, consulta el campo bundlePath en el archivo de configuración del clúster de administrador. Si el nombre de archivo termina en -full, el paquete completo está 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, el comando 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 el clúster avanzado está habilitado, 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 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.

Diferencias entre clústeres normales y clústeres avanzados

El clúster avanzado presenta varias diferencias clave en comparación con los clústeres estándar:

  • Cuando usas un registro privado, las imágenes parecen extraerse de gcr.io, no del nombre de host de tu registro privado. Se espera este cambio, aunque las imágenes se extraen de tu servidor de registro privado.
  • Las extracciones de imágenes usan credenciales del archivo /etc/containerd/config.toml en cada máquina que se conecta al registro privado, en lugar del secreto private-registry-creds dentro del clúster.
  • Para todas las imágenes de gcr.io, el clúster primero intenta extraerlas del registro privado. Si la imagen no está en el registro privado, el sistema la extrae de gcr.io a través de Internet. Para detener esta reserva, configura noProxy o usa reglas de firewall para bloquear el tráfico de gcr.io.

Para verificar que las imágenes se extraigan de la fuente correcta, consulta Verifica que las imágenes se extraigan de tu servidor de registro.

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

La forma en que verificas que las imágenes se extraen 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:

    Puedes determinar si containerd extrae imágenes de tu registro local examinando el contenido de un archivo llamado config.toml, como se muestra en los siguientes pasos:

    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 config.toml archivo para ver si tu servidor de registro aparece en el endpoint campo.

      A continuación, se muestra un fragmento 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.