0부터 시작하는 Jenkins & GitLab 공부 - GitLab 을 사용해보자

Jaehong Lee·2022년 10월 28일
post-thumbnail

구성한 구조

구성한 구조 & 구성할 구조

  • 현재 위와 같은 구조를 구성하였다
  • master 에는 jenkins 를 pod 형태로 배포했으며, docker 를 이용해서 사설 저장소를 컨테이너로 배포하여 구축하였다
  • 이 저장소를 web 으로 확인하기 위해 registry web 컨테이너도 배포했으며 사설 저장소와 link 되어있다
  • jenkins-agent Cluster svc 도 형성되어있다. 여기에 Jenkins Pod 도 연결되어있다. Controller 에서 명령을 내리면, 각 Node 에 Jenkins Agent Pod 가 생성된다
  • Agent Pod 에는 docker 가 없기에 docker 명령 사용이 불가능하다. Jenkins Agent 설정에 들어가서 Node 에 실제 docker 가 설치된 경로인 /usr/bin/docker 를 지정하면, Agent Pod 와 /usr/bin/docker 가 Volume Mount 되어 Agent 에서 docker 명령을 사용하게 할 수 있다
    • 따라서 Agent 에서 docker 명령을 실행할 때, Mount 된 경로를 통해 docker 명령을 실행할 수 있다
  • Agent 는 명령 실행을 끝내면 Controller 에 보고한 후 삭제된다

  • 우리는 CI / CD 를 통해 위와 같은 구조를 만들고자 한다

Configure Clouds 는 Jenkins Agent 를 설정한다

  • Agent 는 Pod 형태로 생성되는데, 이때 Pod Template 은 Controller 가 다시 시작하면 모든 설정이 초기화 된다. 따라서 Helm 으로 Jenkins 를 설치할 때 미리 구성한 설정값을 읽어들이게 구성해야 한다

GitLab 을 사용해보자

Gitlab 설치 - Docker

Gitlab 의 두 가지 역활

  • hosting 의 역활 -> GITLAB 설치
  • Pipeline ( CI / CD 역활 ) -> GITLAB RUNNER 설치

Gitlab 을 Docker 기반의 Container 로 설치할 것이다. Docker-Compose 를 통해 설치할 것이므로 Docker-Compose 를 설치해 두어야 한다

root@gitlab:~# docker -v
Docker version 20.10.18, build b40c2f6
  • gitlab Node 에서 docker 설치를 확인하자
curl -L \
"https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose 
  • docker-compose 를 다운 받고, 실행 권한을 주자
root@gitlab:~# docker-compose -v
docker-compose version 1.24.1, build 4667896b
  • docker-compose 설치 확인
apt-get install -y curl openssh-server ca-certificates && curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash && sudo apt-get -y install gitlab-ce
  • gitlab 을 설치하자. 필요한 패키지를 설치하고, curl 을 통해 gitlab 설치 파일을 다운 받은 뒤 gitlab 설치를 진행하였다
       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.



     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  • 설치가 완료되었다!

Gitlab 설정

vi /etc/gitlab/gitlab.rb

external_url 'http://192.168.8.200' # external_url 'https://gitlab....' 를 수정하면 된다

gitlab-ctl reconfigure
  • external_url 을 수정하고, gitlab-ctl reconfigure 를 통해 변경된 사항을 반영하여 서비스를 구성하고, 새로 시작한다

Gitlab Password 확인

 /etc/gitlab/initial_root_password
  • Gitlab 의 최고 관리자인 root 의 초기 패스워드는 /etc/gitlab/initial_root_password 에 저장되어 있다. 단, 이는 24 시간 이내에 변경해야 한다

Gitlab 접속 - Password 변경

  • Node 의 Ip 로 접속하자. root 로 login 을 하는데, password 는 위에서 확인한 password 를 입력하자

  • Admin 에 들어가자

  • Users 에 들어가서 계정을 클릭하자

  • Edit 을 눌러서 Password 를 변경하자. test1234 로 변경하였다

사용자 추가

  • New user 를 누르자

  • Account 정보는 임의로 작성하고, Create user 해주자

  • Edit 을 눌러서 Password 를 설정해주자. 단, 이 Password 는 계속 사용할 수 있는 것이 아닌, 사용자가 로그인해서 Password 를 변경해주어야 한다

  • 해당 계정으로 login 하면, Password 를 변경할 수 있다. test1234 로 변경하자

회원가입

  • registor now 를 통해 계정을 만들어보자

  • 아직 해당 계정은 pending 상태라며 login 이 되지 않는다

  • root 로 로그인해서 현재 Pending 상태인 계정을 Approve 해주자

이제 해당 계정은 login 을 할 수 있다


Groups 추가

  • 새 Group 을 만들자

  • 위와 같이 설정 후 Create 해주자

Project 생성

  • 새 Project 를 생성하자

  • Create blank project 클릭

  • 위와 같이 설정 후 생성하자

Git Push 하기

  • 바탕화면에 새 폴더를 만들고, 우클릭하여 git bash 를 해주자
user@LAPTOP-CISI8I61 MINGW64 ~/Desktop/test1
$ touch test.txt

user@LAPTOP-CISI8I61 MINGW64 ~/Desktop/test1
$ echo "안녕하세요" > test.txt

user@LAPTOP-CISI8I61 MINGW64 ~/Desktop/test1
$ git init
  • 파일을 하나 만들고, git init 을 해주자

  • 위에서 표시한 부분을 입력해주자. 이는 프로젝트 생성시 나온다. Git global 을 설정하고, 저장소를 연결한 뒤, Push 할 파일을 추가한다. Push 는 git push origin master 를 입력해주자

  • git push origin master 를 하면 인증창이 뜬다. Gitlab 계정을 입력해주자

  • 파일이 업로드 되었다
profile
멋진 엔지니어가 될 때까지

1개의 댓글

comment-user-thumbnail
2023년 4월 6일

잘 보고 갑니다~ :)

답글 달기