En esta página se explica cómo configurar un servidor de registro de contenedores para Google Distributed Cloud (solo software) para VMware.
Esta página está dirigida a administradores, arquitectos y operadores que configuran, monitorizan y gestionan la infraestructura tecnológica. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Información general
De forma predeterminada, durante la creación o la actualización de un clúster, Google Distributed Cloud extrae imágenes del sistema de gcr.io/gke-on-prem-release
mediante la cuenta de servicio de acceso a componentes.
También 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 inicies el servidor del registro de contenedores, debes proporcionar un certificado y una clave. El certificado puede estar firmado por una autoridad de certificación (CA) pública o puede tener una firma automática.
Crear un servidor de registro de contenedores
Para saber cómo crear un servidor de registro de contenedores, consulta Ejecutar un registro accesible externamente en la documentación de Docker.
Configurar el registro
Para usar un registro de contenedores privado, puedes usar la gkectl
herramienta de línea de comandos o Terraform.
gkectl
Añade la sección
privateRegistry
al archivo de configuración del clúster de administradores antes de crear el clúster.Cuando se rellena esta sección:
Cuando ejecutas el comando
gkectl prepare
antes de crear o actualizar un clúster, el comando extrae las imágenes del archivo tar especificado en el campobundlePath
del archivo de configuración del clúster de administrador y sube las imágenes a tu servidor de registro privado.Durante la creación o la actualización del clúster, las imágenes del sistema se extraen del servidor de registro privado.
Si tu red está detrás de un servidor proxy, rellena la sección
proxy
.
Terraform
Sigue los pasos de la pestaña Terraform en Crear un clúster de administrador para rellenar el archivo de configuración del clúster de administrador.
Añade lo siguiente al archivo de configuración del clúster de administrador:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }
Haz los cambios siguientes:
ADDRESS
: la dirección IP o el nombre de dominio completo (FQDN) del equipo que ejecuta tu registro privado.CA_CERT
: la clave pública del certificado de la AC del registro privado.
Si tu red está detrás de un servidor proxy, añade lo siguiente:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }
Haz los cambios siguientes:
PROXY_SERVER_ADDRESS
: dirección HTTP de tu servidor proxy. Incluya el número de puerto aunque sea el mismo que el puerto predeterminado del esquema.BYPASS_LIST
: lista separada por comas de direcciones IP, intervalos 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.
Sigue los pasos que se indican en la pestaña Terraform de la sección Crear un clúster de administrador para verificar el archivo de configuración y el plan de Terraform y, a continuación, crear el clúster de arranque.
Cuando ejecutas el comando
gkectl register bootstrap
,gkectl
te pide que introduzcas el nombre de usuario y 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 de los clústeres avanzados y del paquete completo
Hay dos paquetes de Google Distributed Cloud disponibles: completo y normal. Para determinar qué paquete se encuentra en tu estación de trabajo de administrador, consulta el campo bundlePath
de tu archivo de configuración de clúster de administrador. Si el nombre del archivo termina en -full
, el paquete completo estará en tu estación de trabajo de administrador. Si el nombre de archivo no termina en -full
, el paquete normal se encuentra en tu estación de trabajo de administrador.
Si has creado tu estación de trabajo de administrador con el comando gkeadm
, este 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 la agrupación avanzada está habilitada, hay limitaciones al 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, sigue estos pasos:
- Descargue el paquete de tamaño normal en su estación de trabajo de administrador.
- 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
descarga imágenes degcr.io/gke-on-prem-release
en lugar del archivo tar. Sin embargo, el comando sí sube 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 la actualización del clúster.
Diferencias entre los clústeres normales y los avanzados
Los clústeres avanzados presentan varias diferencias clave con respecto a 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. Este cambio es el esperado, aunque las imágenes se extraigan de tu servidor de registro privado. - Las extracciones de imágenes usan las credenciales del archivo
/etc/containerd/config.toml
de cada máquina que se conecta al registro privado, en lugar de las del secretoprivate-registry-creds
del clúster. - En el caso de todas las imágenes de
gcr.io
, el clúster intenta extraerlas primero del registro privado. Si la imagen no está en el registro privado, el sistema la extrae degcr.io
a través de Internet. Para detener esta alternativa, configuranoProxy
o usa reglas de cortafuegos para bloquear el tráfico degcr.io
.
Para comprobar que las imágenes se extraen de la fuente correcta, consulta Verificar que las imágenes se extraen del servidor de registro.
Verificar que las imágenes se extraen de tu servidor de registro
La forma de verificar 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}"
Sustituye
ADMIN_CLUSTER_KUBECONFIG
por la ruta del archivo kubeconfig de tu clúster de administrador.La salida de este comando muestra todas las imágenes de tu clúster. Puede verificar que todas las imágenes de Google Distributed Cloud proceden de su propio servidor de registro.
Si el clúster avanzado está habilitado, sigue estos pasos:
Para determinar si
containerd
está obteniendo imágenes de tu registro local, examina el contenido de un archivo llamadoconfig.toml
, tal como se muestra en los siguientes pasos:- Inicia sesión en un nodo y examina el contenido del archivo
/etc/containerd/config.toml
. Comprueba el campo
plugins."io.containerd.grpc.v1.cri".registry.mirrors
del archivoconfig.toml
para ver si tu servidor de registro aparece en el campoendpoint
.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"] ...
Si tu réplica de registro aparece en el campo
endpoint
, significa que el nodo está obteniendo imágenes de tu réplica de registro en lugar de hacerlo de Artifact Registry.
- Inicia sesión en un nodo y examina el contenido del archivo