搞定Containerd与自签证书的不和谐,详解菜鸟都能读懂的解决方案

前 言

由于新版本的Kubernetes推崇使用Containerd作为容器运行引擎了,在使用Containerd的过程中遇到很多比Docker不习惯的问题,比如containerd的crictl命令工具功能太少啊,containerd登录自签证书的仓库时配置麻烦啊,等等。。。在使用中确实增添了不少麻烦,虽然都有现成的解决方案,但遇到问题还是有点不知所措。

本文就详细描述一下Containerd登录自签证书仓库时遇到的挫折和最终的解决方法。

一、问题描述

在使用Containerd作为容器引擎的环境中,登录自建Harbor仓库时,如果Harbor的WEB使用的Http协议还好,能够顺利登录,如果Harbor上配置了Https协议,Containerd对证书的检测还是很严格,要求Harbor的证书必须使用SAN的签署方式绑定域名才能正常登录,否则报错

这里有两种解决方法

一是在部署Harbor时,生成证书时使用SAN方式签发证书,并把Harbor使用的域名绑定到证书里,详情参考https://blog.csdn.net/gjjumin/article/details/131877583?spm=1001.2014.3001.5501

二是在containerd到配置文件/etc/containerd/config.toml里配置跳过自签证书到验证

这两种方法我都测试了,但都没成功

二、解决方法

结合实际,现实生产环境中但证书都是域名提供商给签发的证书,这种证书能够经过验证,也不会报不安全等提示,使用正式的证书能否解决这个问题呢,接下来测试一下

前提条件,需要在域名提供商(如阿里云)注册一个域名,注册域名都是收费的,可以选择一个便宜的后缀测试使用,经过实名认证,域名解析后即可正式访问。

配置域名解析时有个技巧,通常正式注册的域名都应该解析到正式的公网IP,这样公网用户可以通过域名访问到正式的应用,这里我们测试使用的话,解析地址可以配置成私有地址(比如192.168.1.xx/172.16.xx.xx/10.xx.xx.xx)这种解析关系同步过来之后,我们在私有网络内也可以使用域名访问私有地址(自己的域名只能自己测试使用)

如:

各大域名提供商付费提供的正式证书一般有效期是一年,还提供一种免费证书,免费证书一般有效期在1-3个月,能满足我们测试使用,如下是申请免费证书的过程,如下

域名必须是经过解析的,选择个人测试证书,勾选快捷签发,一般10分钟之内就会签发

签发完成后可以下载证书文件,在ingress中测试一般使用nginx类型的证书,下载解压之后如下两个文件

使用这两个文件创建harbor-Ingress的secret

然后修改harbor-ingress,引用刚才创建的secret

修改tls部分的secretName为我们创建的harbor-tls

三、测试效果

不再提示不安全,提示证书有效,证书有效时间

测试containerd登录成功


欢迎关注作者的公众号,公众号每天分享运维干货文章

  • 41
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值