harbor映象倉庫證書過期問題

jaymarco發表於2020-09-23

  一、    問題描述

今天介紹一下中經專案DCOS雲平臺一次故障,新炬DCOS雲平臺使用的映象倉庫是將VMWARE公司 開源Harbor專案整合進來的,期間專案映象倉庫正常使用了一年左右,最近一次使用命令PUSH映象到映象倉庫或使用DCOS雲平臺自動化構建 映象上傳映象倉庫提示拋錯映象倉庫的https證書過期,因此這個問題影響了DCOS部分功能無法正常使用。它會影響到專案映象構建與服務版本更新問題,但對於業務無影響。

二、    問題影響

1.    人工上傳映象至映象倉庫

2.    DCOS 平臺映象自動構建

3.    DCOS 平臺更新服務版本

三、    問題原因分析

人工打包好的docker映象,然後透過命令將docker映象上傳到映象倉庫,提示報證書已過期。                                               

報錯資訊:

Error response from daemon: Get 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章