쿠버네티스 교육

20. Kube 교육 - Local GitLab Repository

Jerry_이정훈 2021. 6. 4. 16:50
728x90

실습

  • Local GitLab Repo 설치
  • git commit & push

Why GitLab
Kube 환경에서는 Helm Chart 등 YAML 파일을 공유할 Git Repo가 필수적입니다. 기존 VM 환경과 다른 점 입니다. Public Github을 사용해도 되지만 외부에 오픈되었고(혹은 유료 Github Enterprise를 사용하면 Private 사용 가능합니다.) 최근에는 github 장애도 종종 발생하여 Local GitLab 환경을 더 많이 선호 합니다.

GitLab은 잘 사용하면 CI/CD, Container Repository, DevSecOps 등 모든게 다 가능하다고 합니다. (물론 유료이지만. 참고로 기업 가치가 무료 3조, 대단합니다. 올해 상장 예정이라고 합니다.)

GitLab 설치
아쉽게도 GitLab은 아직 On-prem Kube 환경 설치를 아직 공식적으로 지원하지 않습니다. (저는 억지로 하다가 여러 번 실패하고) Docker-compose로 설치합니다.

먼저 GITLAB_HOME 디렉토리를 지정합니다.

export GITLAB_HOME=/srv/gitlab 
참고로 srv 디렉토리는 서버를 위한 폴더입니다. 주로 FTP, SFTP, RSync와 같은 프로토콜을 이용하여 외부 사용자와의 공유를 위해 사용되며 다른디렉토리에 비해 비교적 외부 사용자들이 쉽게 접근할 수 있습니다.

docker-compose 파일 입니다.

web:
  image: 'gitlab/gitlab-ee:latest'
  restart: always
  hostname: 'gitlab.spk.io'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.spk.io'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '1022:22'
  volumes:
    - '$GITLAB_HOME/config:/etc/gitlab'
    - '$GITLAB_HOME/logs:/var/log/gitlab'
    - '$GITLAB_HOME/data:/var/opt/gitlab'
  • hostname, external_url : 원하는 도메인을 지정합니다.
    : 사설 TLS 인증서를 사용하므로 IP가 아닌 도메인을 지정합니다. 
  • ports, 1022:22 - 22 포트는 local ssh 중이면 ssh 포트를 임의 포트로 변경합니다.
  • volumes: 설정/log/data 파일이 호스트 노드에 저장됩니다.

docker-compose 명령어를 이용하여 설치 합니다.
도커 컴포즈 참조 : https://soyoung-new-challenge.tistory.com/73

 

[Docker-Compose] 도커 컴포즈 설치 및 사용

이번 포스팅은 도커 컴포즈 설치와 사용방법 등을 다룬 내용입니다. 도커 설치 - 도커 컴포즈 설치 전, 도커를 설정하고 사용방법을 아래 포스팅을 통해 익힌다. - 도커 설치 포스팅 : https://soyoung

soyoung-new-challenge.tistory.com

5분 이상 소요되는데, (대단한) 인내를 가지시면 설치가 완료 됩니다. ^^ (이미지만 2.4G 대단합니다. 참고로 busybox 이미지는 1.24MB 입니다.)

[spkr@localhost ~]$ docker-compose -f gitlab-all-compose.yml up -d
Creating network "gitlab-network" with the default driver
Pulling gitlab-web (gitlab/gitlab-ee:latest)...
latest: Pulling from gitlab/gitlab-ee
4007a89234b4: Pull complete
5dfa26c6b9c9: Pull complete
0ba7bf18aa40: Pull complete
(생략)

드디어 docker 실행되었습니다.

[spkr@gitlab ~]$ docker ps
CONTAINER ID   IMAGE                     COMMAND             CREATED         STATUS                            PORTS
                                                                           NAMES
88dd8c205bb8   gitlab/gitlab-ee:latest   "/assets/wrapper"   5 seconds ago   Up 4 seconds (health: starting)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:1022->22/tcp, :::1022->22/tcp   spkr_web_1

사용한 도메인을 /etc/hosts 파일 혹은 IP로 접속하시면 아래와 같이 정상적으로 페이지 확인 가능합니다.

(초기 root 계정 비밀 번호 변경, 추가 admin 계정 등록 등의 작업이 필요합니다. 자세한 내용은 생략 하겠습니다.)

GitLab Project 생성
화면 좌측 상단 Projects - Create blank project 로 신규 Project를 생성합니다.

Private 로컬 네트워크 환경에서 사용하므로 Visibility Level - public으로 지정합니다. 필요에 따라 README.md 옵션을 체크 합니다.

이제 기존 Github과 동일한 Git Repository가 생성 되었습니다.

Git commit & push
메인 화면 오른쪽 Clone 메뉴 선택, HTTPS ‘Copy URL’ 합니다.

Local git clone

[spkr@erdia22 ~ (kspray:default)]$ git clone https://gitlab.spk.io/jerry/spk01.git 
Cloning into 'spk01'... remote: Enumerating objects: 3, done. 
remote: Counting objects: 100% (3/3), done. 
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done.

이제 개인 PC에 정상적으로 git 디렉토리가 생성 되었습니다.

[spkr@erdia22 ~ (kspray:default)]$ ls -lrt 
(이하 생략) 
drwxr-xr-x 3 spkr spkr 4096 Jun 3 08:40 spk01

기존에 사용하던 Redis Helm Chart를 git commit & push 합니다.

[spkr@erdia22 32.redis (kspray:default)]$ cp -r redis-14.1.0/ ~/spk01/ 
[spkr@erdia22 spk01 (kspray:default)]$ git add . && git commit -m "add redis helm chart" 
[master 58782bb] add redis helm chart 58 files changed, 8347 insertions(+) 
create mode 100644 redis-14.1.0/.helmignore 
create mode 100644 redis-14.1.0/Chart.lock 
create mode 100644 redis-14.1.0/Chart.yaml 
create mode 100644 redis-14.1.0/README.md 
create mode 100644 redis-14.1.0/charts/common/.helmignore 
(이하 생략) 
[spkr@erdia22 spk01 (kspray:default)]$ git push 
Counting objects: 71, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (69/69), done. 
Writing objects: 100% (71/71), 88.67 KiB | 3.69 MiB/s, done. 
Total 71 (delta 17), reused 0 (delta 0) To https://gitlab.spk.io/jerry/spk01.git 77e6caf..58782bb master -> master

이제 Admin UI에서 해당 파일을 확인 할 수 있습니다. 이렇게 사용하는 전체 Application YAML 파일을 사내 중앙 Git Repo 서버로 Push 하시면 전체 개발자 + 운영자 YAML 파일을 관리 할 수 있습니다.

참고로 저희는 전체 Application 별 YAML, Helm Chart 파일을 각 Application 별 디렉토리 이름으로 관리하고 있습니다. 디렉토리만 약 30개 되네요.

이상 GitLab 설치 및 git commit, push 방법에 대하여 공유 드렸습니다. 저희는 초기 설치도 어렵지 않았고 이 후 별 이슈가 없이 현재까지 잘 사용하고 있습니다. (다만, CI/CD 기능을 사용하려고 하였으나 여러 어려움으로 포기하고 현재는 다른 솔류션으로 사용 중 입니다.)

반응형