一、场景描述
一般我们在公司内部会自己搭建私有的镜像仓库作为存储项目服务镜像使用,而且目前免费开源的镜像仓库就是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方式去进行配置,可以实现ctr和nerdctl去对接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:带有证书
- 现在我们需要把自签名Harbor域名的CA证书上传到
/etc/containerd/certs.d/harbor.devops.com/目录下 - 在该目录下创建
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"]
今天文章就先到这吧,溜了溜了~~~ 如果文章对你有帮助就动动你那发财的小手,点个赞留个言,给本站加点热度。谢谢支持!




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