1、创建非对称秘钥对,生成根证书,并生成用根证书私钥加密的域名证书,注意域名证书的CN必须为全名称,就是这种www.eureka01.com,不带前缀的如eureka01.com是不行的。并且还需要通过subjectAltName的IP属性指定该域名证书可用于ip地址。
这样不论是通过域名还是IP地址获取服务器上的镜像信息或pull镜像都没问题了。
2、启动docker registry并指定域名的证书和秘钥对地址。
由于registry是运行在docker容器中的,所以需要先将域名证书和秘钥对的路径挂载到容器内,然后再将它们俩加载为容器内registry运行的环境变量。
3、这样docker registry的服务器端就配置好了,接下来就是客户端的配置。
4、在所有运行docker客户端的机器中,在docker的证书配置目录下,按照[ip:port]的格式建立对应文件夹,然后将生成域名证书时用到的根证书复制到此处,这样客户端在从这个仓库地址获取镜像时,将会用这个根证书去验证服务器的证书是否正确。
5、上面只是解决了仓库证书的验证问题,接下来还需要在kubernetes中建立存放用户名和密码的secret,以便完成登录验证。这里需要注意的是创建secret的命名空间必须与部署镜像的命名相同,否则将无效。