注册表选项卡不起作用

时间:2016-10-18 10:36:54

标签: gitlab

我在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

我想我需要生成证书,如此处所解释的那样......

http://www.bonusbits.com/wiki/HowTo:Setup_HTTPS_for_Gitlab

3 个答案:

答案 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"