InfoGrab Docs

GitLab 의존성 프록시 관리

요약

컨테이너 이미지 및 패키지를 포함하여 자주 액세스하는 업스트림 아티팩트에 대한 의존성 프록시로 GitLab을 사용할 수 있습니다. 이것은 관리 설명서입니다. 의존성 프록시는 기본적으로 활성화되어 있습니다. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

히스토리

컨테이너 이미지 및 패키지를 포함하여 자주 액세스하는 업스트림 아티팩트에 대한 의존성 프록시로 GitLab을 사용할 수 있습니다.

이것은 관리 설명서입니다. 의존성 프록시를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요:

GitLab 의존성 프록시:

  • 기본적으로 켜져 있습니다.
  • 관리자가 끌 수 있습니다.

의존성 프록시 끄기#

의존성 프록시는 기본적으로 활성화되어 있습니다. 관리자인 경우 의존성 프록시를 끌 수 있습니다. 의존성 프록시를 끄려면 GitLab 설치에 해당하는 지침을 따르세요.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

    gitlab_rails['dependency_proxy_enabled'] = false
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

설치가 완료된 후 의존성 프록시를 끄도록 전역 appConfig를 업데이트합니다:

global:
  appConfig:
    dependencyProxy:
      enabled: false
      bucket: gitlab-dependency-proxy
      connection:
        secret:
        key:

자세한 내용은 Globals를 사용하여 차트 구성을 참조하세요.

  1. 설치가 완료된 후 config/gitlab.ymldependency_proxy 섹션을 구성합니다. 의존성 프록시를 끄려면 enabledfalse로 설정합니다:

    dependency_proxy:
      enabled: false
    
  2. 변경 사항을 적용하려면 GitLab을 재시작합니다.

멀티 노드 GitLab 설치#

각 웹 및 Sidekiq 노드에 대해 Linux 패키지 설치 단계를 따르세요.

의존성 프록시 켜기#

의존성 프록시는 기본적으로 켜져 있지만 관리자가 끌 수 있습니다. 수동으로 끄려면 의존성 프록시 끄기의 지침을 따르세요.

스토리지 경로 변경#

기본적으로 의존성 프록시 파일은 로컬에 저장되지만 기본 로컬 위치를 변경하거나 오브젝트 스토리지를 사용할 수 있습니다.

로컬 스토리지 경로 변경#

Linux 패키지 설치의 의존성 프록시 파일은 /var/opt/gitlab/gitlab-rails/shared/dependency_proxy/ 아래에 저장되고, 소스 설치의 경우 shared/dependency_proxy/(Git 홈 디렉터리 기준 상대 경로)에 저장됩니다.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

    gitlab_rails['dependency_proxy_storage_path'] = "/mnt/dependency_proxy"
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

  1. config/gitlab.ymldependency_proxy 섹션을 편집합니다:

    dependency_proxy:
      enabled: true
      storage_path: shared/dependency_proxy
    
  2. 변경 사항을 적용하려면 GitLab을 재시작합니다.

오브젝트 스토리지 사용#

로컬 스토리지에 의존하는 대신 통합 오브젝트 스토리지 설정을 사용할 수 있습니다. 이 섹션은 이전 구성 형식을 설명합니다. 마이그레이션 단계는 여전히 적용됩니다.

GitLab에서 오브젝트 스토리지 사용에 대한 자세한 내용을 읽어보세요.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다(필요한 경우 주석 처리 해제):

    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'.
    }
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

  1. config/gitlab.ymldependency_proxy 섹션을 편집합니다(필요한 경우 주석 처리 해제):

    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'.
    
  2. 변경 사항을 적용하려면 GitLab을 재시작합니다.

로컬 의존성 프록시 Blob 및 매니페스트를 오브젝트 스토리지로 마이그레이션#

오브젝트 스토리지를 구성한 후 다음 작업을 사용하여 기존 의존성 프록시 Blob 및 매니페스트를 로컬 스토리지에서 원격 스토리지로 마이그레이션합니다. 처리는 백그라운드 워커에서 수행되며 다운타임이 필요하지 않습니다.

  • Linux 패키지 설치의 경우:

    sudo gitlab-rake "gitlab:dependency_proxy:migrate"
    
  • 자체 컴파일 설치의 경우:

    RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:dependency_proxy:migrate
    

PostgreSQL 콘솔을 사용하여 진행 상황을 추적하고 모든 의존성 프록시 Blob 및 매니페스트가 성공적으로 마이그레이션되었는지 선택적으로 확인할 수 있습니다:

  • Linux 패키지 14.1 이하를 실행하는 설치의 경우 sudo gitlab-rails dbconsole.
  • Linux 패키지 14.2 이상을 실행하는 설치의 경우 sudo gitlab-rails dbconsole --database main.
  • 자체 컴파일 인스턴스의 경우 sudo -u git -H psql -d gitlabhq_production.

각 쿼리에 대해 objectstg(file_store = '2'인 경우)에 모든 의존성 프록시 Blob 및 매니페스트의 수가 있는지 확인합니다:

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

dependency_proxy 폴더의 디스크에 파일이 없는지 확인합니다:

sudo find /var/opt/gitlab/gitlab-rails/shared/dependency_proxy -type f | grep -v tmp | wc -l

JWT 만료 변경#

의존성 프록시는 Docker v2 토큰 인증 흐름을 따르며 클라이언트에 풀 요청에 사용할 JWT를 발급합니다. 토큰 만료 시간은 애플리케이션 설정 container_registry_token_expire_delay를 사용하여 구성할 수 있습니다. Rails 콘솔에서 변경할 수 있습니다:

# update the JWT expiration to 30 minutes
ApplicationSetting.update(container_registry_token_expire_delay: 30)

기본 만료 및 GitLab.com의 만료는 15분입니다.

프록시 뒤에서 의존성 프록시 사용#

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

    gitlab_workhorse['env'] = {
      "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
      "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
    }
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

GitLab 의존성 프록시 관리

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

컨테이너 이미지 및 패키지를 포함하여 자주 액세스하는 업스트림 아티팩트에 대한 의존성 프록시로 GitLab을 사용할 수 있습니다. 이것은 관리 설명서입니다. 의존성 프록시는 기본적으로 활성화되어 있습니다. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

히스토리

컨테이너 이미지 및 패키지를 포함하여 자주 액세스하는 업스트림 아티팩트에 대한 의존성 프록시로 GitLab을 사용할 수 있습니다.

이것은 관리 설명서입니다. 의존성 프록시를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요:

GitLab 의존성 프록시:

  • 기본적으로 켜져 있습니다.
  • 관리자가 끌 수 있습니다.

의존성 프록시 끄기#

의존성 프록시는 기본적으로 활성화되어 있습니다. 관리자인 경우 의존성 프록시를 끌 수 있습니다. 의존성 프록시를 끄려면 GitLab 설치에 해당하는 지침을 따르세요.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

    gitlab_rails['dependency_proxy_enabled'] = false
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

설치가 완료된 후 의존성 프록시를 끄도록 전역 appConfig를 업데이트합니다:

global:
  appConfig:
    dependencyProxy:
      enabled: false
      bucket: gitlab-dependency-proxy
      connection:
        secret:
        key:

자세한 내용은 Globals를 사용하여 차트 구성을 참조하세요.

  1. 설치가 완료된 후 config/gitlab.ymldependency_proxy 섹션을 구성합니다. 의존성 프록시를 끄려면 enabledfalse로 설정합니다:

    dependency_proxy:
      enabled: false
    
  2. 변경 사항을 적용하려면 GitLab을 재시작합니다.

멀티 노드 GitLab 설치#

각 웹 및 Sidekiq 노드에 대해 Linux 패키지 설치 단계를 따르세요.

의존성 프록시 켜기#

의존성 프록시는 기본적으로 켜져 있지만 관리자가 끌 수 있습니다. 수동으로 끄려면 의존성 프록시 끄기의 지침을 따르세요.

스토리지 경로 변경#

기본적으로 의존성 프록시 파일은 로컬에 저장되지만 기본 로컬 위치를 변경하거나 오브젝트 스토리지를 사용할 수 있습니다.

로컬 스토리지 경로 변경#

Linux 패키지 설치의 의존성 프록시 파일은 /var/opt/gitlab/gitlab-rails/shared/dependency_proxy/ 아래에 저장되고, 소스 설치의 경우 shared/dependency_proxy/(Git 홈 디렉터리 기준 상대 경로)에 저장됩니다.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

    gitlab_rails['dependency_proxy_storage_path'] = "/mnt/dependency_proxy"
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

  1. config/gitlab.ymldependency_proxy 섹션을 편집합니다:

    dependency_proxy:
      enabled: true
      storage_path: shared/dependency_proxy
    
  2. 변경 사항을 적용하려면 GitLab을 재시작합니다.

오브젝트 스토리지 사용#

로컬 스토리지에 의존하는 대신 통합 오브젝트 스토리지 설정을 사용할 수 있습니다. 이 섹션은 이전 구성 형식을 설명합니다. 마이그레이션 단계는 여전히 적용됩니다.

GitLab에서 오브젝트 스토리지 사용에 대한 자세한 내용을 읽어보세요.

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다(필요한 경우 주석 처리 해제):

    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'.
    }
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

  1. config/gitlab.ymldependency_proxy 섹션을 편집합니다(필요한 경우 주석 처리 해제):

    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'.
    
  2. 변경 사항을 적용하려면 GitLab을 재시작합니다.

로컬 의존성 프록시 Blob 및 매니페스트를 오브젝트 스토리지로 마이그레이션#

오브젝트 스토리지를 구성한 후 다음 작업을 사용하여 기존 의존성 프록시 Blob 및 매니페스트를 로컬 스토리지에서 원격 스토리지로 마이그레이션합니다. 처리는 백그라운드 워커에서 수행되며 다운타임이 필요하지 않습니다.

  • Linux 패키지 설치의 경우:

    sudo gitlab-rake "gitlab:dependency_proxy:migrate"
    
  • 자체 컴파일 설치의 경우:

    RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:dependency_proxy:migrate
    

PostgreSQL 콘솔을 사용하여 진행 상황을 추적하고 모든 의존성 프록시 Blob 및 매니페스트가 성공적으로 마이그레이션되었는지 선택적으로 확인할 수 있습니다:

  • Linux 패키지 14.1 이하를 실행하는 설치의 경우 sudo gitlab-rails dbconsole.
  • Linux 패키지 14.2 이상을 실행하는 설치의 경우 sudo gitlab-rails dbconsole --database main.
  • 자체 컴파일 인스턴스의 경우 sudo -u git -H psql -d gitlabhq_production.

각 쿼리에 대해 objectstg(file_store = '2'인 경우)에 모든 의존성 프록시 Blob 및 매니페스트의 수가 있는지 확인합니다:

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

dependency_proxy 폴더의 디스크에 파일이 없는지 확인합니다:

sudo find /var/opt/gitlab/gitlab-rails/shared/dependency_proxy -type f | grep -v tmp | wc -l

JWT 만료 변경#

의존성 프록시는 Docker v2 토큰 인증 흐름을 따르며 클라이언트에 풀 요청에 사용할 JWT를 발급합니다. 토큰 만료 시간은 애플리케이션 설정 container_registry_token_expire_delay를 사용하여 구성할 수 있습니다. Rails 콘솔에서 변경할 수 있습니다:

# update the JWT expiration to 30 minutes
ApplicationSetting.update(container_registry_token_expire_delay: 30)

기본 만료 및 GitLab.com의 만료는 15분입니다.

프록시 뒤에서 의존성 프록시 사용#

  1. /etc/gitlab/gitlab.rb를 편집하고 다음 줄을 추가합니다:

    gitlab_workhorse['env'] = {
      "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
      "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
    }
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.