doc-locale/fr-fr/administration/packages/dependency_proxy.md
{{< details >}}
{{< /details >}}
{{< history >}}
{{< /history >}}
Vous pouvez utiliser GitLab comme proxy de dépendances pour les artefacts amont fréquemment consultés, notamment les images de conteneurs et les packages.
Il s'agit de la documentation d'administration. Pour savoir comment utiliser les proxies de dépendances, consultez :
Le proxy de dépendances GitLab :
Le proxy de dépendances est activé par défaut. Si vous êtes administrateur, vous pouvez désactiver le proxy de dépendances. Pour désactiver le proxy de dépendances, suivez les instructions correspondant à votre installation GitLab.
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Modifiez /etc/gitlab/gitlab.rb et ajoutez la ligne suivante :
gitlab_rails['dependency_proxy_enabled'] = false
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet.
{{< /tab >}}
{{< tab title="Helm chart (Kubernetes)" >}}
Une fois l'installation terminée, mettez à jour le global appConfig pour désactiver le proxy de dépendances :
global:
appConfig:
dependencyProxy:
enabled: false
bucket: gitlab-dependency-proxy
connection:
secret:
key:
Pour plus d'informations, consultez Configure Charts using Globals.
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Une fois l'installation terminée, configurez la section dependency_proxy dans config/gitlab.yml. Définissez enabled sur false pour désactiver le proxy de dépendances :
dependency_proxy:
enabled: false
Redémarrez GitLab pour que les modifications prennent effet.
{{< /tab >}}
{{< /tabs >}}
Suivez les étapes pour les installations avec le package Linux pour chaque nœud Web et Sidekiq.
Le proxy de dépendances est activé par défaut, mais peut être désactivé par un administrateur. Pour le désactiver manuellement, suivez les instructions de la section Désactiver le proxy de dépendances.
Par défaut, les fichiers du proxy de dépendances sont stockés localement, mais vous pouvez modifier l'emplacement local par défaut ou même utiliser le stockage d'objets.
Les fichiers du proxy de dépendances pour les installations avec le package Linux sont stockés sous /var/opt/gitlab/gitlab-rails/shared/dependency_proxy/ et pour les installations depuis les sources sous shared/dependency_proxy/ (relatif au répertoire Git home).
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Modifiez /etc/gitlab/gitlab.rb et ajoutez la ligne suivante :
gitlab_rails['dependency_proxy_storage_path'] = "/mnt/dependency_proxy"
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet.
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Modifiez la section dependency_proxy dans config/gitlab.yml :
dependency_proxy:
enabled: true
storage_path: shared/dependency_proxy
Redémarrez GitLab pour que les modifications prennent effet.
{{< /tab >}}
{{< /tabs >}}
Au lieu de vous appuyer sur le stockage local, vous pouvez utiliser les paramètres de stockage d'objets consolidés. Cette section décrit le format de configuration antérieur. Les étapes de migration s'appliquent toujours.
En savoir plus sur l'utilisation du stockage d'objets avec GitLab.
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Modifiez /etc/gitlab/gitlab.rb et ajoutez les lignes suivantes (décommentez si nécessaire) :
gitlab_rails['dependency_proxy_enabled'] = true
gitlab_rails['dependency_proxy_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/dependency_proxy"
gitlab_rails['dependency_proxy_object_store_enabled'] = true
gitlab_rails['dependency_proxy_object_store_remote_directory'] = "dependency_proxy" # The bucket name.
gitlab_rails['dependency_proxy_object_store_proxy_download'] = false # Passthrough all downloads via GitLab instead of using Redirects to Object Storage.
gitlab_rails['dependency_proxy_object_store_connection'] = {
##
## If the provider is AWS S3, uncomment the following
##
#'provider' => 'AWS',
#'region' => 'eu-west-1',
#'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
#'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY',
##
## If the provider is other than AWS (an S3-compatible one), uncomment the following
##
#'host' => 's3.amazonaws.com',
#'aws_signature_version' => 4 # For creation of signed URLs. Set to 2 if provider does not support v4.
#'endpoint' => 'https://s3.amazonaws.com' # Useful for S3-compliant services such as DigitalOcean Spaces.
#'path_style' => false # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'.
}
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet.
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Modifiez la section dependency_proxy dans config/gitlab.yml (décommentez si nécessaire) :
dependency_proxy:
enabled: true
##
## The location where build dependency_proxy are stored (default: shared/dependency_proxy).
##
# storage_path: shared/dependency_proxy
object_store:
enabled: false
remote_directory: dependency_proxy # The bucket name.
# proxy_download: false # Passthrough all downloads via GitLab instead of using Redirects to Object Storage.
connection:
##
## If the provider is AWS S3, use the following
##
provider: AWS
region: us-east-1
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
##
## If the provider is other than AWS (an S3-compatible one), comment out the previous 4 lines and use the following instead:
##
# host: 's3.amazonaws.com' # default: s3.amazonaws.com.
# aws_signature_version: 4 # For creation of signed URLs. Set to 2 if provider does not support v4.
# endpoint: 'https://s3.amazonaws.com' # Useful for S3-compliant services such as DigitalOcean Spaces.
# path_style: false # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'.
Redémarrez GitLab pour que les modifications prennent effet.
{{< /tab >}}
{{< /tabs >}}
Après avoir configuré le stockage d'objets, utilisez la tâche suivante pour migrer les blobs et les manifestes existants du proxy de dépendances du stockage local vers le stockage distant. Le traitement est effectué par un worker en arrière-plan et ne nécessite aucune interruption de service.
Pour les installations avec le package Linux :
sudo gitlab-rake "gitlab:dependency_proxy:migrate"
Pour les installations compilées depuis les sources :
RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:dependency_proxy:migrate
Vous pouvez éventuellement suivre la progression et vérifier que tous les blobs et manifestes du proxy de dépendances ont bien été migrés à l'aide de la console PostgreSQL :
sudo gitlab-rails dbconsole pour les installations avec le package Linux exécutant la version 14.1 et antérieure.sudo gitlab-rails dbconsole --database main pour les installations avec le package Linux exécutant la version 14.2 et ultérieure.sudo -u git -H psql -d gitlabhq_production pour les instances compilées depuis les sources.Vérifiez que objectstg (où file_store = '2') contient le nombre total de blobs et de manifestes du proxy de dépendances pour chaque requête respective :
gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM dependency_proxy_blobs;
total | filesystem | objectstg
------+------------+-----------
22 | 0 | 22
gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM dependency_proxy_manifests;
total | filesystem | objectstg
------+------------+-----------
10 | 0 | 10
Vérifiez qu'il n'y a pas de fichiers sur le disque dans le dossier dependency_proxy :
sudo find /var/opt/gitlab/gitlab-rails/shared/dependency_proxy -type f | grep -v tmp | wc -l
Le proxy de dépendances suit le flux d'authentification par jeton Docker v2, en émettant un JWT au client pour l'utiliser lors des requêtes de téléchargement. Le délai d'expiration du jeton est configurable à l'aide du paramètre d'application container_registry_token_expire_delay. Il peut être modifié depuis la console rails :
# update the JWT expiration to 30 minutes
ApplicationSetting.update(container_registry_token_expire_delay: 30)
L'expiration par défaut et l'expiration sur GitLab.com est de 15 minutes.
Modifiez /etc/gitlab/gitlab.rb et ajoutez les lignes suivantes :
gitlab_workhorse['env'] = {
"http_proxy" => "http://USERNAME:[email protected]:8080",
"https_proxy" => "http://USERNAME:[email protected]:8080"
}
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet.