Harbor: un registro de contenedores Docker listos para usar

El 31 de julio, CNCF anunció la adopción de un nuevo proyecto de código abierto, descrito como un "registro nativo de la nube", en su caja de arena (es decir, en la primera etapa de soporte), Harbor . En su sitio web, nos explican que el producto fue creado para administrar imágenes de contenedores Docker en un entorno seguro.



Parece que ya existe un Registro Docker (o, por ejemplo, Quay de CoreOS), pero es obvio que no aparecen nuevas soluciones y no maduran para aplicaciones de producción así, especialmente soluciones de código abierto ... y aún más, cayendo en CNCF. Este artículo de revisión está destinado a arrojar luz sobre los motivos de la aparición de Harbor, sus características y características clave.

El primer enfoque de Harbor: red y empresa


La historia del proyecto comienza en 2016, en marzo de la cual tuvo lugar el primer lanzamiento público: 0.1.0. Detrás de su creación, estaban los ingenieros de VMware que describieron el proyecto como un "servidor de registro de clase empresarial" que, según el desarrollo de Docker, "amplía las capacidades del Registro de Docker al agregarle más funciones que normalmente son requeridas por la empresa".

En ese momento, el énfasis estaba más en la posibilidad de usar este registro dentro de la compañía, en particular, para mejorar potencialmente la productividad al almacenar imágenes en la red corporativa: “[Harbor] es muy útil para usuarios de contenedores que no tienen una buena conexión a Internet. Por ejemplo, Harbor aumenta la productividad de los desarrolladores chinos al eliminar la dificultad de descargar imágenes del Internet público ” (de README a Harbor 0.1.0 ) .

Nota : La orientación de Harbor hacia China, que fue confirmada por la presencia de una localización adecuada de los primeros lanzamientos, no fue accidental: la creación del proyecto como tal fue iniciada por la división china de la compañía (VMware China R&D).

Lo que se ha convertido en una ocurrencia diaria para el ecosistema nativo de la nube, Harbour fue escrito en el lenguaje Go desde el principio y con licencia de Apache License 2.0. Si hablamos de las capacidades funcionales del proyecto, en la primera versión los autores establecieron algunas características relevantes hasta el día de hoy, como:

  • control de acceso basado en roles ( RBAC , que le permite organizar usuarios y repositorios como "proyectos" y otorgar diferentes derechos a las imágenes dentro de estos proyectos), así como soporte de LDAP y AD para la autenticación de usuarios;
  • Interfaz de usuario basada en web para ver repositorios, buscarlos, gestionar proyectos;
  • auditoría de todas las operaciones;
  • API REST para gestión.


Gestión de proyectos en Harbor Web UI

Evolución del puerto: seguridad


En 2017, VMware encontró una aplicación lógica para su nuevo proyecto: integración con otras soluciones de la compañía para contenedores. En particular, vSphere Integrated Containers (VIC), que, al no ser un PaaS (Plataforma como servicio) o CaaS (Contenedores como servicio) completo, se estaban desarrollando activamente y ofrecían algún tipo de base para trabajar con contenedores. Hoy, por ejemplo, vSphere Integrated Containers Engine , que es el tiempo de ejecución de contenedor para vSphere, ha surgido de ellos. Y así es como el ingeniero de soluciones VMware (Nate Reid) describió VIC en ese momento:

“VIC toma el marco de un único host Docker y lo escala a múltiples hosts ESXi. Su arquitectura propuesta para la orquestación es similar a Swarm, Kubernetes (K8s) y Mesos. Sin embargo, hay algunos matices, y no hay tarea de reemplazar todos estos productos. VIC proporciona una red para contenedores, le permite obtener sus nombres, ofrece RBAC, un panel de control HTML5 (Almirante; lea más sobre esto en nuestra revisión de GUI para Docker - Transl. Aprox. ), Un registro de nivel empresarial (Harbor), muchos comandos Docker similares, Integración con herramientas vSphere. [..]

Si necesita soporte de orquestación de Kubernetes y / o capacidades de CI / CD basadas en VMware IaaS de VMware, debe echar un vistazo a VMware PKS y / o Pivotal Cloud Foundry. Estas ya son soluciones CaaS y PaaS ”.

Al mismo tiempo, el tema de la seguridad de las imágenes de Docker se está volviendo cada vez más relevante. A principios de 2018, los ingenieros de "fraternal" para la compañía VMware Pivotal citan un estudio según el cual incluso las últimas versiones de imágenes publicadas en Docker Hub (tanto de la comunidad como del oficial) contienen numerosas vulnerabilidades (un promedio de 70 por imagen).

Fue entonces cuando apareció Harbor con su nueva misión orientada a la seguridad, y ya en el "terreno" de CaaS antes mencionado, en el Servicio de Contenedor Pivotal (PKS) :

"¡Esta [vulnerabilidades y otros problemas de seguridad en las imágenes de Docker] es la razón por la que hemos incluido tantos complementos útiles que hacen que PKS sea confiable y seguro!" [..]

Dado que Kubernetes por sí solo no se ocupa de tales problemas [gestión segura de imágenes], trabajamos con amigos de VMware para incluir Harbor en PKS ”.

¿Qué es tan seguro agregado a Harbor (además del RBAC y la auditoría ya implementada en el proyecto)? Se indican dos direcciones principales:

  1. Escaneo de vulnerabilidad Para hacer esto, Harbor implementa CVE a partir de bases de datos conocidas (NIST NVD, Ubuntu CVE Tracker, Red Hat Security Data, etc.) y escanea automáticamente cada imagen del contenedor para detectar su presencia al realizar operaciones de inserción y extracción. Si se encuentra una vulnerabilidad, las operaciones se cancelan según la configuración de seguridad y la imagen en sí está marcada, lo que será visible para el administrador del registro. Para aprovechar esta oportunidad, Harbor se integra con Clair de CoreOS.
  2. La firma de las imágenes . También utiliza los logros de otro proyecto: Notary (lo mencionamos en este artículo ) , que hace una firma al insertar imágenes y luego valida tales firmas con cada extracción.

La aplicación general de Harbor en PKS es la siguiente:



Puerto hoy


Por lo tanto, al ofrecer un registro de imágenes de contenedores para uso local y proporcionar seguridad en varios aspectos del trabajo con ellas, hoy Harbor ha evolucionado a la siguiente arquitectura, que aparentemente combina funciones de otros proyectos de código abierto:



Además del ya mencionado Docker Registry, Clair y Notary, que implementan las características clave de Harbor, también puede ver dos DBMS en este esquema:

  1. PostgreSQL ( anteriormente estaba MySQL / MariaDB aquí), que se utiliza para almacenar metadatos sobre proyectos, usuarios y sus roles, imágenes;
  2. Redis: para almacenar sesiones .


Bases de datos en arquitectura portuaria

También puede encontrar algunos detalles sobre el dispositivo interno general de Harbor en esta página wiki , que está vinculada a la documentación oficial del proyecto (sin embargo, existe la sospecha de que algunos detalles sobre la arquitectura podrían estar desactualizados en algunos lugares) . Allí también puede encontrar enlaces a las instrucciones de instalación de Harbor y su implementación en Kubernetes . Sin embargo, este último se declara obsoleto (basado en versiones anteriores, no es compatible con Clair y Notary), y en su lugar se propone utilizar el Helm-chart .

La versión actual de Harbour es v1.5.2 , lanzada a fines de julio. Los requisitos para la máquina Linux en la que está instalada la última versión del registro son Docker versión 17.03.0-ce (o superior) y Docker Compose 1.10.0+, así como Python y OpenSSL.

El soporte para Helm Chart parece una innovación muy interesante para la futura versión de Harbor ( v1.6.0-rc1 ya se ha lanzado): "Harbor, a partir de la versión 1.6.0, se convertirá en un registro nativo de nube compuesto que admitirá tanto la gestión de imágenes como la gestión de gráficos" . Otros planes de desarrollo incluyen soporte de OAuth 2.0 para autenticación de usuarios, la capacidad de implementar en múltiples sitios para tolerancia a fallas y equilibrio de carga, recopilar estadísticas en repositorios y una utilidad para migrar a Harbor.

En lugar de una conclusión


Harbor es un ejemplo de un proyecto exitoso del mundo moderno de la nube, que logró encontrar su nicho y establecerse, al tiempo que integra las capacidades de otras herramientas de código abierto. La evidencia de su éxito no es solo la inclusión de CNCF en la lista de proyectos, sino también más de 5000 estrellas en GitHub y una comunidad bastante activa de desarrolladores.

PS


Lea también en nuestro blog:

Source: https://habr.com/ru/post/es419727/


All Articles