Gitlab EE - 没有通配符域的 Gitlab 页面设置

ale*_*fer 6 self-hosting gitlab gitlab-omnibus gitlab-api gitlab-pages

我不知道如何在没有通配符域的自托管 Gitlab 实例上设置 Gitlab 页面。例如,我有1台服务器,有3个公共IP地址和域名:

  • 10.8.0.10 (git.example.com) - 主 GitLab 实例
  • 10.8.0.11 (registry.example.com) - 容器注册表
  • 10.8.0.12 (pages.example.com) - GitLab 页面

/etc/gitlab/gitlab.rb然后我像这样设置 Omnibus 配置:

external_url 'https://git.example.com'
nginx['enable'] = true
nginx['listen_addresses'] = ['10.8.0.10']


registry_external_url 'https://registry.example.com'
registry_nginx['enable'] = true
registry_nginx['listen_addresses'] = ['10.8.0.11']
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.example.com.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.example.com.key"

pages_external_url 'https://pages.example.com'
pages_nginx['enable'] = false
gitlab_pages['enable'] = true
gitlab_pages['cert'] = "/etc/gitlab/ssl/pages.example.com.crt"
gitlab_pages['cert_key'] = "/etc/gitlab/ssl/pages.example.com.key"
gitlab_pages['external_http'] = ['10.8.0.12:80']
gitlab_pages['external_https'] = ['10.8.0.12:443']
Run Code Online (Sandbox Code Playgroud)

例如,我有一个位于https://git.example.com/somegroupname/project的项目。我可以通过https://registry.example.com/somegroupname/project访问该项目的容器注册表,并使用命令拉取 Docker 映像docker pull registry.example.com/somegroupname/project

我知道 GitLab Pages 将命名空间设置为 A 记录。就我而言,它的设置类似于https://somegroupname.pages.example.com/project,但我无法使用此类域名。相反,我想将命名空间放置在这样的路径中:
https://pages.example.com/somegroupname/project
但我找不到任何设置或参数来启用此行为,并且它不适用于当前设置。所有页面都正确存储在默认路径中/var/opt/gitlab/gitlab-rails/shared/pages/。有人可以帮我吗?

Von*_*onC 0

GitLab 16.7(2023 年 12 月)现在应该支持这一点:

\n
\n

使用没有通配符 DNS 的 GitLab 页面

\n

以前,要创建 GitLab Pages 项目,您需要一个格式类似于name.example.io或 的域name.pages.example.io
\n此要求意味着您必须设置通配符 DNS 记录和 SSL/TLS 证书。

\n

在 GitLab 16.7 中,您可以设置没有DNS 通配符的 GitLab Pages 项目。此功能是一个实验。

\n

取消对通配符证书的要求可以减轻与 GitLab 页面相关的管理开销。由于组织对通配符 DNS 记录或证书的限制,某些客户无法使用 GitLab Pages。

\n

我们欢迎在问题 434372中提供与此功能相关的反馈。

\n

请参阅文档问题

\n
\n