ITPub博客

首页 > 云计算 > Docker/K8 > harbor镜像仓库证书过期问题

harbor镜像仓库证书过期问题

原创 Docker/K8 作者:jaymarco 时间:2020-09-23 14:21:01 0 删除 编辑

  一、    问题描述

今天介绍一下中经项目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年的证书

使用openssl命令创建新的证书,会在目录/data/cert目录下生成canew.crt 和canew.key两个文件,注意这里的CN=XXXX和IP=XXXX 使用镜像仓库服务器地址。

cd /etc/pki/tls/

openssl req -x509 -days 3650 -newkey rsa:4096   -nodes -sha256 -keyout /data/cert/canew.key -subj '/C=xj/O=shsnc onDocker/CN=XXXX/emailAddress=harbor@shsnc.comsubjectAltName=IP=XXXX'   -out /data/cert/canew.crt

 

2.    镜像仓库使用的registry v2,采用https安全协议访问方式,前端通过nginx做代理实现的,故需要更换nginx上的证书。

1 )、替换 nginx 证书

cp   /data/cert/canew.crt   /root/harbor/common/config/nginx/cert/canew.crt

cp   /data/cert/canew.key  /root/harbor/common/config/nginx/cert/canew.key

删除旧的证书文件

rm -f   /root/harbor/common/config/nginx/cert/ca.*

2 )、 修改 nginx 配置

nginx.conf配置中的第30、31行,替换成新证书(只需更换证书名称,目录不需要更改)。

cd   /root/harbor/common/config/nginx

vi nginx.conf

......

ssl_certificate   /etc/nginx/cert/catest.crt;

ssl_certificate_key   /etc/nginx/cert/catest.key;

3) 、重启镜像仓库 nginx 容器

docker   restart nginx

 

3.    mesos docker 计算节点证书更换

将镜像仓库服务器上面的新证书 canew.crt 文件 COPY 到其它 41 mesos docker 计算节点的 /etc/docker/certs.d/{domain}/   目录下,然后在其中一台计算节点使用 docker login 测试是否能正常登录。

1 )、删除旧证书文件

export   Harbor_ip=xx.xx.xx.xx

cd /etc/docker/certs.d/${Harbor_ip}

rm –rf ca.*

2 )、更新新证书文件

scp root@dcos_hub:/data/cert/canew.crt   .

3 )、测试访问镜像仓库

docker login   $ Harbor_ip

 

4.    DCOS 平台更新镜像仓库证书

由于 DCOS 平台集成 Harbor 镜像仓库,为了实现自动化构建镜像,因此我们 DCOS 上面的证书也是过期的,所以我们需要对 DCOS 服务器上面的镜像仓库证书进行更新替换。

scp root@dcos_hub:/data/cert/canew.crt /dcos/file/ harbor_ca.cert

五、    问题总结

因问题是镜像仓库https证书有效期设计较短导致,像这类问题出现是比较低级的,有点经验的人都会将证书有效期设置5年或是更长。虽然更新镜像仓库证书对业务无影响,但对云平台功体验效果比较差,更新证书涉及到所有节点证书的同步,是一件比较麻烦的事情。因此前期相关配置设计应该严格做好长远规划,减少后期运维工作量。

有需要的朋友可以关注我的公众号,文章每日一更


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2723469/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    76
  • 访问量
    36223