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 查询
$ dig registry.gitlab.com
; <<>> DiG 9.10.6 <<>> registry.gitlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12967
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;registry.gitlab.com. IN A
;; ANSWER SECTION:
registry.gitlab.com. 300 IN A 35.227.35.254
;; Query time: 56 msec
;; SERVER: 172.16.0.1#53(172.16.0.1)
;; WHEN: Fri Mar 20 14:31:24 CDT 2020
;; MSG SIZE rcvd: 83
最终,状态应该为 NOERROR
,并且 ANSWER SECTION
有实际结果。
失败的 DNS 查询
$ dig fake.gitlab.com
; <<>> DiG 9.10.6 <<>> fake.gitlab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 50688
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;fake.gitlab.com. IN A
;; AUTHORITY SECTION:
gitlab.com. 900 IN SOA ns-705.awsdns-24.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
;; Query time: 101 msec
;; SERVER: 172.16.0.1#53(172.16.0.1)
;; WHEN: Fri Mar 20 14:51:58 CDT 2020
在此例中,status
为 NXDOMAIN
,没有 ANSWER SECTION
。SERVER
展示查询结果的 DNS 服务器。默认情况下,是运行 dig
命令的站点使用的主要 DNS 服务器。
使用通配符 DNS 条目
可以对 URL 属性使用通配符 DNS,但您必须为每个属性提供完整的域名。
Let’s Encrypt 集成不获取通配符证书。您必须自己 执行此操作。