Utilizar un Docker Registry con autenticación junto con Kubernetes

Tiempo de lectura: 2 minutos

Si tu Docker Registry requiere autenticación con un nombre de usuario y una contraseña, necesitarás proporcionar esas credenciales al clúster de Kubernetes para que pueda acceder a las imágenes del registro durante el despliegue.

Aquí hay un ejemplo de cómo puedes hacerlo:

Usando Docker Compose con Docker Registry con Autenticación

Supongamos que tu Docker Compose original se ve así:

version: '3'
services:
  webapp:
    image: tu-repositorio/tu-imagen-webapp:latest
    ports:
      - "8080:80"
  database:
    image: tu-repositorio/tu-imagen-database:latest
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password

Si el repositorio requiere autenticación, puedes modificar el docker-compose.yml para incluir la información de autenticación:

version: '3'
services:
  webapp:
    image: tu-repositorio/tu-imagen-webapp:latest
    ports:
      - "8080:80"
    environment:
      REGISTRY_USER: tu-usuario
      REGISTRY_PASSWORD: tu-contraseña
  database:
    image: tu-repositorio/tu-imagen-database:latest
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password

Luego, en tu Dockerfile o en el script de inicio de tu aplicación, puedes usar las variables de entorno REGISTRY_USER y REGISTRY_PASSWORD para autenticarte antes de intentar descargar las imágenes.

Usando Kubernetes con Docker Registry con Autenticación

Para Kubernetes, necesitarás crear un objeto Secret que contenga las credenciales de autenticación de tu registro Docker.

1. Crear un Secret:

kubectl create secret docker-registry my-registry-secret \
  --docker-server=tu-registry \
  --docker-username=tu-usuario \
  --docker-password=tu-contraseña \
  --docker-email=tu-email

Asegúrate de cambiar tu-registry, tu-usuario, tu-contraseña y tu-email con los valores correctos.

2. Modificar Configuraciones de Kubernetes:

Ahora, puedes modificar las configuraciones de Kubernetes para usar este secreto al desplegar los Pods. En el caso del Deployment de la aplicación web, puedes hacerlo de la siguiente manera:

webapp-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webapp
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: tu-repositorio/tu-imagen-webapp:latest
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: my-registry-secret

Asegúrate de cambiar tu-repositorio/tu-imagen-webapp:latest al nombre correcto de tu imagen.

Con estos ajustes, Kubernetes utilizará el secreto que has creado para autenticarse al descargar las imágenes desde el registro Docker durante el despliegue.

Deja un comentario