安全的私人Docker注册表

时间:2019-03-26 14:14:56

标签: docker kubernetes kubernetes-helm

如何设置私有安全的docker-registry。

我已通过helm

安装

现在如何确保它的安全性(TLS证书),以便可以从docker和kubernetes部署中推入注册表?

我看到有一个头盔配置:

tlsSecretName   Name of secret for TLS certs

更新-当前状态 : 我能够使用cert-manager并使用TLS进行安装:

helm install stable/docker-registry --set tlsSecretName=example-com-tls

我的证书并不强-但我不清楚以下内容
1。
我现在可以创建一个Ingress(带有证书的秘密),该Ingress仅接受带有该证书的传入请求吗?我明天会看@xzesstence的建议链接
2。
我想我需要告诉docker push在哪里找到证书? 也许(我明天会尝试):https://docs.docker.com/engine/security/certificates/

1 个答案:

答案 0 :(得分:1)

查看官方Docker教程 https://docs.docker.com/registry/deploying/

尤其是重点 获取证书

因此,总的来说,您需要获取证书并将其放置在/ certs中(或更改以下docker run命令-v / cert的文件夹安装)。 还要检查证书名称,重命名为domain.crt或在docker run命令中更改文件名

然后运行

docker run -d \
  --restart=always \
  --name registry \
  -v "$(pwd)"/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -p 443:443 \
  registry:2

如果您没有证书,则可以使用letsencrypt https://letsencrypt.org/

也许您想使用letencrypt证书签出此开始脚本。 (从我这边开始未经测试) 这样做的好处是,您集成了letencrypt服务,可以自动更新许可证 https://gist.github.com/PieterScheffers/63e4c2fd5553af8a35101b5e868a811e

编辑: 由于您是在Kubernetes集群上使用Docker的,因此请仔细阅读本教程 https://medium.com/@jmarhee/in-cluster-docker-registry-with-tls-on-kubernetes-758eecfe8254