서버 인증서 적용기4. docker gitlab 도메인 적용하기

1. 개요

서버 인증서 적용기3으로도 리버스 프록시 서버 구축은 끝났지만, 사실 gitlab은 몇 가지 문제가 있다.

정상적인 gitlab이라면 아래처럼 나와야 하는데, 이전 설정을 여전히 가지고 있어 해당 빨간 네모칸이 도메인이 아닌, IP로 나오는 것이었다. 또한 인증서가 적용되지 않았다고 인식해 여전히 HTTP로 나오고 있었다. gitlab

관련 문서를 찾아보면 사실, gitlab은 bundled nginx를 내장하고 있으므로 많은 문서가 gitlab단에서 도메인 및 인증서를 바로 적용한다. (사실 훨씬 간단하다;)

그러나 난 앞단에 프록시 서버를 두어 처리하고자 했으므로, 해당 케이스에 맞는 해결책을 찾아야만 했다. 역시 구글신의 도움을 받아 관련 문서를 찾을 수 있었다.


2. gitlab 도메인 적용

2.1. docker-compose.yml

gitlab:
  image: 'gitlab/gitlab-ce:14.2.3-ce.0'
  restart: always
  hostname: 'gitlab.kello.com'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
            external_url 'https://gitlab.kello.com'
            gitlab_rails['gitlab_shell_ssh_port'] = 2222
            nginx['enable'] = true
            nginx['listen_https'] = false
            nginx['listen_port'] = 1111

  ports:
    - '1111:1111'
    - '2222:22'
  volumes:
    - '/home/gitlab/config:/etc/gitlab'
    - '/home/gitlab/logs:/var/log/gitlab'
    - '/home/gitlab/data:/var/opt/gitlab'

이전에 gitlab설치 시 사용했던 docker-compose.yml를 열고, 위와 같이 편집한다.

변경된 도메인에 맞게 hostname과, external url을 적용한다. 그러면서 external url에 https가 붙었는데, Gitlab문서에 따르면, gitlab은 external url에 https가 포함되면 SSL사용여부를 자동으로 감지한다고 한다.

그러나 나처럼 리버스 프록시 서버를 사용하는 경우 SSL처리를 임의 중단할 수 있으므로 그에 맞는 설정을 추가해야 한다.


2.2. gitlab.rb편집

2.1의 내용은 도커 컨테이너에 접속해 gitlab.rb를 직접 수정 후 리로드해주어야 한다. ‘docker gitlab설치’ 챕터의 2.2에서 상세 내용을 참조할 수 있다.


3. 결론

이렇게 하면 gitlab 내부의 일부 화면에서 ip 및 port를 그대로 물고있는 현상은 사라지고, 정상적으로 실제 도메인을 확인할 수 있다.

일단은 모두 정상처리된 것으로 보였는데… https로 1기가가 넘는 대형 레파지토리를 클론 시도하자 계속 접속 실패하는 현상이 발생했다. (ㅜㅜ)

해당 내용에 대한 트러블 슈팅 과정은 다음 챕터에 이어 작성할 예정이다.