Tools/Kubernetes

[Kubernetes기반 CI/CD환경설정 시리즈] 02. Helm을 이용한 Private GitLab 설치

MOMOBOB 2021. 12. 21. 19:04
반응형

 

아래의 Kubernetes기반 CI/CD환경설정 시리즈 01. NFS 서버 구성 포스팅에서 이어지는 내용입니다.

https://momobob.tistory.com/50

 

[Kubernetes기반 CI/CD환경설정 시리즈] 01. NFS 서버 구성

Kubernetes기반 CI/CD환경 설정해보며 정리했던 것들에 대해서 시리즈로 포스팅해 볼 예정입니다. 시리즈의 기본 환경은 4대의 VM(master1대, worker2대, NFS1대)의 노드 위에 쿠버네티스가 설치되어있는

momobob.tistory.com

 

NFS 서버설치를 이어서 아래의 쿠버네티스 클러스터 내에 파드로 GitLab을 올려보았습니다.

 

 

0. NFS VM에 디렉토리 추가 (NFS VM에서 실행)

  • 생성할 파드에 마운트할 디렉토리 생성
    • mkdir /mnt/nfs/gitlab
    • mkdir /mnt/nfs/gitlab/data
    • mkdir /mnt/nfs/gitlab/log
    • mkdir /mnt/nfs/gitlab/config
  • nfs server 재시작
    • systemctl restart nfs-kernel-server

 

1.  git clone (여기서부터 Master node에서 실행)

  • git clone https://github.com/choisungyoung/kubernetes-example
  • cd kubernetes-example

 

2.  namespace 생성

  • kubectl create ns gitlab

 

3.  설정 변경

  • cd 11.cloude-setup/gitlab
  • cd helm-charts/

 

4.  NFS 서버 ip설정

  • vi values.yaml
# gitlab image 
nameOverride: "" 
fullnameOverride: "" 
namespace: "gitlab" 

gitlabimage: "gitlab/gitlab-ce" 

nfs: 
  name: "nfs" 
  datasize: "5Gi" 
  logsize: "10Gi" 
  configsize: "1Gi" 
  ip: "10.100.0.105"

 

5.  NFS 서버 마운트 경로 설정

  • 아래 파일내용의 표시한 메타데이터 이름을 잘 보고 nfs 경로를 아래 파일 내용과 같이 수정함.
  • vi templates/persistentvolume.yml
apiVersion: v1 
kind: PersistentVolume 
metadata: 
  name: {{ template "pvdata" . }} 
 
 ... (중략) ...
 
  nfs: 
    path: /mnt/nfs/gitlab/data
    server: {{ .Values.nfs.ip }} 
 
--- 

apiVersion: v1 
kind: PersistentVolume 
metadata:  
  name: {{ template "pvlog" . }} 
 
 ... (중략) ...
 
  nfs: 
    path: /mnt/nfs/gitlab/log 
    server: {{ .Values.nfs.ip }} 
 
--- 

apiVersion: v1 
kind: PersistentVolume 
metadata: 
  name: {{ template "pvconfig" . }} 
 
 ... (중략) ...
 
  nfs: 
    path: /mnt/nfs/gitlab/config

 

  • NFS 서버에서 위에서 설정한 경로에 해당하는 디렉토리 생성
    • mkdir /mnt/nfs/gitlab
    • mkdir /mnt/nfs/gitlab/data
    • mkdir /mnt/nfs/gitlab/log
    • mkdir /mnt/nfs/gitlab/config
  • NFS 서버에서 exports 설정
    • vi /etc/exports(nfs서버에서 실행)에 아래 설정 추가
    • /mnt/nfs/gitlab *(rw,no_root_squash)
  • NFS 서버 재기동
    • systemctl restart nfs-kernel-server

 

6.  차트 설치

  • helm install gitlab ./helm-charts
  • GitLab 접속 (나의 경우 VM과 포트포워딩을 해놓은 상타라 로컬아이피로 접속)

 

 

반응형

 

7.  관리자 로그인

  • kubectl exec -it -n gitlab <gitlab pod id> -- bash
  • cd /etc/gitlab
  • cat initial_root_password

id : root
password : 위 텍스트 로그인
  • 관리자로 로그인 후 회원가입 승인

 

8.  사용자 로그인

 

9. 프로젝트 생성 후 clone url 확인

  • 파드 ID로 url 생성된 것을 볼 수 있음.

 

  • 저러한 Pod명으로된 DNS는 gitlab파드가 존재하지 않는 노드나 외부에서는 접근하여 프로젝트를 받을 수 없음.
  • 그렇기 때문에 외부에서도 접근할 수 있도록 external_url 수정
    • nfs 서버에 접속
    • vi /mnt/nfs/gitlab/config/gitlab.rb
    • 32라인의 external_url를 아래와 같이 CoreDNS로 수정
    • external_url ‘http://gitlab-gitlab.gitlab.svc'
      • <서비스 명>.<네임스페이스명>.<리소스명>
  • gitlab 파드 bash실행하여 설정 적용
    • kubectl exec --stdin --tty <파드명> -- /bin/bash
    • gitlab-ctl reconfigure
  • 재접속을 하여 url를 보면 쿠버네티스에서 제공하는 DNS(CoreDNS)로 설정되어 클러스터 내에서 접근가능하게 됨. 

 

 


Thank you!

 

 

반응형