一、 问题描述
今天介绍一下XX项目DCOS云平台一次故障,DCOS云平台使用的镜像仓库是将VMWARE公司开源Harbor项目集成进来的,期间项目镜像仓库正常使用了一年左右,最近一次使用命令PUSH镜像到镜像仓库或使用DCOS云平台自动化构建镜像上传镜像仓库提示抛错镜像仓库的https证书过期,因此这个问题影响了DCOS部分功能无法正常使用。它会影响到项目镜像构建与服务版本更新问题,但对于业务无影响。
二、问题影响
1、人工上传镜像至镜像仓库
2、DCOS平台镜像自动构建
3、DCOS平台更新服务版本
三、问题原因分析
人工打包好的docker镜像,然后通过命令将docker镜像上传到镜像仓库,提示报证书已过期。
报错信息:
Error response from daemon: Get https://x.x.x.x/v1/users/:x509:certificate has expired or
is not yet valid
说明由于镜像仓库使用的registry v2,采用https安全协议访问方式,前端通过nginx做代理实现的,在设计过程中把证书的设置为较短的时间,导致nginx证书过期不能使用, 故需要人工生成一份新的证书来更换nginx上的证书。
四、问题解决方案
注意:以下1,2步操作是在镜像仓库服务器,3步在所有mesos计算节点,4步在DCOS云平台服务器。
1、重新生成一份有效期为10年的证书
2、镜像仓库使用的registry v2,采用https安全协议访问方式,前端通过nginx做代理实现的,故需要更换nginx上的证书。
3、mesos docker计算节点证书更换
4、DCOS平台更新镜像仓库证书
五、问题总结
因问题是镜像仓库https证书有效期设计较短导致,像这类问题出现是比较低级的,有点经验的人都会将证书有效期设置5年或是更长。虽然更新镜像仓库证书对业务无影响,但对云平台功体验效果比较差,更新证书涉及到所有节点证书的同步,是一件比较麻烦的事情。因此前期相关配置设计应该严格做好长远规划,减少后期运维工作量。