正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

DNS設定

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

ドメインネームシステム(DNS)は、IPアドレスとドメイン名を対応付けるための命名システムです。

GitLabインスタンスをIPアドレスのみで実行することもできますが、ドメイン名を使用すると、次のようになります:

  • 覚えやすく、使いやすい。

  • HTTPSに必須。

    (自動SSL証明書)のLet’s Encryptインテグレーションを利用するには、インスタンスのドメイン名がパブリックインターネット上で解決可能である必要があります。

ドメイン名レジストラの利用

ドメイン名をインスタンスのIPアドレスに関連付けるには、1つ以上のDNSレコードを指定する必要があります。ドメイン名のDNS設定にDNSレコードを追加することは、選択したプロバイダーに完全に依存し、このドキュメントのスコープ外です。

一般的に、プロセスは次のようになります:

  1. DNSレジストラのコントロールパネルにアクセスし、DNSレコードを追加します。タイプは次のいずれかである必要があります:

    • A
    • AAAA
    • CNAME

    タイプは、インスタンスの基盤となるアーキテクチャによって異なります。最も一般的なものはAレコードです。

  2. 構成が適用されたことをテストします。

  3. SSHを使用して、GitLabがインストールされているサーバーに接続します。

  4. 優先する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

この例では、statusNXDOMAINであり、ANSWER SECTIONはありません。SERVERフィールドは、どのDNSサーバーが回答をクエリされたかを示します。この場合は、パブリックCloudflare DNSリゾルバーです。

ワイルドカードDNSエントリの使用

URL属性にワイルドカードDNSを使用できますが、それぞれに完全なドメイン名を指定する必要があります。

Let’s Encryptインテグレーションは、ワイルドカード証明書をフェッチしません。これは独自で行う必要があります。