DNS 설정
도메인 이름 시스템(DNS)은 IP 주소와 도메인 이름을 연결하기 위해 사용되는 명칭 시스템입니다.
GitLab 인스턴스를 IP 주소만 사용하여 실행할 수 있지만, 도메인 이름을 사용하는 것이:
- 더 기억하기 쉽고 사용하기 편리합니다.
-
HTTPS에 필요합니다.
Let’s Encrypt 통합 (자동 SSL 인증서)를 활용하려면,
인스턴스의 도메인 이름이 공용 인터넷에서 해석 가능해야 합니다.
이름 등록 기관 사용하기
도메인 이름을 인스턴스의 IP 주소와 연결하려면, 하나 이상의 DNS 레코드를 지정해야 합니다.
도메인의 DNS 구성에 DNS 레코드를 추가하는 것은 선택한 제공자에 따라 완전히 달라지며,
이 문서의 범위를 벗어납니다.
일반적으로 과정은 다음과 유사합니다:
-
DNS 등록 기관의 제어판에 방문하여 DNS 레코드를 추가합니다.
레코드 유형은 다음 중 하나여야 합니다:A
AAAA
CNAME
유형은 인스턴스의 기본 아키텍처에 따라 다릅니다. 가장 일반적인 것은 A 레코드입니다.
- 구성이 적용되었는지 테스트합니다.
- SSH를 사용하여 GitLab이 설치된 서버에 연결합니다.
- 선호하는 GitLab 설정으로 구성 파일
(/etc/gitlab/gitlab.rb)
를 편집합니다.
DNS 레코드에 대해 더 알아보려면,
DNS 레코드 개요를 참조하세요.
동적 DNS 서비스 사용하기
비수도 사용의 경우, nip.io와 같은 동적 DNS 서비스를 사용할 수 있습니다.
생산 또는 장기 인스턴스에 대해서는 이러한 서비스를 권장하지 않으며, 종종 다음과 같은 문제가 있습니다:
DNS를 사용하는 GitLab 설정
다음 GitLab 설정은 DNS 항목에 해당합니다.
GitLab 설정 | 설명 | 구성 |
---|---|---|
external_url |
이 URL은 주 GitLab 인스턴스와 상호 작용합니다. SSH/HTTP/HTTPS로 클론할 때와 웹 UI에 접근할 때 사용됩니다. GitLab Runner는 이 URL을 사용하여 인스턴스와 통신합니다. |
external_url 구성하기. |
registry_external_url |
이 URL은 컨테이너 레지스트리와 상호 작용하는 데 사용됩니다. Let’s Encrypt 통합에서 사용할 수 있습니다. 이 URL은 external_url 과 동일한 DNS 항목을 사용하되 다른 포트에서 사용할 수 있습니다. |
registry_external_url 구성하기. |
mattermost_external_url |
이 URL은 번들된 Mattermost 소프트웨어에 사용됩니다. Let’s Encrypt 통합에서 사용할 수 있습니다. |
mattermost_external_url 구성하기. |
pages_external_url |
기본적으로 GitLab Pages를 사용하는 프로젝트는 이 값의 하위 도메인에 배포됩니다. |
pages_external_url 구성하기. |
Auto DevOps 도메인 | Auto DevOps를 사용하여 프로젝트를 배포하는 경우, 이 도메인을 사용하여 소프트웨어를 배포할 수 있습니다. 인스턴스 또는 클러스터 수준에서 정의할 수 있습니다. 이는 GitLab UI를 사용하여 구성되며, /etc/gitlab/gitlab.rb 에서 구성되지 않습니다. |
Auto DevOps 도메인 구성하기. |
문제 해결
특정 구성 요소에 접근하는 데 문제가 있거나 Let’s Encrypt 통합이 실패하는 경우 DNS 문제일 수 있습니다. DNS가 문제를 유발하고 있는지 확인하기 위해 dig 도구를 사용할 수 있습니다.
성공적인 DNS 쿼리
이 예는 쿼리가 전 세계적으로 해석 가능한지 확인하기 위해 퍼블릭 Cloudflare DNS 리졸버를 사용합니다. 그러나 Google Public DNS 리졸버와 같은 다른 퍼블릭 리졸버도 사용할 수 있습니다.
$ dig registry.gitlab.com @1.1.1.1
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> registry.gitlab.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3934
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;registry.gitlab.com. IN A
;; ANSWER SECTION:
registry.gitlab.com. 58 IN A 35.227.35.254
;; Query time: 8 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Wed Jan 31 11:16:51 CET 2024
;; MSG SIZE rcvd: 64
상태가 NOERROR
이고 ANSWER SECTION
에 실제 결과가 있는지 확인하십시오.
실패한 DNS 쿼리
$ dig fake.gitlab.com @1.1.1.1
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> fake.gitlab.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 25693
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;fake.gitlab.com. IN A
;; AUTHORITY SECTION:
gitlab.com. 1800 IN SOA diva.ns.cloudflare.com. dns.cloudflare.com. 2331688399 10000 2400 604800 1800
;; Query time: 12 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Wed Jan 31 11:17:46 CET 2024
;; MSG SIZE rcvd: 103
이 예에서는 status
가 NXDOMAIN
이고 ANSWER SECTION
이 없습니다. SERVER
필드는 이 경우 퍼블릭 Cloudflare DNS 리졸버에게 응답을 요청했음을 나타냅니다.
와일드카드 DNS 항목 사용
URL 속성에 대해 와일드카드 DNS를 사용할 수 있지만, 각 항목에 대해 전체 도메인 이름을 제공해야 합니다.
Let’s Encrypt 통합은 와일드카드 인증서를 가져오지 않습니다. 이 작업은 자신이 직접 수행해야 합니다.