Gitlab-ci 적용해본 썰 #1. Container Registry 구성하기

2020. 1. 24. 18:29Trouble Shooting

728x90

순서(목차)

  • 서론
  • docker-compose를 사용하여 설정 구성
  • SSL 키 파일 설정
  • Gitlab 컴포즈 빌드
  • 컨테이너 레지스트리 로그인
  • 결과 확인

 

서론

Gitlab 을 온 프레미스(On Preimse, 설치형) 사용중인데, CI/CD 배포 자동화가 필요한데...

그래서 찾아보니 gitlab-ci 라는게 있는데 그게 그렇게 편리하다고 합니다.

 

근데 이걸 사용하려면 docker container registry가 필요하다는 군요?

그런데 이게 웬걸 Gitlab 최신 버전에서는 docker container registry를 같이 구동시켜준다고!?

 

그래서 docker container registry를 설정했는데 도커 이미지 파일이 업로드가 안되서 보니깐

원격지 registry 서버를 사용하려면 SSL이 필요하다는군요... 

한번에 좀 설명해주면 덧나나

 

그래서 Let's Encrypt로 gitlab 을 SSL로 구성했더니  

그런데 이게 웬걸 Gitlab 최신 버전에서는 Let's Encrypt에 자동갱신이 무려 같이 제공된다고...?!

하지만 이미 수동으로 해버린 찰나에 위에서 말했듯 프로젝트도... Registry 서버 도메인도

SSL이 필요로 합니다.

 

 

 

https://docs.gitlab.com/ee/administration/packages/container_registry.html

gitlab 최신버전은 현재 2020.01.23 기준 registry가 탑재되어 있으며 URL만 명시해주면 된다고 공식문서에서

뻘짓 만렙을 찍었군요.

근데 사실 저거 따라해봤는데 안됨 ㅋ__ㅋ 내가 이미 구성을 잘 못해서 그런가..

 

 

docker-compose를 사용하여 설정 구성

 

컨테이너 레지스트리를 활성화를 시키는 방법으로 저는 기존에도 docker-compose로 gitlab을 사용중이니,

docker-compose로 설정하겠습니다.

 

저는 docker-compose로 gitlab을 구성하였는데 기존에 낮은버전에서 최신으로 올리려니

몇버전을 거쳐서 해야 database migration이 된다고하여 여러 뻘짓을 해서 어쨋든 최신으로 올렸고...

 

 

 

docker-compose.yml

version: '3'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    hostname: gitlab
    container_name: gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
          external_url 'https://git.overmap.me'
          registry_external_url 'https://reg.overmap.me'

          gitlab_rails['smtp_enable'] = true
          gitlab_rails['smtp_address'] = "smtp.naver.com"
          gitlab_rails['smtp_port'] = 465
          gitlab_rails['smtp_user_name'] = "ID"
          gitlab_rails['smtp_password'] = "PASSWORD"
          gitlab_rails['smtp_domain'] = "smtp.naver.com"
          gitlab_rails['smtp_authentication'] = "login"
          gitlab_rails['smtp_enable_starttls_auto'] = true
          gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
          gitlab_rails['gitlab_email_from'] = 'ID@naver.com'
          gitlab_rails['gitlab_email_reply_to'] = 'ID@naver.com'
          gitlab_rails['mattermost_host'] = "https://overmap.me"
          
          nginx['redirect_http_to_https'] = true
          nginx['redirect_http_to_https_port'] = 80

    network_mode: bridge
    ports:
      - 80:80
      - 443:443
      - 5005:5005
      - 5050:5050
    volumes:
      - ./gitlab/config:/etc/gitlab
      - ./gitlab/logs:/var/log/gitlab
      - ./gitlab/data:/var/opt/gitlab
    restart: always
    extra_hosts:
      - "somehost:172.17.0.1"

설정상 도메인을 예시로 overmap.me 를 사용했습니다.

 

registry_external_url 'https://reg.overmap.me' 

이부분을 명시하면 registry URL을 저기로 맵핑해줍니다.

 

다만 서론에서 언급한것 처럼  레지스트리는 SSL을 필요로하며,

openssl을 사용하여 self-signed로 SSL을 설정 하셔도 되지만 docker login을 할때 x509 error ...

 

그래서 저는 어차피 letsencrypt로 한거 그냥 reg 서브도메인도 letsencrypt로 만들었습니다.

 

volumes를 보시면 ./gitlab/config:/etc/gitlab 핵심인데,

config 밑에 ssl 폴더가 있는데 letsencrypt가 생성한 fullchain.pem과 privkey.pem

두 파일을 파일명을 변경하여 복사해주세요!

 

 

SSL 키 파일 설정

각각 파일명을 다음과 같이 변경해주시면 됩니다.

./gitlab/config/ssl/fullchain.pem => ./gitlab/config/ssl/reg.overmap.me.crt
./gitlab/config/ssl/privkey.pem => ./gitlab/config/ssl/reg.overmap.me.key

 

 

 

 

Gitlab 컴포즈 빌드

그러고는 다시 아래 명령중 2가지중 하나로 재시작 해주시면 정상 작동 됩니다!

docker-compose up -d gitlab  # gitlab을 처음 설정하거나 컴포즈내용이 변경된 경우
docker restart gitlab  # gitlab 컴포즈의 변경점이 없는 경우

 

 

gitlab 프로젝트에 컨테이너 레지스트리 메뉴를 들어가보시면 나오는데

명령이 일부 생략 되어 있던것 같아요.. 

 

 

컨테이너 레지스트리 로그인

docker login reg.overmap.me

username: <gitlab-id>
password: <gitlab-pw>

 

build한 도커파일을 docker push 명령을 이용해서 push 후

gitlab 컨테이너 레지스트리 메뉴를 보면 업로드 되있는것을 확인할 수 있습니다.

 

 

 

결과 확인

 

 

 

 

 

Gitlab-ci 적용해본 썰 #2 - container registry 업로드

 

Gitlab-ci 적용해본 썰 #2 - container registry 업로드

Gitlab-ci 적용해본 썰 #1. Container Registry 구성하기 Gitlab-ci 적용 해본 썰 #1. Container Registry 구성하기 사건의 전말 Gitlab에서 Gitlab-ci를 사용해보고자 하려했더니, gitlab container registry를..

gmyankee.tistory.com

 

728x90