쿠버네티스 일반

Gitlab Helm Install on On-Prem

Jerry_이정훈 2021. 7. 30. 13:58
728x90

Test 내역

  • Helm gitlab 설치
  • root 로그인, 신규 Project 생성, git push 까지

올해 초 까지 Helm으로 gitlab 설치가 안 되었다. 그래서 docker-compose로 설치 했다. 우연히 어제 gitlab 버전이 14.x 업그레이드 되었다고 해서 혹시나 Helm 설치 해 보니 정상적으로 잘 된다. 

Gitlab 설치 버전
[spkr@erdia22 ~ (ubuns:gitlab)]$ helm ls
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
gitlab  gitlab          1               2021-07-30 10:09:29.6603678 +0900 KST   deployed        gitlab-5.1.1    14.1.1

간단히 설치 내역 공유해 본다. 

사전 준비 사항으로 Kube Loadbalancer(MetalLB), default Storage Class가 있어야 한다. 나의 Kube Cluster 버전은 최신 1.21.2, Ubunu 20.04 이다. 

[spkr@erdia22 spk01 (ubuns:gitlab)]$ kgn
NAME       STATUS   ROLES                  AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
ubun20-1   Ready    control-plane,master   9d    v1.21.2   172.17.29.61   <none>        Ubuntu 20.04.2 LTS   5.4.0-65-generic   docker://20.10.7
ubun20-2   Ready    control-plane,master   9d    v1.21.2   172.17.29.62   <none>        Ubuntu 20.04.2 LTS   5.4.0-65-generic   docker://20.10.7
ubun20-3   Ready    control-plane,master   9d    v1.21.2   172.17.29.63   <none>        Ubuntu 20.04.2 LTS   5.4.0-65-generic   docker://20.10.7

먼저 Helm file을 다운 받고 압축 푼다. 

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

[spkr@erdia22 02.GitLab (ubuns:gitlab)]$ helm pull gitlab/gitlab
[spkr@erdia22 02.GitLab (ubuns:gitlab)]$ ls -lrt
-rw-r--r-- 1 spkr spkr 512441 Jul 30 11:11 gitlab-5.1.1.tgz
[spkr@erdia22 02.GitLab (ubuns:gitlab)]$ tar xvfz gitlab-5.1.1.tgz 
(생략)
[spkr@erdia22 02.GitLab (ubuns:gitlab)]$ cd gitlab-5.1.1/

기본 Helm values.yml 파일에 2가지만 수정하면 된다. 상세 파일은 github 파일을 참조한다. 

https://github.com/junghoon2/diamanti-k8s-bootcamp/blob/master/36.cicd/02.GitLab/gitlab-5.1.1/my-values.yaml

 

GitHub - junghoon2/diamanti-k8s-bootcamp: DIAMANTI 시스템 운영을 위한 DIAMANTI & Kubernetes 실습 자료 입니다.

DIAMANTI 시스템 운영을 위한 DIAMANTI & Kubernetes 실습 자료 입니다. - GitHub - junghoon2/diamanti-k8s-bootcamp: DIAMANTI 시스템 운영을 위한 DIAMANTI & Kubernetes 실습 자료 입니다.

github.com

[spkr@erdia22 gitlab-5.1.1 (ubuns:gitlab)]$ cp values.yaml my-values.yaml

편집하기 쉽게 VSCode에서 파일을 연다.

 

gitlab 용으로 사용할 임의의 도메인을 지정한다. 도메인이 gitlab.XXX.XXX 으로 gitlab이 자동으로 앞에 붙는다. 

Let’s Encrypt TLS 인증서가 자동으로 설치되는데 인증서에서 사용할 이메일을 임의로 지정한다.

여기까지 하면 정상적으로 설치가 된다. 나는 gitlab runner(gitlab ci/cd 사용하지 않음) 와 container registry(harbor 사용) 를 사용하지 않으니 해당 내역을 disable 한다.

  • 참고로 VSCode 사용하면 아래와 같이 ‘Compare Selected’ 하면 변경된 부분만 빠르게 확인 가능하다. 

registry disable

gitlab-runner disable 

이제 준비가 되었다. 설치를 시작한다.

[spkr@erdia22 gitlab-5.1.1 (ubuns:gitlab)]$ k create ns gitlab
[spkr@erdia22 gitlab-5.1.1 (ubuns:gitlab)]$ k ns gitlab
Context "ubuns" modified.
Active namespace is "gitlab".
(네임스페이스를 gitlab으로 변경한다.)

[spkr@erdia22 gitlab-5.1.1 (ubuns:gitlab)]$ helm install gitlab -f my-values.yaml .
W0730 13:26:05.293944   21346 warnings.go:70] policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
(생략)
NAME: gitlab
LAST DEPLOYED: Fri Jul 30 13:26:00 2021
NAMESPACE: gitlab
STATUS: deployed
REVISION: 1
NOTES:
NOTICE: The minimum required version of PostgreSQL is now 12. See https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/doc/installation/upgrade.md for more details.


Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=helm&release=14-1

gitlab 답게 시간이 많이 소요된다. 10분 이상 소요 후 정상적으로 설치 된다. 조급해하면 안된다. 

[spkr@erdia22 ~ (ubuns:gitlab)]$ kgp
NAME                                                    READY   STATUS      RESTARTS   AGE     IP              NODE       NOMINATED NODE   READINESS GATES
gitlab-certmanager-7d56f6fd9b-87dt5                     1/1     Running     0          9m6s    10.233.94.150   ubun20-3   <none>           <none>
gitlab-certmanager-cainjector-5cd57fbbbc-vvj7g          1/1     Running     0          9m6s    10.233.66.166   ubun20-2   <none>           <none>
gitlab-certmanager-webhook-548d88c996-hspjn             1/1     Running     0          9m6s    10.233.94.151   ubun20-3   <none>           <none>
gitlab-gitaly-0                                         1/1     Running     0          9m4s    10.233.94.159   ubun20-3   <none>           <none>
gitlab-gitlab-exporter-86cfc9747c-6d86g                 1/1     Running     0          9m6s    10.233.66.167   ubun20-2   <none>           <none>
gitlab-gitlab-shell-6899958857-cc5hl                    1/1     Running     0          8m49s   10.233.104.94   ubun20-1   <none>           <none>
gitlab-gitlab-shell-6899958857-wxb68                    1/1     Running     0          9m6s    10.233.66.168   ubun20-2   <none>           <none>
gitlab-issuer-1-5g52h                                   0/1     Completed   0          9m3s    10.233.94.158   ubun20-3   <none>           <none>
gitlab-migrations-1-lz79j                               0/1     Completed   3          9m3s    10.233.94.156   ubun20-3   <none>           <none>
gitlab-minio-658bd7d4fd-x6lcq                           1/1     Running     0          9m5s    10.233.104.95   ubun20-1   <none>           <none>
gitlab-minio-create-buckets-1-5nnsq                     0/1     Completed   0          9m3s    10.233.94.157   ubun20-3   <none>           <none>
gitlab-nginx-ingress-controller-6fc99758c8-lntt2        1/1     Running     0          9m5s    10.233.94.154   ubun20-3   <none>           <none>
gitlab-nginx-ingress-controller-6fc99758c8-rvd8v        1/1     Running     0          9m5s    10.233.94.153   ubun20-3   <none>           <none>
gitlab-nginx-ingress-default-backend-6964c77bb9-nqcxr   1/1     Running     0          9m5s    10.233.94.155   ubun20-3   <none>           <none>
gitlab-postgresql-0                                     2/2     Running     0          9m4s    10.233.94.160   ubun20-3   <none>           <none>
gitlab-redis-master-0                                   2/2     Running     0          9m3s    10.233.66.171   ubun20-2   <none>           <none>
gitlab-sidekiq-all-in-1-v1-66878879d6-c9gbp             1/1     Running     0          9m6s    10.233.94.152   ubun20-3   <none>           <none>
gitlab-sidekiq-all-in-1-v1-66878879d6-qb4xx             1/1     Running     0          2m48s   10.233.104.96   ubun20-1   <none>           <none>
gitlab-sidekiq-all-in-1-v1-66878879d6-v7wfr             1/1     Running     0          2m48s   10.233.66.172   ubun20-2   <none>           <none>
gitlab-task-runner-68f7b6b49c-f8x9d                     1/1     Running     0          9m6s    10.233.66.169   ubun20-2   <none>           <none>
gitlab-webservice-default-5cbfbdd9d6-djt4h              2/2     Running     0          9m5s    10.233.104.93   ubun20-1   <none>           <none>
gitlab-webservice-default-5cbfbdd9d6-xjjv8              2/2     Running     0          9m5s    10.233.66.170   ubun20-2   <none>           <none>

이제 gitlab 접속을 위해서 도메인을 확인한다.

[spkr@erdia22 gitlab-5.1.1 (ubuns:gitlab)]$ k get ingress
NAME                        CLASS    HOSTS             ADDRESS         PORTS     AGE
gitlab-minio                <none>   minio.spk01.io    172.17.29.164   80, 443   9m43s
gitlab-webservice-default   <none>   gitlab.spk01.io   172.17.29.164   80, 443   9m44s

브라우저를 사용하니 자기 OS hosts 파일에 위 HOSTS와 ADDRESS를 등록한다. 

Window hosts 파일 등록
172.17.29.164 gitlab.spk01.io

이제 웹브라우저로 접속하면 정상적이다.

초기 계정은 root 이고 initial password는 secret으로 확인한다. 

[spkr@erdia22 spk01 (ubuns:gitlab)]$ k get secrets gitlab-gitlab-initial-root-password -o jsonpath={.data.password}|base64 -d
xa4PC5vpWPiUUmBveePYhma(생략)

정상적으로 접속이 되고 이제 Gitlab 사용하면 된다.

 

User를 만들고 Project를 만들어서 (상세 과정 생략) git push 정상 여부 확인한다.

[spkr@erdia22 spk01 (spkcluster:gitlab01)]$ git add . && git commit -m "add test file"
[main 8894102] add test file
 1 file changed, 22 insertions(+)
 create mode 100644 gitlab-web-compose.yml

[spkr@erdia22 spk01 (spkcluster:gitlab01)]$ git push
Username for 'https://gitlab.spk01.io': jerry
Password for 'https://jerry@gitlab.spk01.io':
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 613 bytes | 613.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://gitlab.spk01.io/jerry/spk01.git
   6f53c17..8894102  main -> main

 

비록 간단한 코드이지만 git push까지 정상적이다. 

 

이제 docker 안쓰고 Kube 기반에서 gitlab 사용 할 수 있게 되었다. 

반응형