Integración de Registros de Imágenes Privados en KubeSphere con Docker Hub y Harbor

Para gestionar despliegues eficientes en Kubernetes a través de KubeSphere, es fundamental integrar repositorios de imágenes privados. Esto permite utilizar contenedores personalizados que no están disponibles en registros públicos, manteniendo la seguridad y el control sobre el código propietario.

Requisitos Previos

Antes de comenzar, asegúrese de contar con un entorno configurado en KubeSphere que incluya:

  • Un Enterprise Space (Espacio de trabajo corporativo).
  • Un proyecto activo dentro de dicho espacio.
  • Un usuario con permisos suficientes (rol de operator o superior) asignado al proyecto para gestionar configuraciones y secretos.

Configuración de Secretos de Registro (Image Pull Secrets)

En Kubernetes, para que el clúster pueda autenticarse y descargar imágenes de un servidor privado, se requiere un objeto de tipo Secret. En la interfaz de KubeSphere, este proceso se gestiona desde el apartado de Configuración.

Paso 1: Acceso al módulo de Secretos

Inicie sesión en el panel de KubeSphere, seleccione su proyecto y navegue hasta Configuración de la Aplicación > Secretos (o Diccionario de confidencialidad según la traducción). Haga clic en el botón Crear para iniciar el asistenet.

Paso 2: Definición de metadatos

Asigne un nombre identificable al secreto, por ejemplo repo-auth-token. Opcionalmente, puede habilitar el modo Editar YAML si prefiere definir el recurso mediante código de forma directa.

Paso 3: Parámetros del Registro

Seleccione el tipo de secreto como Información del Registro de Imágenes. Deberá completar los siguientse campos técnicos:

  • Dirección del Registro: El dominio o IP del servidor donde se alojan las imágenes.
  • Usuario: Credencial de acceso al repositorio.
  • Contraseña: Token de acceso o contraseña del usuario.
  • Email: Dirección de correo electrónico asociada (opcional).

Integración con Docker Hub

Si utiliza Docker Hub como repositorio privado, siga estos pasos específicos:

  1. Establezca la dirección del servidor como docker.io.
  2. Introduzca sus credenciales personales de Docker ID.
  3. Utilice el botón de Validar para confirmar que la conexión es exitosa antes de guardar el recurso.

Integración con Harbor (Configuración HTTP)

Harbor es una solución robusta para el almacenamiento de artefactos en la nube. Si su instancia de Harbor no utiliza certificados SSL válidos (HTTPS), debe configurar los nodos de su clúster para confiar en dicha conexión.

Modificación del Demonio de Docker

Debe editar la configuración de Docker en cada nodo del clúster. Si utiliza archivos de drop-in para systemd, modifique el archivo de opciones (por ejemplo, /etc/systemd/system/docker.service.d/custom-options.conf):


[Service]
Environment="DOCKER_OPTS=--insecure-registry=10.10.20.50 --registry-mirror=https://mirror.gcr.io"

Nota: Sustituya 10.10.20.50 por la dirección IP real de su servidor Harbor.

Reinicio del Servicio

Tras modificar los archivos de sistema, aplique los cambios y reinicie el motor de contenedores:


sudo systemctl daemon-reload
sudo systemctl restart docker

Registro en la Consola

Regrese a la interfaz de KubeSphere y, al crear el secreto, elija el tipo Información del Registro utilizando la IP del servidor Harbor configurado previamente. Si planea utliizar un nombre de dominio interno (FQDN) en lugar de una IP, asegúrese de que CoreDNS esté configurado correctamente en el clúster para resolver dicha dirección.

Uso del Secreto en Cargas de Trabajo

Una vez que el secreto ha sido creado, estará disponible para su uso en Deployments, StatefulSets o Jobs. Al configurar un contenedor:

  1. Vaya a la sección de selección de imagen.
  2. En el menú desplegable de registros, elija el secreto que creó (por ejemplo, repo-auth-token).
  3. Escriba el nombre de la imagen y el tag correspondiente (ej. mi-proyecto/api-backend:v1.0).

El clúster utilizará automáticamente las credenciales almacenadas para autenticarse contra el registro durante el despliegue del Pod.

Etiquetas: KubeSphere Harbor Docker Kubernetes-Security DevOps

Publicado el 7-14 17:21