Implementación y gestión de almacenes privados de Docker-Harbour

Uno, puerto

1.2 Introducción a Harbour

Harbour es un proyecto DockerRegistry (almacén) de código abierto de nivel empresarial de VMware. La dirección del proyecto es https://github.com/vmware/harbor.
El objetivo de Harbor es ayudar a los usuarios a crear rápidamente un servicio DockerRegistry de nivel empresarial.
Harbour se basa en el registro de código abierto de la empresa Docker, que proporciona interfaz de usuario de administración, control de acceso basado en roles (Control de acceso basado en roles), integración AD / LDAP y registro de auditoría (Auditlogging) y otras funciones requeridas por los usuarios empresariales. Al mismo tiempo , es compatible con chino.
Cada componente de Harbour se crea en forma de contenedor Docker y se implementa mediante docker-compose. La plantilla de docker-compose utilizada para implementar Harbour se encuentra en /usr/local/bin/harbor/docker-compose.yml (personalizado)

1.2 Características del puerto

  • Control basado en roles: los usuarios y los almacenes espejo de Docker se organizan y administran a través de "proyectos". Un usuario puede tener diferentes permisos para varios almacenes espejo en el espacio de nombres unificado (projec)
  • Interfaz gráfica de usuario: los usuarios pueden navegar a través del navegador, recuperar el almacén de réplicas de Docker actual, administrar proyectos y espacios de nombres.
  • Gestión de auditoría: todos los errores de este almacén espejo enojado se pueden registrar y rastrear para la gestión de auditoría
  • Estrategia de replicación basada en réplicas: la réplica se puede replicar entre varias instancias de Harbour.
  • Admite la autenticación LDAP: la autorización de usuario del puerto puede utilizar usuarios existentes.
  • Eliminación de imágenes y recolección de basura: la imagen se puede eliminar y el espacio ocupado por la imagen se puede recuperar.
  • Función de implementación simple: el puerto proporciona instalación en línea y fuera de línea, además de la instalación virtual del dispositivo.
  • La relación entre el puerto y el registro de la ventana acoplable: Harbour esencialmente encapsula el registro de la ventana acoplable y extiende su propia plantilla empresarial.

1.3 Arquitectura simple de Harbour

Harbour tiene principalmente 6 módulos. De forma predeterminada, los componentes de cada puerto están encapsulados en un contenedor docker, por lo que el puerto se puede implementar a través de compose, que se divide en 8 contenedores para ejecutarse en total, que se pueden ver a través de docker-compose ps
Inserte la descripción de la imagen aquí

  • Proxy: el registro, la interfaz de usuario, los servicios de token y otros componentes de Harbour están todos detrás de un proxy inverso. El proxy reenvía las solicitudes de los navegadores y los clientes de la ventana acoplable al servicio de back-end.
  • Registro: responsable de almacenar imágenes de Docker y procesar solicitudes de inserción / extracción de Docker. Debido a que Harbour exige el control de permisos para acceder al espejo, el Registro obligará al cliente a obtener un token válido del servicio de token para cada solicitud de inserción / extracción.
  • Servicios principales: funciones principales de Harbour, que incluyen principalmente los siguientes 3 servicios:
  • Interfaz de usuario: como Webhook de registro, ayuda a los usuarios a administrar la duplicación en forma de interfaz gráfica de usuario.
    - WebHookes un mecanismo dispuesto en el registro, el registro cuando se cambia el espejo, puede ser notificado al punto final del webhook Harbour. Harbour utiliza webhooks para actualizar registros, inicializar trabajos de sincronización, etc.
    - Token servicebasado en el rol del usuario en un proyecto para cada token correspondiente de asignación de solicitud push / pull. Si la solicitud correspondiente no contiene un token, el registro redirigirá la solicitud al servicio de token.
    -Utilizado Databasepara almacenar metadatos del proyecto, datos de usuario, datos de roles, estrategia de sincronización y metadatos espejo.
  • Servicios de trabajo: se utilizan principalmente para la replicación de réplicas, las réplicas locales se pueden sincronizar con instancias de Harbour remotas.
  • Recopilador de registros: responsable de recopilar registros de otros módulos en un solo lugar

1.4 Parámetros del archivo de configuración del puerto

vim /usr/local/harbor/harbor.cfg,关于 Harbor.cfg 配置文件中有两类参数:所需参数和可选参数

Parámetros requeridos: Estos parámetros deben establecerse en el archivo de configuración Harbor.cfg. Si el usuario los actualiza y ejecuta el script install.sh para reinstalar Harbour, los parámetros entrarán en vigor. Los parámetros específicos son los siguientes:

  • nombre de host: se utiliza para acceder a la interfaz de usuario y registrar servicios. Debe ser la dirección IP o el nombre de dominio completo (FQDN) de la máquina de destino, como 192.168.195.128 o hub.kgc.cn. No utilice localhost o 127.0.0.1 como nombre de host.
  • ui_url_protocol: (http o https, el valor predeterminado es http) el protocolo utilizado para acceder a la interfaz de usuario y al servicio de token / notificación. Si la notarización está habilitada, este parámetro debe ser https
  • max_job_workers: Subproceso de trabajo de copia espejo.
  • db_password: la contraseña del usuario raíz de la base de datos MySQL utilizada para db_auth.
  • personalizar_crt: este atributo se puede activar o desactivar, y está activado de forma predeterminada. Al abrir esta propiedad, prepare un script para crear una clave privada y un certificado raíz para generar / verificar tokens de registro.
  • Cuando una fuente externa proporcione la clave y el certificado raíz, desactive esta propiedad.
  • ssl_cert: la ruta del certificado SSL, que solo se aplica cuando el protocolo está configurado en https.
  • secretkey_path: la ruta de la clave utilizada para cifrar o descifrar la contraseña del registro remoto en la política de replicación.

Parámetros opcionales: Estos parámetros son opcionales para la actualización, es decir, los usuarios pueden dejarlos como valores predeterminados y actualizarlos en la interfaz de usuario web después de iniciar Harbour. Si ingresa Harbor.cfg, solo tendrá efecto cuando se inicie Harbour por primera vez. Si actualiza estos parámetros más tarde, Harbour.cfg será ignorado.
注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的

  • auth_mode. Cuando hay usuarios en el sistema (excepto el usuario administrador predeterminado), auth_mode no se puede modificar. Los parámetros específicos son los siguientes:
  • Correo electrónico: Harbour necesita este parámetro para enviar un correo electrónico de "restablecimiento de contraseña" al usuario, y solo cuando se necesita esta función.

请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。

  • harbour_admin_password: la contraseña inicial del administrador, que solo tiene efecto cuando se inicia Harbour por primera vez. Después de eso, esta configuración se ignorará y la contraseña del administrador debe establecerse en la interfaz de usuario.

请注意,默认的用户名/密码是 admin/Harbor12345。

  • auth_mode: El tipo de autenticación que se utiliza, por defecto es db_auth, es decir, las credenciales se almacenan en la base de datos. Para la autenticación LDAP, configúrelo en ldap_auth.
  • self_registration: habilita / deshabilita la función de registro de usuario. Cuando está deshabilitado, solo los usuarios administradores pueden crear nuevos usuarios, y solo los usuarios administradores pueden crear nuevos usuarios en Harbour.

注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

  • Token_expiration: el tiempo de vencimiento (minutos) del token creado por el servicio de token, el valor predeterminado es 30 minutos.
  • project_creation_restriction: una bandera que se utiliza para controlar qué usuarios tienen derecho a crear proyectos. De forma predeterminada, todos pueden crear un proyecto.

如果将其值设置为“adminonly”,那么只有 admin 可以创建项目。

  • verify_remote_cert: abrir o cerrar, abierto de forma predeterminada. Esta bandera determina si se debe verificar el certificado SSL / TLS cuando Harbour se comunica con la instancia de registro remoto.

将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用。 另外,默认情况下,Harbour 将镜像存储在本地文件系统上。在生产环境中,可以考虑 使用其他存储后端而不是本地文件系统, 如 S3、Openstack Swif、Ceph 等。但需要更新 common/templates/registry/config.yml 文件。

2. Experimento de simulación

Nombre de la CPU dirección IP Software requerido
servidor del puerto 192.168.153.40 docker-ce 、 puerto 、 docker-compose
Cliente 192.168.153.60 docker-esto

2.1 Configuración del servidor Harbour

cd /usr/local/      #拉入压缩包
tar zxvf harbor-offline-installer-v1.2.2.tgz

cd harbor/
vim harbor.cfg
... ...
hostname = 192.168.153.40
... ...

Inserte la descripción de la imagen aquí

sh install.sh

Inserte la descripción de la imagen aquí

docker images
docker ps -a

Inserte la descripción de la imagen aquí

  • Harbor-log: recopila información de registro de otros puertos. rsyslogd
  • harbour-jobservice: Harbour se utiliza principalmente para la sincronización antes de duplicar el almacén
  • harbour-ui: módulo de interfaz de usuario que se utiliza para administrar el registro. Principalmente la página de inicio y la interfaz CURD de back-end
  • harbour-adminserver: interfaz de gestión del sistema portuario, puede modificar la configuración del sistema y obtener información del sistema
  • harbour-db: almacena metadatos del proyecto, usuarios, reglas, estrategias de replicación y otra información
  • nginx: un componente de proxy inverso de puerto, registro de proxy, interfaz de usuario, token y otros servicios. Este proxy reenvía varias solicitudes desde la web del puerto y el cliente de la ventana acoplable al servicio de back-end. Es nginx. Nginx es responsable del reenvío de tráfico y la verificación de seguridad. Todo el tráfico externo se transfiere desde nginx, que distribuye el tráfico a la interfaz de usuario de back-end y al registro de la ventana acoplable que se almacena en la imagen de la ventana acoplable.
  • registro: un servicio que almacena imágenes de la ventana acoplable y proporciona servicios de extracción / inserción. Harbour necesita controlar el acceso a la imagen. Cuando el cliente tira o empuja cada vez, el registro necesita que el cliente vaya al servicio de token para obtener un token utilizable.
  • redis: almacenar información de caché
  • Webhook: cuando cambia el estado de la imagen en el registro, registra el registro de actualización, copia y otras operaciones.
  • Servicio de token: el token se emite hoy cuando el cliente de la ventana acoplable está tirando / empujando.

También puede usar docker-compose ps para ver el estado del contenedor, pero debe ejecutarse en el directorio / usr / local / harbour

Inserte la descripción de la imagen aquí

Prueba de inicio de sesión del navegador

http://192.168.153.40/harbor

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Prueba de carga y descarga espejo del servidor del puerto

docker login -u admin -p Harbor12345 http://127.0.0.1

docker pull cirros		#cirros镜像小于15M,便于测验
...
...
docker tag cirros:latest 127.0.0.1/test/cirros:v1  #打上v1标签,便于区别
docker push 127.0.0.1/test/cirros:v1 		#上传至harbor

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Regrese al navegador para ver
Inserte la descripción de la imagen aquí

2.2 Prueba de cliente

vim /usr/lib/systemd/system/docker.service
... ...
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.153.40 --con    tainerd=/run/containerd/containerd.sock             #修改此行,使客户端可以连接harbor服务器
... ...

systemctl daemon-reload
systemctl restart docker

docker login -u admin -p Harbor12345 http://192.168.153.40  #登录

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

docker pull cirros
docker tag cirros:latest 192.168.153.40/test/cirros:v2	#打上v2标签,区别v1
docker push 192.168.153.40/test/cirros:v2 		#上传镜像

Inserte la descripción de la imagen aquí
Regrese al navegador para ver
Inserte la descripción de la imagen aquí

2.3 Mantenimiento y Gestión del Almacén Privado Portuario

  • Puede usar docker-compose para administrar Harbour, y los comandos deben ejecutarse en el mismo directorio que docker-compose.yml.
  • Preste atención al modificar el archivo de configuración harbour.cfg
  • Primero detenga la instancia de Harbour existente y actualice Harbour.cfg; luego ejecute el script de preparación para completar la configuración; finalmente, vuelva a crear e inicie la instancia de Harbour.
##必须在/usr/local/harbor目录下执行
docker-compose down -v      #关闭所有容器
vim harbor.cfg
... ...
./prepare                   #重新填充配置
docker-compose up -d        #开启容器

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
1. Gestión del sistema> Gestión de usuarios> + Usuario> Crear usuario> Establecer como administrador
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
2. Proyecto> Nombre del proyecto> Miembro> + Miembro> Nuevo miembro> Desarrollador
Inserte la descripción de la imagen aquí
Prueba en el cliente

docker logout 192.168.153.40     #注销
docker login 192.168.153.40      #登录

Inserte la descripción de la imagen aquí

docker pull 192.168.153.40/test/cirros:v1	        #下载v1镜像
docker tag cirros 192.168.153.40/test/cirros:v3     #打上v3标签
docker push 192.168.153.40/test/cirros:v3           #上传v3镜像

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.4 Migración de datos del puerto

  • Primero cierre el almacén del puerto: docker-compose down -v
  • Copiar datos del puerto:

# Los datos persistentes, como la creación de reflejo, las bases de datos, etc.están en el directorio / data / del host, y los registros están en el directorio / var / log / Harbour / del host
# / data / database / contenido de la base de datos, como los datos de autenticación
# / contenido del archivo de datos / registro / imagen

  • Extraiga los datos directamente al directorio correspondiente del servidor de destino y vuelva a implementarlos

Supongo que te gusta

Origin blog.csdn.net/weixin_51613313/article/details/115313185
Recomendado
Clasificación