Nexus Docker Registry 作为外部 Gitlab 注册表

Nexus Docker Registry 作为外部 Gitlab 注册表

我使用 Gitlab CE 作为一体化 Docker 容器,使用 Nexus 作为工件存储。由于 Nexus 中已经有一个集成的 Docker 注册表,因此我想使用它。

在 CI/CD 过程中,这已经与 docker-login 和脚本一起将图像推送到外部注册表。

我了解到,Gitlab 也可以查看外部注册表。

所以我创建了一个密钥

openssl req -nodes -newkey rsa:4096 -keyout registry-auth.key -out registry-auth.csr -subj "/CN=gitlab-issuer"
openssl x509 -in registry-auth.csr -out registry-auth.crt -req -signkey registry-auth.key -days 3650

并配置 Gitlab 了解 Nexus Docker 注册表

gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "nexus.example.com"
gitlab_rails['registry_api_url'] = "https://example.example.com/"
gitlab_rails['registry_key_path'] = "/etc/gitlab/registry-certs/registry-auth.key"
gitlab_rails['registry_issuer'] = "gitlab-issuer"
gitlab_rails['gitlab_default_projects_features_container_registry'] = true

我也尝试设置

registry['internal_key'] = "-----BEGIN PRIVATE KEY-----\nMIIJRAIBADANBgkqhkiG9w0B...\n-----END PRIVATE KEY-----"

因为 中的私钥gitlab_rails['registry_key_path']总是被 覆盖registry['internal_key']

证书 /etc/gitlab/registry-certs/registry-auth.crt 存储在 Nexus 的 Security/SSL 证书下。

在 Gitlab 中,我可以在 Packages & Registry 下看到一个新的菜单项 Docker Registry。但是当我开始浏览时,它显示

There are no container images stored for this project 

因此 - 连接有效,但找不到任何清单。至少已经有一些标签等。但 Nexusrequest.log

10.255.0.15 - - [18/Jul/2022:13:04:28 +0000] "GET /repository/docker-hub/v2/ HTTP/1.1" 401 - 113 13 "GitLab/15.1.2" [qtp86803781-2306]

因此它未经过身份验证。但我不知道如何将 Docker 用户告知 Gitlab,也不知道如何配置 Nexus 以正确使用证书。当然,Nexus 中禁用了匿名访问。我需要在哪里将 Gitlab 用户与 Nexus 用户进行映射?这可能吗?

相关内容