[참고하면 좋은 포스팅]
[환경]
- Kubernetes Cluster (필수)
- gitlab (필수)
- OpenLens (선택)
[목표]
- Helm을 사용하여 gitlab-runner를 Kubernetes 환경에 설치하고 gitlab project와 ci 연동하기
1. gitlab Helm Repository 추가
- OpenLens Menu > File > Preferences > Kubernetes > Helm Charts > Add Custom Helm Repo에서 gitlab repository 추가
2. gitlab-runner Chart로 Install
- Kubernetes Cluster 에서 Helm > Chart에 들어온 후 gitlab-runner 선택해서 Install
- Install 이후 나온 values.yaml 파일을 수정한다.
## The GitLab Server URL (with protocol) that want to register the runner against
## ref: https://docs.gitlab.com/runner/commands/index.html#gitlab-runner-register
##
gitlabUrl: http://gitlab.your-domain.com/
## The Registration Token for adding new Runners to the GitLab Server. This must
## be retrieved from your GitLab Instance.
## ref: https://docs.gitlab.com/ce/ci/runners/index.html
## ref: https://docs.gitlab.com/runner/register/
##
runnerRegistrationToken: ""
# ... 생략 ...
## For RBAC support:
rbac:
create: true
## Define specific rbac permissions.
## DEPRECATED: see .Values.rbac.rules
resources: ["pods", "pods/exec", "secrets"]
verbs: ["get", "list", "watch", "create", "patch", "delete"]
Option | Description |
gitlabUrl | gitlab의 project > Setting > CI/CD > runners 에서 확인할 수 있는 Register URL을 입력한다. |
runnerRegistrationToken | gitlab의 project > Setting > CI/CD > runners 에서 확인할 수 있는 Token을 입력한다. |
rbac.create | rbac을 생성한다. (create를 권장) |
rbac.resource | rbac으로 접근가능한 resource를 설정한다. |
rbac.verbs | rbac으로 resource에 대해 부여할 권한을 설정한다. |
그 외 세부사항은 아래에 추가한 링크를 참고한다.
https://docs.gitlab.com/charts/charts/gitlab/gitlab-runner/
3. gitlab에서 연동 확인
- OpenLens에서 Pod가 정상적으로 Running 되는것을 확인한 후, gitlab project의 CI/CD에서 runner와 정상적으로 연동됐는지 확인한다.
이후. gitlab-ci.yml을 활용하여 CI/CD를 잘 운용하면 된다.
+ 만약 gitlab-ci.yml 에서 runner의 tag 또는 name을 지정할 경우 helm의 values.yaml에서 tags 혹은 name에 값을 설정해주면 된다.
## Specify the tags associated with the runner. Comma-separated list of tags.
##
## ref: https://docs.gitlab.com/ee/ci/runners/configure_runners.html#use-tags-to-control-which-jobs-a-runner-can-run
##
tags: "my-runner"
## Specify the name for the runner.
##
# name: ""
4. (선택) gitlab-runner 에서 image build 하는 방법
만약 ci를 사용하여 image build를 하는 경우 Docker In Docker (Dind) 혹은 buildah 같은 image를 사용하여 container 안에서 image를 생성해야하는데 이 경우 gitlab-runner의 옵션을 추가해야한다.
- gitlab-runner privileged 옵션 추가
runners:
builds: {}
cache: {}
config: |
[[runners]]
[runners.kubernetes]
namespace = "{{.Release.Namespace}}"
image = "ubuntu:16.04"
privileged = true
기본 runner 설정은 ubuntu 이미지를 base로 사용하도록 되어있는데 이 부분에 privileged = true 옵션을 추가해야 container 내부에서 image를 생성할 수 있는 권한이 추가된다.
반응형
'DevOps' 카테고리의 다른 글
[DevOps] Jetbrains IDE를 활용한 Docker + Kubernetes 연동 (Clion, InteliJ, Goland ...) (0) | 2023.02.10 |
---|