【问题标题】:Secure private docker-registry安全的私有 docker-registry
【发布时间】:2019-08-16 23:07:59
【问题描述】:

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

我已经通过helm安装了

现在我怎样才能使它安全(TLS 证书),以便我可以从 docker 和 kubernetes 部署推送和拉取注册表?

可以看到有Helm配置:

tlsSecretName   Name of secret for TLS certs

更新 - 当前状态: 我能够让cert-manager 使用 TLS 工作和安装:

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

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

【问题讨论】:

  • 这在我看来可以是一个广泛的话题,安全可以应用在网络级别、应用程序级别、防火墙等,请准确指出您指向的位置。
  • 确实是@Vishrant,但在这种情况下,我想它显然是针对 docker 用户的。他想保护服务层在 TLS 上运行
  • @xzesstence 哦,我在您的评论之前看到了一个编辑。

标签: docker kubernetes kubernetes-helm


【解决方案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/

也许你想用letsencrypt 证书检查这个startscript。 (未经我的测试) 这样做的好处是,您集成了letsencrypt服务,可以自动更新许可证 https://gist.github.com/PieterScheffers/63e4c2fd5553af8a35101b5e868a811e

编辑: 由于您在 Kubernetes 集群上使用 Docker,请查看这个很棒的教程 https://medium.com/@jmarhee/in-cluster-docker-registry-with-tls-on-kubernetes-758eecfe8254

【讨论】:

  • 谢谢,非常好的建议。我在 kubernetres 上运行并使用 Helm。关于证书,我正在考虑使用 stable/cert-manager
  • 我已经稍微更新了我的问题。在 k8s 上使用证书管理器。我将尝试按照您建议的链接查看创建 Ingress。谢谢,请告诉我:-)
猜你喜欢
  • 2019-07-02
  • 2015-12-17
  • 2014-12-29
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多