先決條件:作業系統需事前安裝好 docker本例作業系統為 Rocky Linux 9.2x64、docker 版本為20.10.24、原始 harbor 版本 2.8.2本例 harbor 目錄位置於 /opt/docker/harbor
前往 Harbor 官網查看升級路徑,先查找當下最新版本的升級文件,目前最新版本為 2.13.2,可以看到該版本的文件說明只支持從 2.11.0 以上的升級指南,因此我們往下翻閱稍舊版本的升級文件
嘗試按照升級文件下方步驟進行初次升級:
停止 harbor 實例
docker compose down
備份整個 harbor 目錄
cd ..
cp -rp harbor /tmp/harbor-bak
備份數據庫
cp -rp harbor/data/database /tmp/harbor-database-bak
取得指定版本的 harbor Release
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
解壓並匯入新版本 harbor 的映像檔
tar zxvf ./harbor-offline-installer-v2.10.0.tgz
docker image load -i harbor/harbor.v2.10.0.tar.gz
安裝新版本,如需 Trivy 只需後面加上參數
--with-Trivy
cd harbor
./install.sh
重新登入 Harbor 頁面查看版本資訊,成功升級到了 v2.10.0
功能驗證完畢後,記得刪除不需要的舊版映像檔
docker image lsDD
Troubleshooting
實際上我們在初次執行升級 script 的時候是出現錯誤的,原因是每個版本的 harbor.yml 內容參數有可能異動File "/usr/lib/python3.11/site-packages/click/core.py", line 1137, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/click/core.py", line 1062, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/click/core.py", line 1668, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/click/core.py", line 763, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/commands/prepare.py", line 33, in prepare
config_dict = parse_yaml_config(conf, with_trivy=with_trivy)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/utils/configs.py", line 224, in parse_yaml_config
config_dict['job_loggers'] = js_config["job_loggers"]
~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: 'job_loggers'
最保險的做法是先執行讓 harbor 生成最新版本的 harbor.yml,再去逐次調整其中參數內容
docker run -it --rm -v /:/hostfs goharbor/prepare:v2.10.0 migrate -i /opt/docker/harbor/harbor.yml
查閱 github 上的 issues 我們找到真正的問題是出在 2.9.0 版本後的 harbor.yml 在 jobservice 區塊裡多了一個 job_loggers 新參數,本次在沒有執行 prepare 的情況之下,我們給 harbor.yml 加上以下內容便是
jobservice:
# Maximum number of job workers in job service
max_job_workers: 10
# The jobLoggers backend name, only support "STD_OUTPUT", "FILE" and/or "DB"
job_loggers:
- STD_OUTPUT
- FILE
最後無需 prepare 的情況下逐次升級到了最終版本 v2.13.2
0 Comments:
張貼留言