Harbor升級和數據庫遷移手冊

?

當升級一個已經存在的Harbor實例到新版本時,需要遷移數據庫數據。參考What's New in Harbor Database Schema查看數據庫發生了哪些變化,如果有的話,就需要進行數據庫遷移操作,因為遷移可能會改變數據庫模式,所以在任何數據遷移操作之前,都一定要先備份數據庫。

?

如果你是第一次安裝habor,或者新安裝的數據庫的版本和之前的數據庫版本一致,那么你不需要做任何數據庫的遷移操作。

?

注意:

  • v1.2開始,你需要使用發布版本號做為遷移鏡像的tag,新版本不再使用“latest”這個tag了。

  • 在任何數據操作之前,都必須要備份數據。

?

升級Harbor和遷移數據

?

1.????? 登到harbor所在的服務器上,如果harbor還在運行,就停止并刪除對應的Harbor實例。

cd harbor

docker-compose down


2.???? 備份harbor當前的文件,確保在需要的時候可以回滾到當前的這個版本。

cd ..

mv harbor /my_backup_dir/harbor

?

3.????? github上獲取最新的harbor發布版安裝包,下載地址:https://github.com/vmware/harbor/releases

?

4.????? 在更新harbor之前,先做數據庫遷移操作。這個遷移工具以docker鏡像的方式提供,所以你需要從docker hubpull鏡像。在下面的命令里,用harbor的發布版本號來替換[tag]

docker pull vmware/harbor-db-migrator:[tag]

?

5.????? 備份數據庫到一個目錄,比如/path/to/backup。如果目錄不存在的話,你需要自己創建,并且數據庫的用戶名和密碼需要通過環境變量“DB_USR”“DB_PWD”來提供。

docker run -ti --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backupvmware/harbor-db-migrator:[tag] backup


6.???? 更新數據庫模式并遷移數據:

docker run -ti --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql vmware/harbor-db-migrator:[tag] up head


7.???? 解壓新的harbor安裝包,并切換到工作目錄./harbor中去。通過修改harbor.cfg來配置harbor

  • 通過修改harbor.cfg來配置harbor,你可能需要參考第二步操作時備份的配置文件。參考安裝和配置手冊獲取更多的信息。由于新版本的harbor.cfg配置文件的格式和內容可能會發生改變,所以不能直接從之前的版本來復制harbor.cfg配置文件。

?

重要:如果你更新harbor之前使用的認證方式為LDAP/AD,那邊在你加載啟動新版本的harbor之前,必須要確保harbor.cfg中的auth_mode配置成ldap_auth,否則,更新之后用戶將無法登陸。

?

  • 為了幫助將harbor.cfg配置文件從v0.5.0版本遷移到v1.1.x版本,提供了一個腳本,描述如下。對于其他版本的配置文件,需要手動遷移harbor.cfg文件。

cd harbor

./upgrade --source-loc source_harbor_cfg_loc--source-version 0.5.0 --target-loc target_harbor_cfg_loc --target-version1.1.x

?

注意:在執行這個腳本之后,要重新檢查一遍,確保harbor.cfg中的配置都是正確的。如果有需要的話,你可以修改harbor.cfg

?

8.???? 切換到./harbor目錄,執行./install.sh腳本安裝新版本harbor實例。如果你安裝harbor選擇其他組件,比如Notary或者Clair,可參考安裝和配置手冊獲取更新信息。

?

升級后回滾

?

不管什么原因,如果你想回滾到之前的harbor版本,可以參考如下步驟:

?

1.???? harbor服務。

cd harbor

docker-compose down

?

2.???? 從備份文件/path/to/backup中恢復數據庫。

docker run -ti --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backupvmware/harbor-db-migrator:[tag] restore

?

3.???? 刪除當前的harbor實例。

rm -rf harbor

?

4.???? 恢復老版本的harbor文件。

mv /my_backup_dir/harbor harbor

?

5.???? 使用之前的配置重啟harbor服務。

如果之前版本是通過發布的二進制包安裝的:

cd harbor

./install.sh

?

注意:如果你安裝harbor選擇其他組件,比如Notary或者Clair,可參考安裝和配置手冊獲取更新信息。

?

如果之前的harbor版本是通過源碼安裝的:

cd harbor

docker-compose up --build -d

?

遷移工具參考

?

  • 使用help命令顯示遷移工具幫助信息:

docker run --rm -e DB_USR=root -e DB_PWD=xxxxvmware/harbor-db-migrator:[tag] help

?

  • 使用test命令測試mysql連接:

docker run --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql vmware/harbor-db-migrator:[tag] test

?

原文:https://github.com/vmware/harbor/blob/master/docs/migration_guide.md

?