DNS設定
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
ドメインネームシステム(DNS)は、IPアドレスとドメイン名を対応付けるための命名システムです。
GitLabインスタンスをIPアドレスのみで実行することもできますが、ドメイン名を使用すると、次のようになります:
覚えやすく、使いやすい。
HTTPSに必須。
(自動SSL証明書)のLet’s Encryptインテグレーションを利用するには、インスタンスのドメイン名がパブリックインターネット上で解決可能である必要があります。
ドメイン名レジストラの利用
ドメイン名をインスタンスのIPアドレスに関連付けるには、1つ以上のDNSレコードを指定する必要があります。ドメイン名のDNS設定にDNSレコードを追加することは、選択したプロバイダーに完全に依存し、このドキュメントのスコープ外です。
一般的に、プロセスは次のようになります:
DNSレジストラのコントロールパネルにアクセスし、DNSレコードを追加します。タイプは次のいずれかである必要があります:
AAAAACNAME
タイプは、インスタンスの基盤となるアーキテクチャによって異なります。最も一般的なものは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経由でクローンを作成したり、Web 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フィールドは、どのDNSサーバーが回答をクエリされたかを示します。この場合は、パブリックCloudflare DNSリゾルバーです。
ワイルドカードDNSエントリの使用
URL属性にワイルドカードDNSを使用できますが、それぞれに完全なドメイン名を指定する必要があります。
Let’s Encryptインテグレーションは、ワイルドカード証明書をフェッチしません。これは独自で行う必要があります。