DevOps

[DevOps] Kubernetes에 Gitlab Runner 설치 및 연동하기 (Helm)

아무일도없었다 2023. 5. 16. 19:28

[참고하면 좋은 포스팅]

 

[Kubernetes] kubespray 를 사용한 k8s 설치 (Rocky9)

[시스템 구성] 1. 방화벽 해제 + swapoff (모든 Node에서 수행) systemctl stop firewalld systemctl disable firewalld swapoff -a 2. SSH Key 생성 및 복사 ssh 생성 ( ※ Master Node 에서만 root 계정으로 진행 ! ) ssh-keygen -t rsa M

hackerpark.tistory.com

 

 

[Kubernetes] 쿠버네티스 대시보드 OpenLens 설치 (k8s dashboard openlens install)

kubernetes dashboard 를 설치하려고 검색을 해봤지만 몇 년 전에 사용하던 기본 대시보드만 자꾸 나오는 거 같다. 기존 꺼도 좋지만 불편한 점이 있었기에 다른 대시보드를 찾던 중 openlens 에 알게 되

hackerpark.tistory.com

 

[환경]

  • 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 추가

gitlab helm repo 추가

 

 

2. gitlab-runner Chart로 Install

  • Kubernetes Cluster 에서 Helm > Chart에 들어온 후 gitlab-runner 선택해서 Install

gitlab-runner 선택
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에 대해 부여할 권한을 설정한다.

 

gitlab 에서 확인 가능

 

 

그 외 세부사항은 아래에 추가한 링크를 참고한다.

 

https://docs.gitlab.com/charts/charts/gitlab/gitlab-runner/

 

Using the GitLab Runner chart | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

 


 

3. gitlab에서 연동 확인

  •  OpenLens에서 Pod가 정상적으로 Running 되는것을 확인한 후, gitlab project의 CI/CD에서 runner와 정상적으로 연동됐는지 확인한다.

Abailable specific runners 로 확인 가능하다.

 

이후. 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를 생성할 수 있는 권한이 추가된다.

반응형