개요
2025.02.07-[GitLab] Runner 설치 및 등록에서 Shell Executor인 Gitlab Runner를 설치해 봤는데, 실제 운영 서비스는 kubernetes 환경에서 동작한다. 이번 글에서는 호스트가 아닌 kubernetes 환경에서 gitlab runner을 설치해보고자 한다.
방법을 적어둔다.
참고로 gitlab runner 설치 환경은 killercoda.com이고, gitlab 서비스는 gitlab.com이다.
프로젝트 러너 생성
1. New project runner 버튼 클릭
프로젝트의 CI/CD 설정 페이지에서 New project runner 버튼을 클릭한다.
2. 신규 프로젝트 러너 생성
러너의 태그 값을 지정하고, 필요시 추가 구성 옵션을 설정한다. 설정이 완료되면 러너 만들기 버튼을 클릭한다.
쿠버네티스 러너라고 식별할 수 있는 정도로 태그를 지정하는 것 외에는 별도 설정 없이 생성했다. 별다른 이상이 없으면 아래와 같이 Runner created라는 메시지와 함께 러너 등록 페이지로 이동한다.
러너 배포
Kubernetes 환경에서 gitlab runner를 설치하고 구성하기 위해서는 다음과 같은 조건이 요구된다.
- 클러스터에서 GitLab API에 접속할 수 있어야 한다.
- Kubernetes 1.4 이상
- kubectl 설치
- Helm 설치
- values.yaml에 값 구성
테스트 환경이 killercoda.com이기 때문에 쿠버네티스 버전이나 명령어 도구, helm 설치 등은 이미 만족한 상태이다. values.yaml을 배포를 진행하면서 구성하겠다.
배포 방법은 다음과 같다.
1. GitLab Helm 저장소 추가
helm repo add gitlab https://charts.gitlab.io
2. 사용할 수 있는 Chart 버전 확인
helm search repo -l gitlab/gitlab-runner
명령어를 실행하면 사용할 수 있는 버전을 확인할 수 있는데, 이번 글에서는 최신 버전을 사용해 보도록 하겠다. 필요시 helm install 수행하면서 버전을 지정하면 된다.
3. values.yaml 구성
기본 values.yaml : https://gitlab.com/gitlab-org/charts/gitlab-runner/blob/main/values.yaml
기본적으로 gitlab-runner를 동작시키기 위해서는 values.yaml 내 아래 값에 설정이 별도로 필요하다.
.. 생략 ..
## 러너를 등록할 GitLab Server URL (프로토콜 포함하여 기재)
## ref: https://docs.gitlab.com/runner/commands/index.html#gitlab-runner-register
##
gitlabUrl: https://gitlab.com/
## GitLab 서버에 새 러너를 추가하기 위한 토큰 값
## 등록 페이지 1단계에서 확인할 수 있다.
##
runnerToken: "TOKEN"
## RBAC 지원
rbac:
## Role과 RoleBinding 생성 여부 지정
##
create: true
## ServiceAccount 설정
##
serviceAccount:
## ServiceAccount 생성 여부 지정
##
create: true
## ServiceAccount 이름 (`gitlab-runner.fullname` 형식으로 생성)
##
name: "gitlab-runner.pipelne-test"
rbac 관련 설정은 확인해보니 serviceAccount.create 값 자체는 중요하지 않고, rbac.create와 serviceAccount.name을 지정해주어야 하는 것 같다.
4. gitlab-runner 배포
아래 명령을 사용하여 gitlab-runner를 배포한다.
helm install --namespace <NAMESPACE> gitlab-runner -f <CONFIG_VALUES_FILE> gitlab/gitlab-runner
# 예시
helm install --namespace default test-gitlab-runner -f gitlab-runner.yaml gitlab/gitlab-runner
helm upgrade --install --namespace default test-gitlab-runner -f gitlab-runner.yaml gitlab/gitlab-runner
배포 후 ServiceAccount나 pod 정도만 확인해 봤다. 배포 자체에 이상이 없으면 바로 gitlab 환경에서 다음과 같은 축하를 받을 수 있다.
동작 테스트
gitlab-ci.yml에 아래 내용을 추가하여 동작을 테스트해보았다.
test-job-2:
stage: test
script:
- echo "This job tests something"
- cat /etc/issue
tags:
- passwd-k8s-runner # 쿠버네티스 내 러너 태그
아주 잘 동작하는 모습을 확인할 수 있다.