gitlab registry domain 설정 하기 with nginx

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

Leave a Reply