GitLab 패키지 레지스트리 관리

*이 문서는 https://docs.gitlab.com/를 참조하여 작성되었습니다.

 

  • 패키지 기능을 통해 GitLab은 다음과 같은 리포지토리로 작동할 수 있습니다.

소프트웨어 저장소

기술

GitLab 버전으로 제공

소프트웨어 저장소

기술

GitLab 버전으로 제공

NuGet 리포지토리

GitLab NuGet Repository를 사용하면 GitLab의 모든 프로젝트에 NuGet 패키지를 저장할 자체 공간을 가질 수 있도록 합니다.

12.8+

코난 리포지토리

GitLab Conan Repository는 GitLab의 모든 프로젝트가 Conan 패키지 를 저장할 자체 공간을 가질 수 있도록 합니다.

12.4+

메이븐 리포지토리

GitLab Maven Repository는 GitLab의 모든 프로젝트가 Maven 패키지 를 저장할 자체 공간을 가질 수 있도록 합니다.

11.3+

NPM 레지스트리

GitLab NPM Registry를 사용하면 GitLab의 모든 프로젝트에 NPM 패키지 를 저장할 자체 공간이있을 수 있습니다 .

11.7+

 

패키지 기능 활성화

  • 패키지 기능이 활성화되면 기본적으로 모든 새 프로젝트에서 리포지토리를 사용할 수 있습니다. 기존 프로젝트에 사용하려면 프로젝트 설정에서 명시적으로 다음과 같이 설정해야합니다.

 

  1. 옴니버스 깃랩 설치

  • /etc/gitlab/gitlab.rb 다음 행을 편집 하고 추가

gitlab_rails['packages_enabled'] = true

파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용

2. 소스에서 설치

  • config/gitlab.yml 다음 행을 편집 하고 추가

packages: enabled: true

파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용

로컬 스토리지 경로 변경

  • GitLab 설치 패키지는 Git 홈 디렉토리 /var/opt/gitlab/gitlab-rails/shared/packages/와 관련하여 소스 설치 및 패키지 아래에 저장됩니다 shared/packages/ 로컬 스토리지 경로를 변경하려면 다음과 같이 설정해야합니다.

  1. 옴니버스 깃랩 설치

  • /etc/gitlab/gitlab.rb 다음 행을 편집 하고 추가

gitlab_rails['packages_storage_path'] = "/mnt/packages"

파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용

2. 소스에서 설치

  • config/gitlab.yml 다음 행을 편집 하고 추가

packages: enabled: true storage_path: shared/packages

파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용

객체 스토리지 사용

  • 로컬 스토리지에 의존하는 대신 오브젝트 스토리지를 사용하여 패키지를 저장할 수 있습니다.

 

  1. 옴니버스 깃랩 설치

  • /etc/gitlab/gitlab.rb 다음 행을 편집 하고 추가
    (필요한 경우 주석 해제)

packages: enabled: true ## ## The location where build packages are stored (default: shared/packages). ## #storage_path: shared/packages object_store: enabled: false remote_directory: packages # The bucket name. #direct_upload: false # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false). #background_upload: true # Temporary option to limit automatic upload (Default: true). #proxy_download: false # Passthrough all downloads via GitLab instead of using Redirects to Object Storage. connection: ## ## If the provider is AWS S3, uncomment 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), uncomment the following ## #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'.

파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용

2. 소스에서 설치

  • config/gitlab.yml 다음 행을 편집 하고 추가
    (필요한 경우 주석 해제)

packages: enabled: true ## ## The location where build packages are stored (default: shared/packages). ## #storage_path: shared/packages object_store: enabled: false remote_directory: packages # The bucket name. #direct_upload: false # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false). #background_upload: true # Temporary option to limit automatic upload (Default: true). #proxy_download: false # Passthrough all downloads via GitLab instead of using Redirects to Object Storage. connection: ## ## If the provider is AWS S3, uncomment 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), uncomment the following ## #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'.

파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용

컨테이너 레지스트리 활성화

  1. 옴니버스 깃랩 설치

  • GitLab 12.5부터 Let 's Encrypt 통합에 내장 된 Omnibus GitLab을 사용하는 경우 컨테이너 레지스트리는 기본 도메인의 포트 5050에서 자동으로 활성화됩니다.

  • 별도의 도메인을 사용하려면 컨테이너 레지스트리가 수신 할 도메인 이름을 구성하기만 하면 됩니다.

2. 소스에서 설치

1) 직접 레지스트리 를 설치해야합니다 .

2) 설치가 완료된 후 gitlab.yml 활성화하려면 레지스트리 설정을 구성해야 합니다.

3) 아래에있는 샘플 NGINX 구성 파일을 사용하고 , 및 TLS 인증서 경로와 일치하도록 편집하십시오.
lib/support/nginx/registry-ssl

gitlab.yml 내용은 다음과 같습니다.

registry: enabled: true host: registry.gitlab.example.com port: 5005 api_url: http://localhost:5000/ key: config/registry.key path: shared/registry issuer: gitlab-issuer

Parameter

Description

Parameter

Description

enabled

true / false  GitLab에서 레지스트리를 활성화합니다.  (Default False)

host

레지스트리가 실행되고 사용자가 사용할수 있는 호스트 URL입니다.

port

외부 레지스트리 도메인이 사용할 포트입니다.

api_url

레지스트리가 노출되는 내부 API URL입니다. 기본값은 http://localhost:5000입니다.

key

Registry의 개인 키 위치입니다.

path

이것은 Registry에 지정된 것과 동일한 디렉토리 이여야 합니다 이 경로는 GitLab 사용자, 웹 서버 사용자 및 레지스트리 사용자가 읽을 수 있어야합니다.

issuer

이것은 Registry에 구성된 값과 같아야합니다.

 

기존 GitLab 도메인에서 컨테이너 레지스트리 구성

  • 레지스트리가 기존 GitLab 도메인을 사용하도록 구성된 경우 기존 GitLab TLS 인증서를 재사용 할 수 있도록 포트에 레지스트리를 표시 할 수 있습니다.

  • Registry 포트 (Default 5000)와 다른 포트를 선택해야 충돌이 발생하지 않습니다.

  1. 옴니버스 깃랩 설치

1) GitLab에 의해 사용되는 기존 TLS 인증서와 키의 경로뿐만 아니라 레지스트리 URL을 포함해야 합니다
/etc/gitlab/gitlab.rb

registry_external_url 'https://gitlab.example.com:4567'

TLS 인증서가없고 /etc/gitlab/ssl/gitlab.example.com.crt 키를 /etc/gitlab/ssl/gitlab.example.com.key 주석 처리 하지 않은 경우 아래 행을 주석 해제.

registry_nginx['ssl_certificate'] = "/path/to/certificate.pem" registry_nginx['ssl_certificate_key'] = "/path/to/certificate.key"

2) 파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용.

3) 다음을 사용하여 확인.

openssl s_client -showcerts -servername gitlab.example.com -connect gitlab.example.com:443 > cacert.pem

 

2. 소스에서 설치

1) registry 설정을 아래와 같이 구성
/home/git/gitlab/config/gitlab.yml

registry: enabled: true host: gitlab.example.com port: 4567

2) 변경 사항을 적용 하려면 파일을 저장하고 GitLab 을 재시작
3) NGINX (도메인, 포트, TLS 인증서 경로)에서도 관련 사항을 변경

  • 사용자는 다음을 사용하여 GitLab Credentials 컨테이너 레지스트리에 로그인 할 수 있어야 합니다.

docker login gitlab.example.com:4567

자체 도메인에서 컨테이너 레지스트리 구성

  • 레지스트리가 자체 도메인을 사용하도록 구성된 경우 해당 특정 도메인에 대한 TLS 인증서 또는 기존GitLab 도메인의 하위 도메인에서 호스팅되는 경우 와일드 카드 인증서가 필요합니다

  • 수동으로 생성 된 SSL 인증서 (여기 설명)뿐만 아니라 Let 's Encrypt에 의해 자동으로 생성 된 인증서도 Omnibus 설치에서 지원됩니다.

 

  1. 옴니버스 깃랩 설치

1) TLS 인증서와 키를 입력하고 올바른 권한이 있는지 확인

/etc/gitlab/ssl/registry.gitlab.example.com.key /etc/gitlab/ssl/registry.gitlab.example.com.crt

2) TLS 인증서가 작성되면 다음을 사용하여 편집 
/etc/gitlab/gitlab.rb

registry_external_url 'https://registry.gitlab.example.com'

3) 파일을 저장하고 GitLab 을 재구성 하여 변경 사항을 적용
와일드 카드 인증서가 있는 경우 URL 외에 인증서 경로를 지정
/etc/gitlab/gitlab.rb

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

 

2. 소스에서 설치

 registry 다음 설정으로 구성
/home/git/gitlab/config/gitlab.yml

registry: enabled: true host: registry.gitlab.example.com

1) 변경 사항을 적용 하려면 파일을 저장하고 GitLab 을 재시작
2) NGINX (도메인, 포트, TLS 인증서 경로)에서도 관련 사항을 변경

 

  • 사용자는 이제 GitLab Credentials을 사용하여 컨테이너 레지스트리에 로그인 할 수 있어야 합니다.

docker login registry.gitlab.example.com