GitLab Runner Helm 차트

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed

GitLab Runner Helm 차트는 Kubernetes 클러스터에 GitLab Runner 인스턴스를 배포하는 공식 방법입니다. 이 차트는 GitLab Runner를 다음과 같이 구성합니다.

  • GitLab Runner를 위한 Kubernetes executor를 사용하여 실행합니다.
  • 각 새 CI/CD 작업마다 지정된 네임스페이스에 새로운 pod를 프로비저닝합니다.

Helm 차트로 GitLab Runner 구성

GitLab Runner 구성 변경사항을 values.yaml에 저장하세요. 이 파일을 구성하는 데 도움이 필요하면 다음을 참조하세요.

  • 차트 레포지토리에 있는 기본 values.yaml 구성입니다.
  • Values Files에 대한 Helm 문서로, 값 파일이 기본 값보다 우선하는 방법을 설명합니다.

GitLab Runner가 올바르게 실행되려면 구성 파일에서 다음 값을 설정해야 합니다.

  • gitlabUrl: Runner를 등록할 GitLab 서버의 전체 URL(예: https://gitlab.example.com).
  • rbac: { create: true }: GitLab Runner가 작업을 실행하기 위해 pod를 생성하기 위한 RBAC(역할 기반 액세스 제어) 규칙을 생성합니다.
    • 기존 serviceAccount를 사용하려면 rbac: { serviceAccountName: "SERVICE_ACCOUNT_NAME" }도 설정하세요.
    • serviceAccount가 필요로 하는 최소한의 권한에 대해 알아보려면 Runner API 권한 구성을 참조하세요.
  • runnerToken: GitLab UI에서 Runner를 생성할 때 얻은 인증 토큰입니다.
    • 이 토큰을 직접 설정하거나 비밀로 저장하세요.

더 많은 선택적 구성 설정을 사용할 수 있습니다.

이제 Helm 차트를 사용하여 GitLab Runner 설치할 준비가 되었습니다!

Helm 차트로 GitLab Runner 설치

필수 조건:

  • 클러스터에서 GitLab 서버의 API에 접근할 수 있어야 합니다.
  • Kubernetes 1.4 이상이어야 하며 beta API가 활성화되어 있어야 합니다.
  • kubectl CLI가 로컬에 설치되어 있어야 하고, 클러스터에 인증되어 있어야 합니다.
  • Helm 클라이언트가 로컬 머신에 설치되어 있어야 합니다.
  • values.yaml에 필요한 모든 값을 설정했어야 합니다.

Helm 차트를 사용하여 GitLab Runner를 설치하려면 다음을 수행하세요:

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

    helm repo add gitlab https://charts.gitlab.io
    
  2. Helm 2를 사용하는 경우 helm init으로 Helm을 초기화합니다.
  3. 액세스할 수 있는 GitLab Runner 버전을 확인합니다.

    helm search repo -l gitlab/gitlab-runner
    
  4. 최신 버전의 GitLab Runner에 액세스할 수 없다면 다음 몤려 실행하여 차트를 업데이트합니다.

    helm repo update gitlab
    
  5. values.yaml 파일에 GitLab Runner를 구성한 후, 다음과 같이 명령을 실행하여 매개변수를 필요에 맞게 변경합니다.

    # Helm 2용
    helm install --namespace <NAMESPACE> --name gitlab-runner -f <CONFIG_VALUES_FILE> gitlab/gitlab-runner
    
    # 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 차트를 설치하려면 helm install 명령에 --version <RUNNER_HELM_CHART_VERSION>을 추가하세요. 차트의 아무 버전이나 설치할 수 있지만, 더 최신의 values.yml이 오래된 차트와 호환되지 않을 수 있습니다.

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

Helm 차트와 GitLab Runner는 동일한 버전 관리 방식을 사용하지 않습니다. 두 버전 간의 매핑을 보려면 사용하는 Helm 버전에 맞는 명령을 실행하세요.

# Helm 2용
helm search -l gitlab/gitlab-runner

# Helm 3용
helm search repo -l gitlab/gitlab-runner

출력 예시:

NAME                  CHART VERSION APP VERSION DESCRIPTION
gitlab/gitlab-runner  0.64.0        16.11.0     GitLab Runner
gitlab/gitlab-runner  0.63.0        16.10.0     GitLab Runner
gitlab/gitlab-runner  0.62.1        16.9.1      GitLab Runner
gitlab/gitlab-runner  0.62.0        16.9.0      GitLab Runner
gitlab/gitlab-runner  0.61.3        16.8.1      GitLab Runner
gitlab/gitlab-runner  0.61.2        16.8.0      GitLab Runner
...

Helm 차트로 GitLab Runner 업그레이드

필수 조건:

  • GitLab Runner 차트를 설치했어야 합니다.
  • GitLab에서 Runner를 일시 중지했어야 합니다. 이를 통해 작업 완료시 권한 에러와 같은 문제가 발생하지 않습니다.
  • 모든 작업이 완료되었는지 확인해야 합니다.

구성을 변경하거나 차트를 업데이트하려면 필요에 맞게 매개변수를 변경하여 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>: 설치할 때 차트에 지정한 이름입니다. 설치 섹션의 예에서는 gitlab-runner로 명명했습니다.
  • 가장 최신 버전이 아닌 GitLab Runner Helm 차트의 특정 버전으로 업데이트하려면 helm upgrade 명령에 --version <RUNNER_HELM_CHART_VERSION>을 추가하세요.

Helm 차트를 사용하여 GitLab Runner 제거

GitLab Runner를 제거하려면 다음을 수행합니다:

  1. GitLab에서 러너를 일시 중지하고 모든 작업이 완료되었는지 확인합니다. 이렇게 함으로써 완료 시 권한 오류와 같은 작업 관련 문제를 방지할 수 있습니다.
  2. 필요에 따라 수정하여 다음 명령을 실행합니다:

    helm delete --namespace <NAMESPACE> <RELEASE-NAME>
    
    • <NAMESPACE>는 GitLab Runner가 설치된 Kubernetes 네임스페이스입니다.
    • <RELEASE-NAME>은 설치할 때 차트에 지정한 이름입니다. 이 페이지의 설치 섹션에서는 gitlab-runner로 지정했습니다.