Instala clústeres de Anthos en equipos físicos mediante una duplicación de registro

En esta página, se muestra cómo instalar clústeres de Anthos en equipos físicos mediante una duplicación de registro en lugar de gcr.io. Para usar una duplicación de registro, debes configurar el entorno de ejecución del contenedor como containerd.

Las duplicaciones de registro se designan para duplicar todo gcr.io, no solo gcr.io/anthos-baremetal-release/, que es donde suelen almacenarse las imágenes de los clústeres de Anthos en equipos físicos.

Por ejemplo, si intentas extraer una imagen gcr.io/kubernetes-e2e-test-images/nautilus:1.0, solo funcionará si tu servicio de registro tiene esta imagen en la misma ruta, como 172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0. Todas las imágenes que no son gcr.io siguen funcionando con normalidad, por ejemplo, puedes extraer k8s.gcr.io/pause:3.1.

Usar una duplicación de registro te ayuda a ahorrar en tráfico y ofrece una alternativa al uso de gcr.io en caso de que necesites aislar los clústeres de las interrupciones de gcr.io. También te permite realizar tu propio análisis de vulnerabilidades.

Antes de comenzar

  • Debes tener un servidor de registro de contenedores configurado en tu red.
  • Si el servidor de registro ejecuta un certificado TLS privado, debes tener el archivo de autoridad certificadora (CA).
  • Si el servidor de registro necesita autenticación, debes tener las credenciales de acceso o el archivo de configuración de Docker adecuados.

Descarga todas las imágenes necesarias para los clústeres de Anthos en equipos físicos

Descarga la última versión de la herramienta bmctl y el paquete de imágenes de la página Descargar.

Sube imágenes de contenedor a tu servidor de registro

Ejecuta el siguiente comando para subir las imágenes del paquete de imágenes a tu servidor de registro:

[HTTPS_PROXY=http://PROXY_IP:PORT] ./bmctl push images \
    --source=./bmpackages_1.8.0.tar.xz \
    --private-registry=REGISTRY_IP:PORT \
    [--cacert=CERT_PATH] \
    [--need-credential=false]

Reemplaza lo siguiente:

  • PROXY_IP:PORT por la dirección IP y el puerto del proxy si necesitas un proxy para subir las imágenes de la estación de trabajo al servidor de registro
  • REGISTRY_IP:PORT por la dirección IP y el puerto del servidor de registro privado
  • CERT_PATH por la ruta del archivo de certificado de CA si tu servidor de registro usa un certificado TLS privado

Ingresa tu nombre de usuario y contraseña cuando se te solicite o selecciona un archivo de configuración de Docker. Si tu servidor de registro no requiere credenciales, especifica --need-credential=false.

Para obtener más información sobre el uso del comando bmctl push images, consulta:

bmctl push images --help

Usa tu propio espacio de nombres

Si deseas usar tu propio espacio de nombres en tu servidor de registro en lugar del espacio de nombres raíz, containerd puede extraer este subespacio de nombres si proporcionas el extremo de la API para tu registro privado en registryMirrors.endpoint. Por lo general, el extremo tiene el formato <REGISTRY_IP:PORT>/v2/<NAMESPACE>. Consulta la guía del usuario de tu registro privado para obtener detalles específicos.

Por ejemplo, si solo tienes acceso a 172.18.0.20:5000/test-namespace/, puedes usar el comando siguiente para subir todas las imágenes en el espacio de nombres test-namespace:

./bmctl push images \
    --source=./bmpackages_1.8.0.tar.xz \
    --private-registry=172.18.0.20:5000/test-namespace
    --username=<USERNAME>
    --password=<PASSWORD>
    --cacert <path/to/cert.crt>

Luego, en el archivo YAML del clúster, puedes ingresar lo siguiente para que el containerd se extraiga del espacio de nombres secundario:

registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace

Crea clústeres desde la duplicación del registro

A continuación, se muestra un archivo de configuración de clúster de muestra que usa tu propio servidor de duplicación de registro en lugar de gcr.io.

Si tu registro no requiere un certificado TLS privado, puedes dejar el campo caCertPath en blanco.

Si el servidor de registro no requiere un archivo de configuración de Docker de autenticación, puedes dejar el campo pullCredentialConfigPath en blanco.

Para obtener información detallada sobre la creación de clústeres, consulta Crea clústeres.

# Sample cluster config with registry mirror:
---
gcrKeyPath: /bmctl/bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: admin1
  namespace: cluster-admin1
spec:
  nodeConfig:
    containerRuntime: containerd
...

Todos los nodos de este clúster usarán esta duplicación de registro 172.18.0.20:5000 en lugar de gcr.io.

Conmutar por error a gcr.io

Si tu clúster no puede extraer la duplicación de tu registro, conmutará por error de forma automática a gcr.io. Por este motivo, se recomienda proporcionar un valor para gcrKeyPath en el archivo de configuración del clúster. Si no se proporciona un valor, tu clúster no puede extraer de gcr.io en caso de que tu duplicación de registro falle.

Si no necesitas la función de conmutación por error de extracción, no necesitas agregar una gcrKeyPath ni agregar gcr.io a la lista de permisos del proxy.

Actualiza extremos de registro duplicado, certificados y credenciales de extracción

Para actualizar los extremos de duplicación del registro, los certificados o las credenciales de extracción, sigue estos pasos:

  1. En el archivo de configuración del clúster, actualiza el extremo, el archivo del certificado de CA, la ruta de acceso del archivo de configuración de la credencial.

  2. Ejecuta el siguiente comando para aplicar los cambios:

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME por el nombre del clúster que deseas actualizar
    • ADMIN_KUBECONFIG por la ruta de acceso del archivo de configuración de su clúster de administrador