gitlab에서 docker registry를 사용할 수 있는 걸 알게 됐다. reg.example.com과 같은 도메인 주소로 registry 접근이 가능하게 설정하는 방법을 포스팅 하겠다.
nginx configuration 설정
$ sudo vi /etc/nginx/sites-available/reg.conf
먼저 reg.conf 파일을 위 경로에 생성하고 아래 코드와 같이 설정한다. reg.example.com이 도메인 경우 설정이다. 127.0.0.1:5000은 실제 registry가 동작중인 port 정보다. SSL 관련 설정은 certbot을 이용해서 자동생된 부분이다.
server { server_name reg.example.com; proxy_set_header X-Forwarded-For $remote_addr; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 1200s; # used for view/edit office file via Office Online Server client_max_body_size 0; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/reg.example.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/reg.example.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = reg.example.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name reg.example.com; return 404; # managed by Certbot }
파일 생성 후 site-enabled에 configuration 파일을 링크 설정한다.
$ sudo ln -s /etc/nginx/sites-available/reg.conf /etc/nginx/sites-enabled/reg.conf $ sudo /etc/init.d/nginx restart
다음으로는 gitlab 설정을 한다.
sudo vi /etc/gitlab/gitlab.rb
gitlab.rb에 다음을 설정한다.
registry_external_url 'https://reg.example.com registry_nginx['listen_port'] = 80
gitlab reconfigure / restart
$ sudo gitlab-ctl reconfigure $ sudo gitlab-ctl restart
동작 확인하기
docker 명령으로 다음과 같이 확인해보자.
$ docker login reg.example.com
위 명령을 사용하면 username과 password를 입력하라고 나오는데 gitlab 계정을 입력하면 된다.
Login Succeeded 메시지가 출력되면 정상적으로 설정이 완료된 것이다.
참고
- https://docs.gitlab.com/ee/administration/packages/container_registry.html#configure-container-registry-under-an-existing-gitlab-domain