手把手帶你離線部署Walrus,體驗極簡應用交付
Walrus 0.4 已于近日發(fā)布,新版本中采用的應用模型可以讓運維團隊僅需配置1次,即可在多模態(tài)的基礎設施及環(huán)境中運行包括應用服務及周邊依賴資源在內(nèi)的全套應用系統(tǒng)。這極大減少了運維人員的工作量,同時為研發(fā)人員屏蔽了底層基礎設施的復雜度.
但受限于網(wǎng)絡環(huán)境,部分用戶無法直接拉取 Walrus 安裝鏡像。此時,我們需要采用離線的方式部署安裝 Walrus。本文將介紹如何在內(nèi)網(wǎng)環(huán)境中安裝部署 Walrus。
前期準備
在進行離線部署之前,請確認您已準備:
內(nèi)網(wǎng)容器鏡像倉庫,例如 Harbor
內(nèi)網(wǎng)Git代碼庫,例如 GitLab
開放 Walrus 所在服務器到鏡像倉庫和 Git 服務器的訪問
離線鏡像
您可以從 Walrus Releases (https://github.com/seal-io/walrus/releases),獲取?walrus-images.txt、walrus-save-images.sh和walrus-load-images.sh三個文件用于下載離線鏡像并推送到內(nèi)網(wǎng)鏡像倉庫。具體步驟為:
使用walrus-save-images.sh在可以聯(lián)網(wǎng)的Docker主機下載離線鏡像,參考命令如下:
將保存的離線鏡像包walrus-images.tar.gz和walrus-load-images.sh上傳到可以訪問內(nèi)網(wǎng)鏡像倉庫的Docker主機,使用walrus-load-images.sh上傳離線鏡像,內(nèi)網(wǎng)鏡像倉庫以 Harbor 為例(如果不是Harbor,需要提前在鏡像倉庫中創(chuàng)建sealio項目),參考命令如下:
離線鏡像準備完成后,我們需要開始準備離線模板庫。
離線模板庫
模板是 Walrus 的重要功能之一,它可以將各種基礎設施能力、云服務和應用服務封裝成可復用的能力模板,幫助用戶簡化服務和資源的部署。
首先,將內(nèi)置模板庫(https://github.com/walrus-catalog)的所有Repo都Fork或Import到內(nèi)網(wǎng)Git倉庫。
可以參考以下腳本,批量將walrus-catalog的所有 Repo 克隆下來后,上傳到內(nèi)網(wǎng) Git 倉庫,每個 Repo 需要對應的一個內(nèi)網(wǎng)倉庫,如對應一個 GitLab Project。
準備工作已經(jīng)完成,現(xiàn)在開始離線安裝 Walrus。
離線安裝 Walrus
單實例部署
根據(jù)內(nèi)網(wǎng)鏡像倉庫的地址,修改單實例部署中的鏡像地址,并新增SERVER_SETTING_IMAGE-REGISTRY和SERVER_SETTING_DEPLOYER_IMAGE環(huán)境變量,指向使用內(nèi)網(wǎng)鏡像倉庫和離線Deployer鏡像,參考命令如下:
如果內(nèi)網(wǎng)鏡像倉庫為私有倉庫,需要配置認證信息才能拉取鏡像,則需要額外的配置,步驟如下:
Walrus 的單實例部署使用了內(nèi)置的 K3s 作為 Walrus 的底層 K8s 運行環(huán)境,如果需要設置 K3s 使用私有倉庫拉取鏡像,需要掛載registries.yaml文件到 Walrus 容器中:
在要運行 Walrus 容器的主機上,創(chuàng)建registries.yaml文件:
填充以下 YAML 內(nèi)容,請注意替換實際的鏡像倉庫地址、認證用戶名和密碼。如果私有鏡像倉庫采用不受信任的 TLS 證書,需要使用insecure_skip_verify參數(shù)跳過證書驗證,如果不需要則移除:
在運行 Walrus 容器時,將registries.yaml掛載到 Walrus 容器中,參考命令如下:
Walrus 容器運行起來后,進入Walrus 容器驗證私有鏡像倉庫配置是否生效:
詳情可參考 K3s 官方文檔:https://docs.k3s.io/installation/private-registry
訪問Walrus UI:初始登錄后,訪問https://<WALRUS_URL>/v1/settings,驗證ImageRegistry和DeployerImage設置是否生效。
高可用部署
根據(jù)內(nèi)網(wǎng)鏡像倉庫的地址,修改高可用部署中的鏡像地址,并為 Walrus Deployment 新增SERVER_SETTING_IMAGE_REGISTRY和SERVER_SETTING_DEPLOYER-IMAGE環(huán)境變量,指向使用內(nèi)網(wǎng)鏡像倉庫和離線 Deployer 鏡像,參考配置如下:
如果內(nèi)網(wǎng)鏡像倉庫為私有倉庫,需要配置認證信息才能拉取鏡像,則需要額外的配置,步驟如下:
要從私有倉庫拉取鏡像,Kubernetes 需要憑據(jù)。先創(chuàng)建憑據(jù) Secret
修改高可用部署中的YAML,為幾個Deployment資源添加將imagePullSecrets參數(shù),然后按照高可用部署的步驟部署 Walrus。使創(chuàng)建 Pod 時 kubelet 可以拉取私有倉庫的鏡像:
訪問 Walrus UI:初始登錄后,訪問http://<WALRUS_URL>/v1/settings,驗證ImageRegistry和DeployerImage設置是否生效。
設置 Walrus 使用內(nèi)網(wǎng)模板庫
Walrus 默認使用內(nèi)置模板庫,但在離線環(huán)境下該模板庫無法使用,需要您更換為在前一個步驟中準備好的內(nèi)網(wǎng)模板庫。具體更換步驟為:
關閉使用內(nèi)置模板庫:進入系統(tǒng)設置的服務管理,編輯模板設置,關閉使用內(nèi)置模板庫的開關,保存。
如果內(nèi)網(wǎng)的 Git 模板庫采用不受信任的 TLS 證書,關閉 Walrus 對模板庫的證書認證(可選)。進入系統(tǒng)設置的服務管理,編輯證書設置,開啟跳過證書認證的開關,保存。?
刪除內(nèi)置模板庫,添加內(nèi)網(wǎng)模板庫:進入運維中心的模板庫,勾選builtin模板庫,選擇刪除
然后選擇添加模板庫,輸入模板庫的名稱、描述、來源。來源地址填寫離線模板庫的完整 git organization/group 地址,例如http://github.com/walrus-catalog,確定保存

切換到運維中心?-模板,驗證模板正常加載,則意味著內(nèi)網(wǎng)模板庫可以正常刷新。需要注意的是在離線環(huán)境下AI編寫模板不可用。如果您需要自定義連接器,即自定義 Terraform Provider,需要配置自定義 Provider 的 Mirror,具體可參考下方鏈接:https://developer.hashicorp.com/terraform/cli/commands/providers/mirror
至此,您已經(jīng)成功在離線環(huán)境下完成 Walrus 的安裝,開始享受簡潔清爽的應用部署與交付之旅吧!