Todo sobre Apple, Android, Juegos Apks y Sitios de Peliculas

Cómo habilitar el proxy de dependencia de GitLab para imágenes de Docker

GitLab tiene un proxy de dependencia integrado que almacena en caché las imágenes de Docker ascendentes. Dependency Proxy, que anteriormente era una característica premium, era de código abierto y estuvo disponible para todas las versiones de GitLab en noviembre de 2020 como parte de GitLab 13.6.

El proxy de dependencia se comporta como un caché extraíble para las imágenes de Docker almacenadas en Docker Hub. Configurar el proxy de dependencia puede acelerar sus procesos y ayudarle a mantenerse dentro de Límites de velocidad de Docker.

Habilitación del proxy de dependencia

La disponibilidad de Dependency Proxy está controlada por una configuración a nivel de instancia. Para habilitar el proxy de dependencia es necesario reconfigurar GitLab. Esto provocará un breve período de inactividad.

Para habilitar la función, agregue la siguiente línea al archivo /etc/gitlab/gitlab.rb de su instalación:

gitlab_rails["dependency_proxy_enabled"] = true

Guarde el archivo y ejecute el siguiente comando en su terminal:

sudo gitlab-ctl reconfigure

Las instrucciones anteriores son para instalaciones de GitLab Omnibus. Si instaló desde la fuente, el proxy de dependencia debe estar habilitado dentro su archivo config/gitlab.yml.

Usando el proxy de dependencia

Dependency Proxy solo funciona con grupos de GitLab. Actualmente no puedes usarlo con proyectos personales independientes.

La función se utiliza normalmente en scripts de canalización de CI. Al hacer referencia a una imagen dentro de una canalización, anteponer el de la imagen Nombre de Docker Hub con la variable CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX. Esta variable se resuelve automáticamente en la URL del proxy de dependencia para su grupo GitLab activo.

image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/nodejs:latest

Esta canalización ejecutará su trabajo dentro de un contenedor nodejs:latest. La imagen se extraerá a través del proxy de dependencia. Las ejecuciones posteriores de la canalización no necesitarán acceder a Docker Hub a menos que la imagen ascendente realmente cambie.

También puede acceder al proxy de dependencia manualmente, fuera de GitLab CI. Primero debe autenticarse con el inicio de sesión de Docker. Deberá utilizar su nombre de usuario y contraseña de GitLab, o su nombre de usuario y un token de acceso personal.

docker login gitlab.example.com --username username --password password

Una vez autenticado, puede extraer Docker utilizando GitLab Dependency Proxy. Reemplace grupo de ejemplo en la siguiente URL con el nombre del grupo que desea utilizar. La imagen extraída se almacenará en caché en el proxy de dependencia de ese grupo.

docker pull gitlab.example.com/example-group/dependency_proxy/containers/nodejs:latest

Si también utiliza el Registro de contenedores de GitLab (para almacenar las imágenes que crea), tenga en cuenta que Dependency Proxy es completamente independiente y tiene una URL diferente. Mientras que Container Registry normalmente está expuesto en su propio subdominio (por ejemplo, registro.ejemplo.com), se accede a Dependency Proxy a través del mismo nombre de host que la interfaz de usuario web de GitLab.

Cómo funciona el proxy de dependencia

El Dependency Proxy se presenta como otro registro de Docker. Cuando desee utilizar el proxy, inicie sesión en la ventana acoplable y luego extraiga la ventana acoplable como de costumbre.

Si Dependency Proxy ya almacenó en caché la imagen, la devolverá directamente sin usar Docker Hub. De lo contrario, la imagen se extrae de Docker Hub, se almacena en caché en el proxy y se devuelve a su Docker CLI.

GitLab intentará comunicarse con Docker Hub para cada extracción de Docker, incluso si hay una imagen en caché disponible. Esto se debe a que el proxy debe verificar si la imagen se ha actualizado en Docker Hub.

Este procedimiento no afecta la limitación de velocidad de Docker. Estibador permisos gratis Solicitudes HEAD para comparar versiones de manifiesto de imagen. Si Docker indica que la imagen almacenada en caché está desactualizada, GitLab extraerá la versión nueva (lo que incurrirá en un límite de velocidad). De lo contrario, se devolverá la imagen almacenada en caché, sin agregarla a su recuento de límite de velocidad de Docker Hub.

Estas características hacen que Dependency Proxy sea ideal para canalizaciones de CI. Al iniciar sesión en el proxy, puede utilizar Docker de forma segura en cada ejecución de canalización, sin alcanzar el límite de velocidad de Docker Hub.

Configurar los ajustes del proxy de dependencia

Dependency Proxy puede utilizar una cantidad sustancial de almacenamiento con el tiempo. Estás almacenando en caché imágenes de Docker Hub; esas imágenes pueden ser bastante grandes dependiendo de lo que estés usando.

GitLab te permite personalizar la ubicación de almacenamiento. Establezca la configuración dependency_proxy_storage_path en /etc/gitlab/gitlab.rb si desea utilizar una unidad de almacenamiento dedicada.

gitlab_rails["dependency_proxy_storage_path"] = "/mnt/my-storage-drive"

En su lugar, las instalaciones de origen deben establecer la propiedad Storage_path dentro de la sección dependency_proxy de config/gitlab.yml.

También puedes almacenar tus imágenes en caché. en un almacenamiento de objetos servicio como Amazon S3. Aquí hay un ejemplo de configuración Omnibus en /etc/gitlab/gitlab.rb:

gitlab_rails["dependency_proxy_object_store_enabled"] = true

# This is the S3 bucket name

gitlab_rails["dependency_proxy_object_store_remote_directory"] = "gitlab-dependency-proxy"

gitlab_rails["dependency_proxy_object_store_connection"] = {

"provider" => "AWS",

"region" => "eu-west-1",

"aws_access_key_id" => "AWS_ACCESS_KEY_ID",

"aws_secret_access_key" => "AWS_SECRET_ACCESS_KEY"

}

Para mejorar el rendimiento, GitLab almacenará en caché las imágenes localmente y luego las cargará en S3 en segundo plano. Si prefiere cargar directamente a S3, establezca la configuración dependency_proxy_object_store_direct_upload en verdadero.

Debe reconfigurar GitLab (sudo gitlab-ctl reconfigure) después de realizar cambios en la configuración de almacenamiento. Luego, el proxy de dependencia almacenará imágenes en caché utilizando su nueva configuración.

Liberar almacenamiento

GitLab nunca borra datos del proxy de dependencia almacenados en caché. Puede ver el contenido de la caché de un grupo seleccionando Paquetes y registros > Proxy de dependencia en su barra lateral. Esta pantalla le permite habilitar o deshabilitar el proxy de dependencia para el grupo y ver el tamaño total de los datos almacenados. Sin embargo, no puede utilizar la interfaz de usuario para borrar blobs antiguos.

Si necesita liberar almacenamiento, debe utilizar la API de GitLab. Hay un único punto final que le permite borrar todos los datos del proxy de dependencia almacenados para un grupo específico.

Cree un token de acceso personal haciendo clic en su perfil en la parte superior derecha, haciendo clic en “Tokens de acceso” en la barra lateral izquierda y agregando un nuevo token de acceso con el alcance de la API.

A continuación, utilice curl para eliminar la caché del proxy de dependencia de un grupo:

curl --request DELETE --header "PRIVATE-TOKEN: <Access-Token>" https://gitlab.example.com/api/v4/groups/<Group-Id>/dependency_proxy/cache

Para encontrar el ID de su grupo, visite la página de inicio del grupo que desea limpiar. El ID del grupo se mostrará junto a su nombre.

Conclusión

Habilitar el proxy de dependencia es un paso sencillo que mejora la resiliencia de sus canalizaciones. Si Docker Hub deja de funcionar, el proxy seguirá proporcionando a su canalización versiones de imágenes almacenadas en caché.

Dependency Proxy también le ayuda a mantenerse dentro de los límites de velocidad de Docker Hub. Solo necesitarás extraer imágenes de Docker Hub cuando realmente cambien. Para un equipo activo que ejecuta muchas canalizaciones cada día, esto puede ayudarle a evitar tener que actualizar a un plan Docker Hub premium.

Resumen del Contenido