K8s crear un deployment usando un registry privado (GitHub/gitlab)

Imagen
k8s gitlab

Una de las primeras cosas que me pregunté al experimentar con kunernetes fue ¿Cómo configurar mi deployment para descargar mis contenedores de un registry privado?

La respuesta me la dió mi buen amigo @playgali y fue usar un secret

Ahora voy a explicar cómo hacerlo para los registries de GitHub y GitLab.

Crear un token de autenticación.

El primer paso será crear un token de autenticación que tenga acceso a tu registry.

GitHub.

Ve a Account SettingsDeveloper SettingsPersonal access tokens y da click en Generate new token.

Crea un token (puedes elegir que expire o no dependiendo de tus necesidades).

Asigna privilegios de read packages.

Copia el token generado ya que es el que usaremos como contraseña en nuestro secret.

GitLab.

Ve a User SettingsAccess Tokens y crea un token proporcionando un nombre y el permiso de read_registry

Copia el token generado ya que es el que usaremos como contraseña en nuestro secret.

Crear el secret.

Ahora crea tu secret usando kubectl.

kubectl create secret docker-registry [SECRET_NAME] \
 --docker-server=[SERVICE_REGISTRY] \ 
 --docker-username=[USERNAME] \
 --docker-password=[TOKEN] \
 --docker-email=[EMAIL]

Dónde:

  • [SECRET_NAME] es el nombre que darás a tu secret el cuál usarás en tu deployment, por ejemplo mysecret.
  • [SERVICE_REGISTRY] es el dominio del registro de tu servicio.
    • Para GitHub: ghcr.io
    • Para GitLab: registry.gitlab.com

Configurar deployment.

Ahora puedes agregar la sección imagePullSecrets en tu deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mydeployment
spec:
  ...
    spec:
      imagePullSecrets:
        - name: mysecret
      containers:
        - image: registry.gitlab.com/myuser/myproject:latest
	...

Pon especial atención en:

imagePullSecrets:
        - name: mysecret

Y eso es todo, tu deployment se autenticará y descargará la imagen de tu contenedor para crear tus pods.

Like