2020. 1. 24. 18:29ㆍTrouble Shooting
순서(목차)
- 서론
- 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이 필요로 합니다.
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 업로드
'Trouble Shooting' 카테고리의 다른 글
Gitlab-ci 적용해본 썰 #2 - container registry 업로드 (0) | 2020.02.13 |
---|---|
npm ERR! code 128 (0) | 2020.02.12 |
AWS S3 CORS(동일 출처 정책) Error (0) | 2020.01.23 |
vmware 가상머신 인터넷이 안될 때? (0) | 2019.12.23 |
[aiohttp] 세마포 제한 시간이 만료되었습니다 (0) | 2019.12.04 |