Harbor / 云原生

Containerd对接自签名Harbor

浅时光博客 · 10月24日 · 2022年 · 3.9w 次已读

一、场景描述


一般我们在公司内部会自己搭建私有的镜像仓库作为存储项目服务镜像使用,而且目前免费开源的镜像仓库就是Harbor最火;但是Harbor和Docker在使用时官方建议用HTTPS认证的,一般我们内部使用,就会通过自签名的方式去生成Harbor证书

但是现在有一个问题,就是我们的K8s容器运行时,从Docker转移至Containerd运行时如何对接自签名证书的Harbor仓库?

二、操作过程


1、HOSTS方式对接

  • 直接在config.toml中配置相关的证书参数对于Containerd默认使用的ctr原文链接:https://dqzboy.com是不生效的,因为ctr不使用CRI,因此它不读取配置plugins."io.containerd.grpc.v1.cri中配置的认证内容
  • 但是我们可以使用Containerd支持的hosts方式去进行配置,可以实现ctrnerdctl去对接Harbor

官方配置示例:https://github.com/containerd/containerd/pull/5309/files

首先我们需要创建hosts.toml文件或者证书文件存储的目录,注意这个创建的目录名称必须是Harbor的域名(如果不是则报x509);然后将证书文件或者hosts.toml文件放入该目录下才会生效

mkdir -p /etc/containerd/certs.d/harbor.devops.com/  

2、修改config.toml配原文链接:https://dqzboy.com

  • 找到 [plugins.”io.containerd.grpc.v1.cri”.registry]下的config_path,然后指定证书存储目录
# vim /etc/containerd/config.toml

3、重启contained服务

systemctl restart containerd

4、HOSTS认证方式

方式1:忽略证书

  • 忽略证书,就是我们只需要在 /etc/containerd/certs.d/harbor.devops.com/ 目录下面创建hosts.toml文件即可,不需要Harbor认证的自签名证书
]# vim /etc/containerd/certs.d/harbor.devops.com/hosts.toml
[host."https://harbor.devops.com"]
  capabilities = ["pull", "resolve","push"]
  skip_verify = true

#不需要重启服务,我们直接通过ctr跟nerdctl命令进行验证
~]# nerdctl login harbor.devops.com

方式2:带有证书

  1. 现在我们需要把自签名Harbor域名的CA证书上传到/etc/containerd/certs.d/harbor.devops.com/目录下
  2. 在该目录下创建hosts.toml文件并指定CA证书
~]# vim /etc/containerd/certs.d/harbor.devops.com/hosts.toml
[host."https://harbor.devops.com"]
  capabilities = ["pull", "resolve","push"]
  ca = ["ca.crt"]

今天文章就先到这吧,溜了溜了~~~ 如果文章对你有帮助就动动你那发财的小手,点个赞留个言,给本站加点热度。谢谢支持!


本文作者:浅时光博客
原文链接:https://www.dqzboy.com/11582.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

1 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. lsauth北京2024-9-6 · 11:32

    谢谢大佬,学习了