Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Registro de Kubernetes y Registro de Imágenes de Contenedor

Los registros son secretos de Kubernetes que contienen credenciales utilizadas para autenticar con registros de contenedores privados.

La palabra "registro" puede significar dos cosas, dependiendo de si se utiliza para referirse a un registro de contenedor o a un registro de Kubernetes:

  • Un Registro de imágenes de contenedor (anteriormente "registro de Docker") contiene imágenes de contenedor que puedes extraer y desplegar. El registro es una aplicación del lado del servidor sin estado y escalable que almacena y te permite distribuir imágenes de contenedor.

  • El registro de Kubernetes es un secreto de extracción de imágenes que tu despliegue utiliza para autenticar con un registro de imágenes.

Los despliegues utilizan el secreto del registro de Kubernetes para autenticar con un registro de imágenes privado y luego extraer una imagen de contenedor alojada en él.

Actualmente, los despliegues extraen las credenciales del registro privado automáticamente solo si la carga de trabajo se crea en la interfaz de usuario de Rancher y no cuando se crea a través de kubectl.

Crear un Registro en Espacios de Nombres

Requisito previo:

Debes tener un registro privado disponible ya desplegado.

Si necesitas crear un registro privado, consulta las páginas de documentación para tu entorno de ejecución respectivo:

  1. En la esquina superior izquierda, haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster donde deseas añadir un registro y haz clic en Explorar.

  3. En la navegación izquierda, haz clic en Almacenamiento  Secretos o en Más Recursos  Kernel  Secretos.

  4. Haga clic en Crear.

  5. Haz clic en Registro.

  6. Introduce un Nombre para el registro.

    Kubernetes clasifica secretos, certificados y registros todos como secretos, y no puede haber dos secretos en un proyecto o espacio de nombres con nombres duplicados. Por lo tanto, para evitar conflictos, tu registro debe tener un nombre único entre todos los secretos dentro de tu espacio de trabajo.

  7. Selecciona un espacio de nombres para el registro.

  8. Selecciona el sitio web que aloja tu registro privado. Luego, introduce las credenciales que autentiquen con el registro. Por ejemplo, si utilizas Docker Hub, proporciona tu nombre de usuario y contraseña de Docker Hub.

  9. Haz clic en Guardar.

Resultado:

  • Tu secreto se añade al espacio de nombres que elegiste.

  • Puedes ver el secreto en la interfaz de usuario de Rancher haciendo clic en Almacenamiento  Secretos o Más Recursos  Kernel  Secretos.

  • Cualquier carga de trabajo que crees en la interfaz de usuario de Rancher tendrá las credenciales para acceder al registro si la carga de trabajo está dentro del alcance del registro.

Creando un Registro en Proyectos

Requisitos previos:

Debes tener un registro privado disponible ya desplegado.

Si necesitas crear un registro privado, consulta las páginas de documentación para tu entorno de ejecución respectivo:

Antes de la v2.6, se requería que los secretos estuvieran en un alcance de proyecto. Los proyectos ya no son obligatorios, y puedes utilizar el alcance de espacio de nombres en su lugar. Como resultado, la interfaz de usuario de Rancher se actualizó para reflejar esta nueva funcionalidad. Sin embargo, aún puedes crear un registro con alcance de proyecto si lo deseas. Utiliza los siguientes pasos para hacerlo:

  1. En la esquina superior izquierda, haz clic en ☰ > Configuración Global en el menú desplegable.

  2. Haz clic en Banderas de Características.

  3. Ve a la bandera de características legacy y haz clic en Activar.

  4. En la esquina superior izquierda, haz clic en ☰ > Gestión de Clústeres.

  5. Ve al clúster donde deseas añadir un registro y haz clic en Explorar.

  6. En la navegación izquierda, haz clic en Almacenamiento  Secretos o en Más Recursos  Kernel  Secretos.

  7. Haga clic en Crear.

  8. Haz clic en Registro.

  9. En la barra de navegación superior, filtra para ver solo un proyecto.

  10. Introduce un Nombre para el registro.

    Kubernetes clasifica secretos, certificados y registros todos como secretos, y no puede haber dos secretos en un proyecto o espacio de nombres con nombres duplicados. Por lo tanto, para evitar conflictos, tu registro debe tener un nombre único entre todos los secretos dentro de tu espacio de trabajo.

  11. Selecciona un espacio de nombres para el registro.

  12. Selecciona el sitio web que aloja tu registro privado. Luego, introduce las credenciales que autentiquen con el registro. Por ejemplo, si utilizas Docker Hub, proporciona tu nombre de usuario y contraseña de Docker Hub.

  13. Haz clic en Guardar.

Resultado:

  • Tu secreto se añade al proyecto individual que elegiste.

  • Puedes ver el secreto en la interfaz de usuario de Rancher haciendo clic en Almacenamiento  Secretos o Más Recursos  Kernel  Secretos.

  • Cualquier carga de trabajo que crees en la interfaz de usuario de Rancher tendrá las credenciales para acceder al registro si la carga de trabajo está dentro del alcance del registro.

Los registros con alcance de proyecto en el clúster local solo son visibles cuando se selecciona un único proyecto.

Usando un Registro Privado

Puedes desplegar una carga de trabajo con una imagen de un registro privado a través de la interfaz de usuario de Rancher, o con kubectl.

Usando el Registro Privado con la interfaz de usuario de Rancher

Para desplegar una carga de trabajo con una imagen de tu registro privado,

  1. En la esquina superior izquierda, haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster donde deseas desplegar una carga de trabajo y haz clic en Explorar.

  3. Haz clic en Carga de trabajo.

  4. Haga clic en Crear.

  5. Selecciona el tipo de carga de trabajo que deseas crear.

  6. Introduce un nombre único para la carga de trabajo y elige un espacio de nombres.

  7. En el campo Imagen del Contenedor, introduce la URL de la vía a la imagen en tu registro privado. Por ejemplo, si tu registro privado está en Quay.io, podrías usar quay.io/<Quay profile name>/<Image name>.

  8. Haga clic en Crear.

Resultado: Tu despliegue debería iniciarse, autenticarse usando las credenciales del registro privado que añadiste en la interfaz de usuario de Rancher, y extraer la imagen del contenedor que especificaste.

Usando el Registro Privado con kubectl

Cuando creas la carga de trabajo usando kubectl, necesitas configurar el pod para que su YAML tenga la vía a la imagen en el registro privado. También tienes que crear y referenciar el secreto del registro porque el pod solo obtiene acceso automáticamente a las credenciales del registro privado si se crea en la interfaz de usuario de Rancher.

El secreto tiene que ser creado en el mismo espacio de nombres donde se despliega la carga de trabajo.

A continuación se muestra un ejemplo pod.yml para una carga de trabajo que utiliza una imagen de un registro privado. En este ejemplo, el pod utiliza una imagen de Quay.io, y el .yml especifica la vía a la imagen. El pod se autentica con el registro usando credenciales almacenadas en un secreto de Kubernetes llamado testquay, que se especifica en spec.imagePullSecrets en el campo name:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: quay.io/<Quay profile name>/<image name>
  imagePullSecrets:
  - name: testquay

En este ejemplo, el secreto llamado testquay está en el espacio de nombres predeterminado.

Puedes usar kubectl para crear el secreto con las credenciales del registro privado. Este comando crea el secreto llamado testquay:

kubectl create secret docker-registry testquay \
    --docker-server=quay.io \
    --docker-username=<Profile name> \
    --docker-password=<password>

Para ver cómo se almacena el secreto en Kubernetes, puedes usar este comando:

kubectl get secret testquay --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

El resultado se ve así:

{"auths":{"quay.io":{"username":"<Profile name>","password":"<password>","auth":"c291bXlhbGo6dGVzdGFiYzEyMw=="}}}

Después de que se despliegue la carga de trabajo, puedes comprobar si la imagen se ha extraído correctamente:

kubectl get events

El resultado debería verse así:

14s         Normal    Scheduled          Pod    Successfully assigned default/private-reg2 to minikube
11s         Normal    Pulling            Pod    pulling image "quay.io/<Profile name>/<image name>"
10s         Normal    Pulled             Pod    Successfully pulled image "quay.io/<Profile name>/<image name>"

Para más información, consulta la documentación de Kubernetes sobre creando un pod que utiliza tu secreto.