Gestión de imágenes con Harbor en Tanzu

La gestión de imágenes para nuestros contenedores es una labor muy importante en el desarrollo y despliegue de nuestras aplicaciones. Normalmente cuando empezamos a trabajar con contenedores, usamos el registro público de Docker conocido como Docker Hub, pero a medida en la que avanza el proceso en nuestra organización buscamos poder tener mayor control sobre las imágenes, para garantizar que la imagen no presente vulnerabilidades, poder controlar el acceso a las mismas y otros aspectos que con Harbor podemos cubrir.
Harbor es una solución open source desarrollada por VMware y donada a la CNCF, así que si estás usando Tanzu puedes estar tranquilo, ya que Harbor cuenta con soporte directamente de VMware en caso de necesitarlo.
Algunos de los beneficios y características de Harbor son:
- Análisis de vulnerabilidades: Con Harbor podemos escanear o analizar nuestras imágenes en busca de vulnerabilidades, para esto Harbor usa el proyecto open source llamado Trivy.
- Gestión de usuarios: En Harbor manejamos nuestras imágenes a través de proyectos, sobre los cuales podemos dar o denegar accesos a nuestros usuarios o desarrolladores en caso de ser necesario. Adicionalmente, podemos integrarlo con nuestro Directorio Activo o usar usuarios locales.
- Configurar cuotas: Para tener un mejor control de nuestros recursos, en Harbor podemos establecer cuotas de almacenamiento para nuestros proyectos, con esto controlamos que por ejemplo un proyecto usado para almacenar imágenes de prueba no consuma el espacio de un proyecto de producción.
- Firma de imágenes: Firmar nuestras imágenes y verificar firmas es una forma de garantizar y verificar la integridad de las imágenes que usamos en nuestros despliegues, Harbor se integra con Notary para este propósito.
Para empezar a usar imágenes almacenadas en nuestra implementación de Harbor en nuestros despliegues debemos:
- Creamos un proyecto dentro de Harbor:
2. En nuestra máquina de Bootstrap debemos importar el certificado de Harbor. En este caso estamos usando certificados auto firmados, para obtenerlo tenemos dos opciones:
- Ejecutar el siguiente comando:
https://nombe_de_dominio_de_harbor/api/v2.0/systeminfo/getcert
- Desde la interfaz grafico de Harbor dando clic en la opción Registry Certificate:
3. Una vez tengamos el certificado de Harbor debemos guardarlo en la siguiente ruta:
- /etc/docker/certs.d/nombre_de_dominio_de_harbor/certificado_harbor.crt.
Si la ruta no existe previamente, debemos crearla:
- mkdir /etc/docker/certs.d/nombre_de_dominio_de_harbor/
4. Ahora ya podemos iniciar sesión en Harbor desde nuestra máquina de bootstrap, debemos usar las credenciales con las cuales nos logueamos en la interfaz gráfica de harbor, para esto usamos el siguiente comando:
- docker login nombre_de_dominio_de_harbor -u admin
5. Ahora podemos descargar la imagen a nuestra máquina:
- sudo docker pull nombre_de_imagen
6. Tagueamos la imagen descargada, por ejemplo wordpress:1.0
- docker tag wordpress:1.0 nombre_dominio_de_harbor/nombre_proyecto/wordpress:1.0
7. Insertamos la imagen en nuestro registro Harbor, para esto usamos el siguiente comando:
- docker push nombre_de_dominio_de_harbor /nombre_de_ proyecto/wordpress:1.0
Una vez tenemos nuestras imágenes en el registro de Harbor las podemos usar en nuestros despliegues, para ello solo basta con colocar la ruta de la imagen en el manifiesto yaml de nuestro deployment.
Gracias por leer.