Kubernetes實錄(2) 配置企業級鏡像倉庫harbor升級

Kubernetes實錄系列記錄文檔完整目錄參考: Kubernetes實錄-目錄

相關記錄鏈接地址 :

上一篇 Kubernets初體驗(3) 配置企業級鏡像倉庫 harbor-1.6.1 文檔配置了docker 鏡像註冊服務器系統harbor 1.6.1版本,當時是最新的,其中的倉庫管理+複製管理只能同一個項目/倉庫同步鏡像。
這個版本缺少一個很重要的功能那就是將一個鏡像從一個項目/倉庫"拷貝"到另一個項目倉庫。這個需求的使用場景是什麼呢,例如:一個註冊服務器實現開發(dev),測試(test),預發(uat),生產(prod)環境共同使用,可以這麼做,在註冊服務器創建多個項目。
在這裏插入圖片描述
例如有個demo在開發環境開發時使用倉庫dev/demo進行管理,開發驗證完成後,需要推送到測試倉庫,以及預發倉庫,產線倉庫,在持續集成開發過程中非常有用(可以在一個階段完成後直接調用harbor API完成操作)。流程如下
在這裏插入圖片描述
1.7.0版本之前可以不同階段使用不同環境的註冊服務器,倉庫名稱相同,根據過濾規則將相同倉庫名稱的鏡像(可以根據tag規則過濾)複製到遠程的註冊服務器上。在Harbor裏面無法直接達到上圖顯示的場景(當然使用docker client修改tag重新push是可以達到這個目標的)。

以上功能在1.7.x版本實現了,新版本還實現了一些其他功能,參考 https://github.com/goharbor/harbor/releases .本文檔記錄從1.6.1版本升級到1.7.0版本的過程。

升級前的注意事項:

升級版本可能需要migrate數據,可能會改變數據schema。

  1. 升級版本前一定要備份數據
  2. 這裏的升級時從1.6.x 到 1.7.x。其他版本沒有測試過,根據官方文檔來說需要逐步升級(1.y.x -> 1.6.0 -> 1.7.x)而且該文檔可能不適應與老版本到1.6.0版本的升級
    從1.6.0版本開始,Harbor啓動時會自動嘗試migrate DB schema,所以從>=1.6.0 不需要使用遷移工具遷移schema
    從1.6.0版本開始數據庫從mariadb切換到了Postgresql

一、升級版本

從1.6.1升級到1.7.0(當前最新版本)

第一步:停止harbor實例

cd /opt/app/harbor
docker-compose down

第二步:備份當前Harbor文件,用於版本回滾

mkdir /opt/app/backup
mv /opt/app/harbor /opt/app/backup/
cp -r /data/database  /opt/app/backup/

#爲升級做準備,在migrate是會覆蓋生成新的harbor.cfg, 也可以將harbor.cfg拷貝到其他路徑用來進行遷移變更操作。
cp /opt/app/backup/harbor/harbor.cfg /opt/app/backup/harbor/harbor.cfg.1.6.1
harbor_cfg=/opt/app/backup/harbor/harbor.cfg  #環境變量

第三步:下載最新版本或者你需要版本的harbor安裝包

wget -c --limit-rate=1024K https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0.tgz
tar zxvf harbor-offline-installer-v1.7.0.tgz -C /opt/app/

第四步:下載遷移使用的docker鏡像

docker pull goharbor/harbor-migrator:v1.7.0
	v1.7.0: Pulling from goharbor/harbor-migrator
	Digest: sha256:3f1a762f60bd4c7b3006bbdff3d360347a7158179b7b05952ef84e899582df64
	Status: Image is up to date for goharbor/harbor-migrator:v1.7.0

第五步:升級harbor.cfg,注意環境變量${harbor_cfg}路徑下的harbor.cfg會被重寫覆蓋。完成後拷貝到新的安裝目錄

注意:升級配置後我觀察了下文件,這裏新生成的harbor.cfg文件只是遷移了必要參數項,可選參數項並沒有更新到文件中,我使用的是db認證,參數是已經寫入數據庫的(文件的參數只是初始化使用一次,之後重複安裝不在改變數據庫),如果是ldap等認證是否有影響我沒有測試

docker run -it --rm -v ${harbor_cfg}:/harbor-migration/harbor-cfg/harbor.cfg goharbor/harbor-migrator:v1.7.0 --cfg up

cp ${harbor_cfg} /opt/app/harbor
#我之前使用的證書是自簽發的,需要拷貝過來
cp -r  /opt/app/backup/harbor/certs /opt/app/harbor/

第六步:執行升級安裝

cd /opt/app/harbor
./install.sh

升級完成,可以訪問了。如果升級過程中有錯誤可以查看adminserver日誌 path: /var/log/harbor/adminserver.log

可以看到賬戶密碼都在,容器鏡像也在,而且多了功能retag功能也就是【複製鏡像】,支持從本地一個項目倉庫到本地另一個項目倉庫。
在這裏插入圖片描述

回滾

支持1.6.0之後的版本回滾,之前的版本使用的是mariadb數據,遷移工具不支持從PostgreSQL 到MariaDB的回滾。

# 1. 停止服務
cd /opt/app/harbor
docker-compose down

# 2. 刪除新版本
rm -rf harbor

# 3. 將老版本移過來
mv /opt/app/backup/harbor  /opt/app/harbor
cp /opt/app/harbor/harbor.cfg.1.6.1  /opt/app/harbor/harbor.cfg

# 4. 數據庫文件拷貝。
rm -rf /data/database
mv /opt/app/backup/database /data/database

# 5. 回滾啓動服務
cd /opt/app/harbor
./install.sh

追加,從1.7.0版本再次升級到最新的1.8.1版本

mv /opt/app/backup /opt/app/backup_1.6.1 #這個是將原來的備份一走
mkdir /opt/app/backup
mv /opt/app/harbor /opt/app/backup/
cp -r /data/database  /opt/app/backup/

#爲升級做準備,在migrate是會覆蓋生成新的harbor.cfg, 也可以將harbor.cfg拷貝到其他路徑用來進行遷移變更操作。
cp /opt/app/backup/harbor/harbor.cfg /opt/app/backup/harbor/harbor.cfg.1.7.0
harbor_cfg=/opt/app/backup/harbor/harbor.cfg  #環境變量


wget -c  https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz
tar zxvf harbor-offline-installer-v1.8.1.tgz -C /opt/app/
cp -r  /opt/app/backup/harbor/certs /opt/app/harbor/

docker run -it --rm -v ${harbor_cfg}:/harbor-migration/harbor-cfg/harbor.cfg -v /opt/app/harbor/harbor.yml:/harbor-migration/harbor-cfg-out/harbor.yml goharbor/harbor-migrator:v1.8.1 --cfg up
	Please backup before upgrade, 
	Enter y to continue updating or n to abort: y
	Command for config file migration: python ./cfg/run.py --input /harbor-migration/harbor-cfg/harbor.cfg --output /harbor-migration/harbor-cfg-out/harbor.yml
	input version: 1.7.0, migrator chain: ['1.8.0']
	migrating to version 1.8.0
	Written new values to /harbor-migration/harbor-cfg-out/harbor.yml

cd /opt/app/harbor
./install.sh
	[Step 0]: checking installation environment ...
	Note: docker version: 18.06.1
	Note: docker-compose version: 1.23.2
	[Step 1]: loading Harbor images ...
	... 
	...
	[Step 2]: preparing environment ...
	prepare base dir is set to /opt/app/harbor
	Generated configuration file: /config/log/logrotate.conf
	Generated configuration file: /config/nginx/nginx.conf
	Generated configuration file: /config/core/env
	Generated configuration file: /config/core/app.conf
	Generated configuration file: /config/registry/config.yml
	Generated configuration file: /config/registryctl/env
	Generated configuration file: /config/db/env
	Generated configuration file: /config/jobservice/env
	Generated configuration file: /config/jobservice/config.yml
	loaded secret from file: /secret/keys/secretkey
	Generated certificate, key file: /secret/core/private_key.pem, cert file: /secret/registry/root.crt
	Generated configuration file: /compose_location/docker-compose.yml
	Clean up the input dir

	[Step 3]: starting Harbor ...
	Creating network "harbor_harbor" with the default driver
	Creating harbor-log ... done
	Creating harbor-db   ... done
	Creating redis       ... done
	Creating registryctl ... done
	Creating registry    ... done
	Creating harbor-core ... done
	Creating harbor-portal     ... done
	Creating harbor-jobservice ... done
	Creating nginx             ... done
	
	✔ ----Harbor has been installed and started successfully.----
	
	Now you should be able to visit the admin portal at https://csrepo.ejuops.com. 
	For more details, please visit https://github.com/goharbor/harbor .
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章