viernes, 12 de octubre de 2018

GitLab Container Registry


Una de las cosas que tiene GitLab y no todo el mundo conoce es la posibilidad de tener un container registry para almacenar nuestras imágenes de Docker. Un container registry son repositorios para las imágenes de tus contenedores. Estos no son contenedores de ejecución sino solo imágenes (datos sin formato) que se encuentran en la instancia remota de GitLab.

¿Por qué necesito un registro de contenedores en GitLab?

Lo más probable es que tu aplicación esté empaquetada como una única imagen de Docker o una colección de varias imágenes. Esto significa que las diferentes versiones se asociarán con diferentes imágenes y el registro del contenedor te ayudará a realizar un seguimiento de ellas individualmente, así como a ver cuáles se agruparán en una versión en particular.

Requisitos

Una instancia de GitLab en funcionamiento a través de HTTP (Idealmente debería ser a traves de HTTPS)
Acceso root a la instancia u container donde se ejecuta GitLab
Acceso para modificar los registros DNS de tu nombre de dominio
Para esta demostración, vamos a asumir que nuestro GitLab se está ejecutando en gitlab.cloudlegion.com.ar

Registro de certificados DNS y TLS.
Tenes que ser usuario root para habilitar la función de registro de contenedores en la instancia de GitLab. Los usuarios individuales pueden elegir usar esta función en sus respectivos proyectos, si así lo desean. Para hacerlo:
Apunta el otro nombre de dominio, digamos, registry.gitab.cloudlegion.com.ar a la misma dirección IP donde se ejecuta GitLab.
Agrega un registro DNS de tipo “A” para registry.gitab.cloudlegion.com.ar que apunta a la misma IP donde se ejecuta tu instancia de GitLab.
Edita la configuración de GitLab, abrí el archivo /etc/gitlab/gitlab.rb y modifica las siguientes líneas indicadas:


registry_external_url 'https://registry.cloudlegion.com.ar'
### Settings used by GitLab application
 gitlab_rails['registry_enabled'] = true
 gitlab_rails['registry_host'] = "registry.cloudlegion.com.ar"
 gitlab_rails['registry_port'] = "443"
 gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"


Dado que el registro lo estamos configurando a traves de HTTPS es necesario mapear el certificado SSL correspondiente en el NGINX:

registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/certificate.pem"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/certificate.key"

Si todo está bien, con eso ya debería estar habilitado el registro en GitLab, reconfiguramos mediante el siguiente comando, O bien reiniciar el container donde se ejecuta GitLab.

sudo gitlab-ctl reconfigure

Ahora que tenemos el registro habilitado, si vamos a la configuracion del proyecto podremos ver el registro habilitado:




A continuacion vemos los comandos para hacer pull / push de nuestras imagenes



Espero que les sirva el tip