DNS 配置
域名系统 (DNS) 是用于将 IP 地址与域名匹配的命名系统。
虽然您可以仅使用其 IP 地址运行极狐GitLab 实例,但使用域名:
- 更容易记住和使用。
-
HTTPS 所需。
要利用 Let’s Encrypt 集成(自动 SSL 证书),您的实例域名必须可通过公共互联网解析。
使用名称注册商
要将域名与实例的 IP 地址关联,您必须指定一个或多个 DNS 记录。 将 DNS 记录添加到您域名的 DNS 配置完全取决于您选择的提供商,超出了本文档的范围。
通常,该过程类似于:
-
访问 DNS 注册商的控制面板并添加 DNS 记录,应该是以下类型之一:
A
AAAA
CNAME
类型取决于您的实例的底层架构。最常见的是 A 记录。
- 测试是否应用了配置。
- 使用 SSH 连接到安装了极狐GitLab 的服务器。
- 使用您喜欢的 GitLab 设置 编辑配置文件
(/etc/gitlab/gitlab.rb)
。
使用动态 DNS 服务
对于非生产用途,您可以使用动态 DNS 服务,例如 nip.io。
我们不建议将这些用于任何生产或长期实例,因为它们通常:
使用 DNS 的极狐GitLab 设置
以下极狐GitLab 设置对应于 DNS 条目。
极狐GitLab 设置 | 描述 | 配置 |
---|---|---|
external_url
| 此 URL 与主 GitLab 实例交互。它在通过 SSH/HTTP/HTTPS 进行克隆以及访问 Web UI 时使用。GitLab Runner 使用此 URL 与实例进行通信。 |
配置 external_url 。
|
registry_external_url
| 此 URL 用于与 Container Registry 进行交互。它可以由 Let’s Encrypt 集成使用。这个 URL 也可以使用与 external_url 相同的 DNS 条目,但在不同的端口上。
|
配置 registry_external_url 。
|
mattermost_external_url
| 此 URL 用于捆绑的 Mattermost 软件。它可以由 Let’s Encrypt 集成使用。 | |
pages_external_url
| 默认情况下,使用 GitLab Pages 的项目部署到此值的子域名。 | |
Auto DevOps 域名 | 如果您使用 Auto DevOps 部署项目,则此域名可用于部署软件。它可以在实例或集群级别定义。这是使用 GitLab UI 配置的,而不是在 /etc/gitlab/gitlab.rb 中。
|
故障排查
如果您访问特定组件时发生问题,或 Let’s Encrypt 集成失效,您可能遇到 DNS 问题。您可以使用 dig 工具,检查确认是否是 DNS 导致了您的问题。
成功的 DNS 查询
此示例使用 Public Cloudflare DNS 解析器,来确保查询是全局可解析的。
; <<>> DiG 9.10.6 <<>> registry.gitlab.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58748
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 12
;; QUESTION SECTION:
;registry.gitlab.cn. IN A
;; ANSWER SECTION:
registry.gitlab.cn. 600 IN CNAME gitlab-jh-public.tencentcloudcr.com.
gitlab-jh-public.tencentcloudcr.com. 600 IN A 150.158.225.202
;; AUTHORITY SECTION:
tencentcloudcr.com. 86400 IN NS ns4.dnsv3.com.
tencentcloudcr.com. 86400 IN NS ns3.dnsv3.com.
;; ADDITIONAL SECTION:
ns3.dnsv3.com. 32951 IN A 61.151.180.47
ns3.dnsv3.com. 32951 IN A 162.14.24.246
ns3.dnsv3.com. 32951 IN A 162.14.25.246
ns3.dnsv3.com. 32951 IN A 183.192.164.116
ns3.dnsv3.com. 32951 IN A 223.166.151.13
ns4.dnsv3.com. 32951 IN A 112.80.181.93
ns4.dnsv3.com. 32951 IN A 129.211.176.161
ns4.dnsv3.com. 32951 IN A 183.192.164.116
ns4.dnsv3.com. 32951 IN A 59.36.120.144
ns4.dnsv3.com. 32951 IN A 61.151.180.48
ns3.dnsv3.com. 32951 IN AAAA 2402:4e00:1430:1102:0:9136:2b2e:6001
ns4.dnsv3.com. 32951 IN AAAA 2402:4e00:1020:1264:0:9136:29b9:cb1f
;; Query time: 464 msec
;; SERVER: 192.168.43.1#53(192.168.43.1)
;; WHEN: Thu Jul 21 11:45:20 CST 2022
;; MSG SIZE rcvd: 359
最终,状态应该为 NOERROR
,并且 ANSWER SECTION
有实际结果。
失败的 DNS 查询
; <<>> DiG 9.10.6 <<>> fake.jihulab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 73
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;fake.jihulab.com. IN A
;; AUTHORITY SECTION:
jihulab.com. 60 IN SOA dns3.hichina.com. hostmaster.hichina.com. 2022052002 3600 1200 86400 600
;; Query time: 118 msec
;; SERVER: 192.168.43.1#53(192.168.43.1)
;; WHEN: Thu Jul 21 11:46:41 CST 2022
;; MSG SIZE rcvd: 105
在此例中,status
为 NXDOMAIN
,没有 ANSWER SECTION
。SERVER
展示查询结果的 DNS 服务器。默认情况下,是运行 dig
命令的站点使用的主要 DNS 服务器。在此例中为 Public Cloudflare DNS 解析器。
使用通配符 DNS 条目
可以对 URL 属性使用通配符 DNS,但您必须为每个属性提供完整的域名。
Let’s Encrypt 集成不获取通配符证书。您必须自己 执行此操作。