在 Walrus 平臺上,運維團隊在資源定義(Resource Definition)中聲明提供的資源類型,通過設置匹配規則,將不同的資源部署模板應用到不同類型的環境、項目等。與此同時,研發人員無需關註底層具體實現方式,通過創建 Resource 對象聲明需要使用的資源類型及基本信息,就可以靈活地在 ...
在 Walrus 平臺上,運維團隊在資源定義(Resource Definition)中聲明提供的資源類型,通過設置匹配規則,將不同的資源部署模板應用到不同類型的環境、項目等。與此同時,研發人員無需關註底層具體實現方式,通過創建 Resource 對象聲明需要使用的資源類型及基本信息,就可以靈活地在各種環境中自動化創建所需資源並使用,進而屏蔽各類環境中基礎設施的複雜度,降低研發人員的認知負擔。
本教程將以 MySQL 資料庫為例演示如何使用 Walrus 部署多態應用,即通過配置資源定義和資源兩個 API 對象將應用快速部署到不同環境中。
概念介紹:資源定義
首先,讓我們瞭解一些相關概念。資源定義是 Walrus 構建多雲、混合基礎設施上層統一抽象的核心,它可以構建多態應用、簡化部署配置。
容器中存在多架構的概念,即允許在同一個鏡像中包含不同架構的鏡像 Manifest 配置,獲取鏡像時根據實際環境自動選擇合適鏡像,使得容器可以在不同硬體上無縫切換。Walrus 資源定義與此類似,它就是部署過程中的 Manifest,包含不同規則的配置,在部署時自動根據部署環境選擇合適的部署模板。
資源定義包括四個部分。
- 模板:通過自定義或使用開源模板抽象創建資源所需配置。
- 匹配規則:定義每個規則的匹配條件,當符合條件時使用的模板。
- 管理員配置:通過在匹配的規則下添加管理配置,最佳實踐等預定義配置,簡化用戶部署時配置。
- UI 樣式:根據需求定製的用戶界面樣式,屏蔽複雜度。
現在,我們一起來看看如何結合資源定義來屏蔽複雜度並部署多態應用。
部署多態應用
前提條件
在開始前,請準備相關資源並完成以下配置工作。
- 連接器配置。
進入 default 項目
> 連接器
> 新建連接器
,輸入名稱 alibaba, 選擇雲廠商類型的連接器,類型選擇“Alibaba”,適用環境類型選擇“生產”,輸入其他信息完成配置。再次點擊新建連接器,輸入名稱 aws, 類型選擇“AWS”,適用環境類型選擇“生產”,輸入其他信息完成配置。
- 環境準備。
進入 default 項目
> 環境
> 新建環境
,輸入名稱 production,關聯剛纔新建的名為 alibaba
的連接器,用作生產部署環境。再次新建環境,輸入名稱 dr,關聯剛纔新建的名為 aws 的連接器,用作雲災備環境。加上 default
項目中自帶的 local
環境,我們現在一共有三個環境:local
,productio
n,dr
。
- 下載 Walrus CLI
這一步可參考 Walrus 官方文檔:https://seal-io.github.io/docs/zh/cli
配置資源定義
接下來我們將配置資源定義,這裡以構建一個多態的 mysql 資料庫為例。
- 資源定義規則配置
首先按照順序進入 運維中心
> 資源定義
> 新建資源定義
,輸入資源定義名稱 demo-mysql
,輸入類型 mysql
。接下來新建以下:
- 新建匹配規則
dev
用來表示開發環境的匹配規則和使用模板,添加選擇器,這裡選擇環境名稱,輸入名稱local
,模板使用builtin/kubernetes-mysql
的最新版本,在預定義配置部分配好 cpu 和 memory 資源。 - 新建匹配規則
production
用來表示生產環境,添加選擇器,這裡選擇環境名稱,輸入production
,模板使用builtin/alicloud-rds-mysql
的最新版本,在預定義配置部分配好Vpc Id
,這樣用戶在使用該資源定義創建資源時,就無需再填寫Vpc Id
,其他根據實際情況配置。 - 新建匹配規則
dr
用來表示災備環境,添加選擇器,這裡選擇環境名稱,輸入dr
,模板使用builtin/aws-rds-mysql
的最新版本,在預定義配置部分配好Vpc Id
,其他根據實際情況配置。
配置完成後包含以下匹配規則。
- 自定義 UI 樣式配置
完成規則配置後,Walrus 會根據配置的規則和預定義配置,智能渲染出 UI 樣式,管理員可以根據需求定製 UI 樣式。
然後進入運維中心
> 資源定義
> 找到對應的資源定義 > UI Schema
,點擊預覽可看到自動生成的 UI 樣式。我們這裡刪除一些複雜配置,留下常用配置支持用戶快速啟動,以下是配置完成的 UI 樣式。
部署多態應用
使用上面配置好的資源定義就可以支持我們創建多態應用了。這裡我們按照以下步驟進行部署:
- 進入
應用管理
> local 環境 > 新建資源。 - 輸入資源名稱,資源類型選擇我們剛新建的資源類型
mysql
,輸入架構,資料庫版本等配置,點擊保存並部署就可完成部署了。 - 進入 production 環境 > 新建資源,同樣選擇資源類型 mysql,輸入配置完成部署。
- 進入
dr
環境 > 新建資源,同樣選擇資源類型 mysql,輸入配置完成部署。 - 三個環境都創建了 mysql 類型的資源,
local
環境連接了 kubernetes 連接器,production
環境連接了alibaba
連接器,dr 環境連接了 aws 連接器,可以看到不同環境是否根據當前環境動態的創建了對應的資源。
local 環境在 kubernetes 集群中創建了 mysql 容器。
production 環境在 alibaba 雲中創建了 rds 服務。
dr 環境在 aws 雲中創建了對應的 rds 服務。
通過 Walrus File 部署多態應用
除了通過 UI 部署多態應用,還可以通過 Walrus file
達到同樣的效果。
- 準備
app.yaml
,內容如下:
version: v1
resources:
- name: mysql
type: mysql
attributes:
architecture: standalone
database: mydb
engine_version: "8.0"
username: rdsuser
- 運行命令部署到不同環境。
# 部署到local環境
walrus apply -f app.yaml -p default -e local
# 部署到production環境
walrus apply -f app.yaml -p default -e production
# 部署到dr環境
walrus apply -f app.yaml -p default -e dr
通過 CLI 部署可以實現通過復用同一個 Walrus File,部署多態應用到不同環境。
至此,我們實現了通過配置資源定義簡化應用部署,並通過資源將其部署至多個環境中,極大程度為研發和運維團隊屏蔽基礎設施複雜度,減輕工作負擔。
Walrus 通過 XaC(一切即代碼)可以統一管理從底層基礎設施資源置備到上層應用發佈的應用生命周期,和 CI 工具集成可以自動化 CI/CD 流水線交付。如果您被底層基礎設施繁瑣的配置流程所困擾或想要簡化應用管理和部署流程,歡迎下載使用 Walrus。
Walrus GitHub 主頁:https://github.com/seal-io/walrus
Walrus 線上文檔:https://seal-io.github.io/docs/zh/