我在AWS服务器上安装了gitlab,它正在按预期工作。
http://ec2-54-167-34-63.compute-1.amazonaws.com/
但是当我点击“注册表”标签时,我显示页面未找到错误(500)
/etc/gitlab/gitlab.rb的相关部分
gitlab_rails['gitlab_default_projects_features_container_registry'] = true
# registry_external_url 'https://registry.gitlab.example.com'
registry_external_url 'http://ec2-54-167-34-63.compute-1.amazonaws.com:4567'
# Settings used by GitLab application
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "http://ec2-54-167-34-63.compute-1.amazonaws.com"
gitlab_rails['registry_port'] = "5005"
gitlab_rails['registry_api_url'] = "http://localhost:5000"
gitlab_rails['registry_key_path'] = "/var/opt/gitlab/gitlab-rails/certificate.key"
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
gitlab_rails['registry_issuer'] = "omnibus-gitlab-issuer"
# Settings used by Registry application
registry['enable'] = true
registry['username'] = "registry"
registry['group'] = "registry"
registry['uid'] = nil
registry['gid'] = nil
registry['dir'] = "/var/opt/gitlab/registry"
registry['log_directory'] = "/var/log/gitlab/registry"
registry['log_level'] = "info"
registry['rootcertbundle'] = "/var/opt/gitlab/registry/certificate.crt"
registry['storage_delete_enabled'] = true
更新
根据下面的日志,我需要 gitlab-registry.key 文件在正确的位置。这个文件是什么,我该如何生成一个?
tail /var/log/gitlab/gitlab-rails/production.log
Started GET "/root/test/container_registry" for 125.99.49.46 at 2016-10-24 08:29:27 +0000
Processing by Projects::ContainerRegistryController#index as HTML
Parameters: {"namespace_id"=>"root", "project_id"=>"test"}
Completed 500 Internal Server Error in 23ms (ActiveRecord: 3.5ms)
Errno::ENOENT (No such file or directory @ rb_sysopen - /var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key):
lib/json_web_token/rsa_token.rb:20:in `read'
lib/json_web_token/rsa_token.rb:20:in `key_data'
lib/json_web_token/rsa_token.rb:24:in `key'
lib/json_web_token/rsa_token.rb:28:in `public_key'
lib/json_web_token/rsa_token.rb:33:in `kid'
lib/json_web_token/rsa_token.rb:12:in `encoded'
app/services/auth/container_registry_authentication_service.rb:30:in `full_access_token'
app/models/project.rb:421:in `container_registry_repository'
app/controllers/projects/container_registry_controller.rb:28:in `container_registry_repository'
app/controllers/projects/container_registry_controller.rb:8:in `index'
lib/gitlab/request_profiler/middleware.rb:15:in `call'
lib/gitlab/middleware/go.rb:16:in `call'
更新2
我想我需要生成证书,如此处所解释的那样......
答案 0 :(得分:1)
检查GitLab服务器日志(因为它是错误500.此类日志示例:issue 23019)
GitLab 8.13存在待解决的问题:23575: No way to enable container registry,合并请求7037: Fix typo in project settings that prevents users from enabling container registry。
他们可能与您的问题有关。
Issue 23339还提到"整理出自签名证书问题(我的注册表与gitlab本身在不同的域名下)":这不应该是这种情况。
Issue 23181(推送到注册表仍然经常遇到unauthorized: authentication required
)表明错误已经消失了docker 1.11+(所以这取决于你在AWS上使用的docker版本)
关于OP编辑中提到的gitlab-registry.key
,如果声明正确,则应由简单的reconfigure
创建。
仔细检查:
事实证明这是我的错字 配置密钥为
registry_nginx["ssl_certificate"]
而非registry_nginx[ssl_certificate]
。
答案 1 :(得分:1)
尝试仅设置一些注册表设置,如:
registry_external_url 'http://ec2-54-167-34-63.compute1.amazonaws.com:4567'
如果您想保留默认值,请不要设置gitlab_rail['registry']
和registry['xxxxx']
,如果您不知道要修改的内容,请不要设置值。
关于证书,请查看gitlab.rb
文件的最底部,在这里您可以为注册表设置证书:
registry_nginx['ssl_certificate'] = "/path/to/my/cert.crt"
registry_nginx['ssl_certificate_key'] = "/path/to/my/key.key"
同时检查此命令的输出以检查GitLab实例:
sudo gitlab-rake gitlab:check
答案 2 :(得分:0)
就像deporclick那样,将注册表的证书设置为:
registry_nginx['ssl_certificate'] = "/path/to/my/cert.crt"
registry_nginx['ssl_certificate_key'] = "/path/to/my/key.key"