GitLab_가이드

GitLab 러너 투구 차트

구일칠구 2022. 8. 2. 23:11

GitLab 러너 투구 차트

이 차트는 Google Kubernetes Engine 및 Azure Kubernetes Service에서 테스트되었습니다. 다른 Kubernetes 설치도 작동할 수 있습니다. 작동하지 않는 경우 문제 를 여십시오 .

GitLab Runner 인스턴스를 Kubernetes 클러스터에 배포하는 공식적인 방법은 gitlab-runnerHelm 차트를 사용하는 것입니다.

이 차트는 GitLab Runner를 다음과 같이 구성합니다.

  • GitLab Runner용 Kubernetes 실행기 를 사용하여 실행 합니다.
  • GitLab CI/CD에서 수신하는 각각의 새 작업에 대해 지정된 네임스페이스 내에 새 포드를 프로비저닝하여 실행합니다.

전제 조건

  • 클러스터에서 GitLab 서버의 API에 연결할 수 있습니다.
  • 베타 API가 활성화된 Kubernetes 1.4+.
  • kubectlCLI가 로컬에 설치되고 클러스터에 대해 인증되었습니다 .
  • 머신에 로컬로 설치된 Helm 클라이언트 .

Helm 차트를 사용하여 GitLab Runner 설치

GitLab Helm 리포지토리를 추가합니다.

helm repo add gitlab https://charts.gitlab.io
    

Helm 2를 사용하는 경우 Helm도 초기화해야 합니다.

helm init
    

파일 에 GitLab Runner를 구성 했으면 values.yaml다음을 실행합니다.

# For Helm 2
    helm install --namespace <NAMESPACE> --name gitlab-runner -f <CONFIG_VALUES_FILE> gitlab/gitlab-runner
    
    # For Helm 3
    helm install --namespace <NAMESPACE> gitlab-runner -f <CONFIG_VALUES_FILE> gitlab/gitlab-runner
    

어디에:

  • <NAMESPACE> GitLab Runner를 설치하려는 Kubernetes 네임스페이스입니다.
  • <CONFIG_VALUES_FILE>사용자 정의 구성이 포함된 값 파일의 경로입니다. 생성 하려면 Helm 차트를 사용하여 GitLab Runner 구성 섹션을 참조하세요 .

특정 버전의 GitLab Runner Helm Chart를 설치하려면 명령 에 추가 --version <RUNNER_HELM_CHART_VERSION> 하십시오 .helm install

Helm 차트를 사용하여 GitLab Runner 업그레이드

GitLab Runner를 업그레이드하기 전에 GitLab에서 실행기를 일시 중지하고 모든 작업이 완료되었는지 확인하십시오. 러너를 일시 중지하면 작업 완료 시 권한 부여 오류 와 같은 작업에서 발생하는 문제를 방지할 수 있습니다 .

GitLab Runner Chart가 설치되면 다음을 사용하여 구성 변경 및 차트 업데이트를 수행해야 합니다 helm upgrade.

helm upgrade --namespace <NAMESPACE> -f <CONFIG_VALUES_FILE> <RELEASE-NAME> gitlab/gitlab-runner
    

어디에:

  • <NAMESPACE> GitLab Runner가 설치된 Kubernetes 네임스페이스입니다.
  • <CONFIG_VALUES_FILE>사용자 정의 구성이 포함된 값 파일의 경로입니다. 생성 하려면 Helm 차트를 사용하여 GitLab Runner 구성 섹션을 참조하세요 .
  • <RELEASE-NAME>차트를 설치할 때 지정한 이름입니다. Helm 차트를 사용 하여 GitLab Runner 설치 섹션에서 gitlab-runner.

최신 버전이 아닌 특정 버전의 GitLab Runner Helm Chart로 업데이트하려면 명령 에 추가 --version <RUNNER_HELM_CHART_VERSION> 하십시오 .helm upgrade

사용 가능한 GitLab Runner Helm 차트 버전 확인

Helm Chart 및 GitLab Runner의 버전은 동일한 버전을 따르지 않습니다. 아래 명령을 사용하여 Helm 차트와 GitLab Runner 간의 버전 매핑을 가져옵니다.

# For Helm 2
    helm search -l gitlab/gitlab-runner
    
    # For Helm 3
    helm search repo -l gitlab/gitlab-runner
    

출력의 예는 다음과 같습니다.

NAME                    CHART VERSION   APP VERSION DESCRIPTION
    ...
    gitlab/gitlab-runner    0.14.0          12.8.0      GitLab Runner
    gitlab/gitlab-runner    0.13.1          12.7.1      GitLab Runner
    gitlab/gitlab-runner    0.13.0          12.7.0      GitLab Runner
    gitlab/gitlab-runner    0.12.0          12.6.0      GitLab Runner
    gitlab/gitlab-runner    0.11.0          12.5.0      GitLab Runner
    gitlab/gitlab-runner    0.10.1          12.4.1      GitLab Runner
    gitlab/gitlab-runner    0.10.0          12.4.0      GitLab Runner
    ...
    

Helm 차트를 사용하여 GitLab Runner 구성

values.yamlGitLab Runner 구성을 위한 파일을 만듭니다 . 값 파일이 기본값을 재정의하는 방법에 대한 정보는 Helm 문서 를 참조하십시오 .

기본 구성은 항상 values.yaml 차트 저장소에서 찾을 수 있습니다.

필수 구성

GitLab Runner가 작동하려면 구성 파일 에서 다음을 지정 해야 합니다 .

  • gitlabUrlhttps://gitlab.example.com- 주자를 등록할 GitLab 서버 전체 URL(예: ).
  • runnerRegistrationToken- GitLab에 새 주자를 추가하기 위한 등록 토큰입니다. 이것은 GitLab 인스턴스에서 검색 해야 합니다 .

추가 구성을 지정할 필요가 없다면 GitLab Runner를 설치할 준비가 된 것 입니다.

추가 구성

Helm Chart 0.23.0에 구성 템플릿 이 도입 되었습니다. 지원 중단 문제 를 참조하세요 .

구성 템플릿 파일 을 사용하여 러너를 구성 할 수 있습니다 . Helm 차트가 특정 러너 구성 옵션을 인식하지 않고도 구성 템플릿을 사용하여 러너의 모든 필드를 구성할 수 있습니다.

다음 은 차트 리포지토리 values.yaml파일 에 있는 기본 설정의 스니펫입니다 . config:섹션의 경우 형식은 에 포함하므로 ( toml대신 <parameter> = <value>) <parameter>: <value>이어야 config.toml합니다 values.yaml.

runners:
    config: |
    [[runners]]
    [runners.kubernetes]
    image = "ubuntu:16.04"
    

나머지 구성 은 에 설명되어 있습니다values.yaml .

새 구성 템플릿으로 마이그레이션

Helm Chart 0.23.0에 구성 템플릿 이 도입 되었습니다. 지원 중단 문제 를 참조하세요 .

values.yamlHelm Chart 버전 1.0이 도입되면 파일 에서 허용하는 많은 필드 가 제거됩니다. 가능한 한 빨리 다른 곳으로 마이그레이션하는 것이 좋습니다. 이러한 필드는 DEPRECATED:그 위에 주석으로 표시됩니다.

Kubernetes executor에서 지원하는 모든 구성 옵션 은 Kubernetes executor 문서 에 나열되어 있습니다 . 많은 필드에서 의 이전 이름 은 키워드values.yaml 와 동일 합니다 . 일부의 경우 이름을 바꿔야 합니다. 예를 들어 를 사용 하여 CPU 제한을 설정하는 경우: helpers

helpers:
    cpuLimit: 200m
    

이제 로 설정할 수 있습니다 helper_cpu_limit. 섹션 에서 toml형식( =대신 :)을 사용하고 있는지 확인합니다 .config:

runners:
    config: |
    [[runners]]
    [runners.kubernetes]
    image = "ubuntu:16.04"
    helper_cpu_limit = "200m"
    
    ## helpers:
    ##    cpuLimit: 200m
    
values.yaml충돌을 피하기 위해 파일 에서 이전 구성 값을 주석 처리하거나 제거해야 합니다 .

구성 템플릿과 함께 캐시 사용

구성 템플릿과 함께 캐시를 사용하려면 에서 다음 변수를 설정합니다 values.yaml.

  • runners.cache.secretName개체 스토리지 공급자의 비밀 이름( s3access, gcsaccess, google-application-credentials또는 azureaccess).
  • runners.config캐시 에 대한 다른 설정을 사용 합니다 . toml서식을 사용 합니다.

시즌3

예를 들어 다음은 정적 자격 증명으로 S3 를 구성하는 예입니다 .

runners:
    config: |
    [[runners]]
    [runners.kubernetes]
    image = "ubuntu:16.04"
    [runners.cache]
    Type = "s3"
    Path = "runner"
    Shared = true
    [runners.cache.s3]
    ServerAddress = "s3.amazonaws.com"
    BucketName = "my_bucket_name"
    BucketLocation = "eu-west-1"
    Insecure = false
    AuthenticationType = "access-key"
    
    cache:
    secretName: s3access
    

다음으로 다음 s3access을 포함하는 Kubernetes 시크릿을 작성하십시오.accesskeysecretkey

kubectl create secret generic s3access \
    --from-literal=accesskey="YourAccessKey" \
    --from-literal=secretkey="YourSecretKey"
    

구글 클라우드 스토리지(GCS)

직접 구성된 정적 자격 증명

다음 예는 액세스 ID 및 개인 키가 있는 자격 증명으로 GCS 를 구성하는 방법을 보여줍니다 .

runners:
    config: |
    [[runners]]
    [runners.kubernetes]
    image = "ubuntu:16.04"
    [runners.cache]
    Type = "gcs"
    Path = "runner"
    Shared = true
    [runners.cache.gcs]
    BucketName = "runners-cache"
    
    cache:
    secretName: gcsaccess
    

다음으로 다음 gcsaccess을 포함하는 Kubernetes 시크릿을 작성하십시오.gcs-access-idgcs-private-key

kubectl create secret generic gcsaccess \
    --from-literal=gcs-access-id="YourAccessID" \
    --from-literal=gcs-private-key="YourPrivateKey"
    

GCP에서 다운로드한 JSON 파일의 정적 사용자 인증 정보

다음 예시는 Google Cloud Platform에서 다운로드한 JSON 파일의 자격 증명으로 GCS를 구성 하는 방법을 보여줍니다 .

runners:
    config: |
    [[runners]]
    [runners.kubernetes]
    image = "ubuntu:16.04"
    [runners.cache]
    Type = "gcs"
    Path = "runner"
    Shared = true
    [runners.cache.gcs]
    BucketName = "runners-cache"
    
    cache:
    secretName: google-application-credentials
    

다음으로 Kubernetes 보안 비밀을 만들고 google-application-credentials함께 JSON 파일을 로드합니다.

kubectl create secret generic google-application-credentials \
    --from-file=gcs-application-credentials-file=./path-to-your-google-application-credentials-file.json
    

하늘빛

다음 예제에서는 Azure Blob Storage를 구성하는 방법을 보여줍니다 .

runners:
    config: |
    [[runners]]
    [runners.kubernetes]
    image = "ubuntu:16.04"
    [runners.cache]
    Type = "s3"
    Path = "runner"
    Shared = true
    [runners.cache.azure]
    ContainerName = "my_container_name"
    StorageDomain = "blob.core.windows.net"
    
    cache:
    secretName: azureaccess
    

다음으로 다음 azureaccess을 포함하는 Kubernetes 시크릿을 작성하십시오.azure-account-nameazure-account-key

kubectl create secret generic azureaccess \
    --from-literal=azure-account-name="YourAccountName" \
    --from-literal=azure-account-key="YourAccountKey"
    

에서 Helm 차트의 캐싱에 대해 자세히 알아보세요 values.yaml.

'GitLab_가이드' 카테고리의 다른 글

macOS에 GitLab Runner 설치  (0) 2022.08.03
RBAC 지원 활성화  (0) 2022.08.03
FreeBSD에 GitLab Runner 설치  (0) 2022.08.02
컨테이너에서 GitLab Runner 실행  (0) 2022.08.02
Geo를 사용한 다중 노드/HA 배포  (0) 2022.08.02