如何將應用一鍵部署至多個環境?丨Walrus教程

Seal数澈發表於2024-03-08

在 Walrus 平臺上,運維團隊在資源定義(Resource Definition)中宣告提供的資源型別,透過設定匹配規則,將不同的資源部署模板應用到不同型別的環境、專案等。與此同時,研發人員無需關注底層具體實現方式,透過建立 Resource 物件宣告需要使用的資源型別及基本資訊,就可以靈活地在各種環境中自動化建立所需資源並使用,進而遮蔽各類環境中基礎設施的複雜度,降低研發人員的認知負擔。

本教程將以 MySQL 資料庫為例演示如何使用 Walrus 部署多型應用,即透過配置資源定義和資源兩個 API 物件將應用快速部署到不同環境中。

概念介紹:資源定義

首先,讓我們瞭解一些相關概念。資源定義是 Walrus 構建多雲、混合基礎設施上層統一抽象的核心,它可以構建多型應用、簡化部署配置。

容器中存在多架構的概念,即允許在同一個映象中包含不同架構的映象 Manifest 配置,獲取映象時根據實際環境自動選擇合適映象,使得容器可以在不同硬體上無縫切換。Walrus 資源定義與此類似,它就是部署過程中的 Manifest,包含不同規則的配置,在部署時自動根據部署環境選擇合適的部署模板。

資源定義包括四個部分。

  • 模板:透過自定義或使用開源模板抽象建立資源所需配置。
  • 匹配規則:定義每個規則的匹配條件,當符合條件時使用的模板。
  • 管理員配置:透過在匹配的規則下新增管理配置,最佳實踐等預定義配置,簡化使用者部署時配置。
  • UI 樣式:根據需求定製的使用者介面樣式,遮蔽複雜度。

現在,我們一起來看看如何結合資源定義來遮蔽複雜度並部署多型應用

部署多型應用

前提條件

在開始前,請準備相關資源並完成以下配置工作。

  1. 聯結器配置。

進入 default 專案 > 聯結器> 新建聯結器,輸入名稱 alibaba, 選擇雲廠商型別的聯結器,型別選擇“Alibaba”,適用環境型別選擇“生產”,輸入其他資訊完成配置。再次點選新建聯結器,輸入名稱 aws, 型別選擇“AWS”,適用環境型別選擇“生產”,輸入其他資訊完成配置。

  1. 環境準備。

進入 default 專案 > 環境> 新建環境,輸入名稱 production,關聯剛才新建的名為 alibaba 的聯結器,用作生產部署環境。再次新建環境,輸入名稱 dr,關聯剛才新建的名為 aws 的聯結器,用作雲災備環境。加上 default 專案中自帶的 local 環境,我們現在一共有三個環境:localproduction,dr

  1. 下載 Walrus CLI

這一步可參考 Walrus 官方文件:https://seal-io.github.io/docs/zh/cli

配置資源定義

接下來我們將配置資源定義,這裡以構建一個多型的 mysql 資料庫為例。

  1. 資源定義規則配置

首先按照順序進入 運維中心 > 資源定義 > 新建資源定義,輸入資源定義名稱 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,其他根據實際情況配置。

配置完成後包含以下匹配規則。

  1. 自定義 UI 樣式配置

完成規則配置後,Walrus 會根據配置的規則和預定義配置,智慧渲染出 UI 樣式,管理員可以根據需求定製 UI 樣式。

然後進入運維中心 > 資源定義 > 找到對應的資源定義 > UI Schema,點選預覽可看到自動生成的 UI 樣式。我們這裡刪除一些複雜配置,留下常用配置支援使用者快速啟動,以下是配置完成的 UI 樣式。

部署多型應用

使用上面配置好的資源定義就可以支援我們建立多型應用了。這裡我們按照以下步驟進行部署:

  1. 進入 應用管理 > local 環境 > 新建資源。
  2. 輸入資源名稱,資源型別選擇我們剛新建的資源型別 mysql,輸入架構,資料庫版本等配置,點選儲存並部署就可完成部署了。
  3. 進入 production 環境 > 新建資源,同樣選擇資源型別 mysql,輸入配置完成部署。
  4. 進入 dr 環境 > 新建資源,同樣選擇資源型別 mysql,輸入配置完成部署。
  5. 三個環境都建立了 mysql 型別的資源,local 環境連線了 kubernetes 聯結器,production 環境連線了 alibaba 聯結器,dr 環境連線了 aws 聯結器,可以看到不同環境是否根據當前環境動態的建立了對應的資源。

local 環境在 kubernetes 叢集中建立了 mysql 容器。

production 環境在 alibaba 雲中建立了 rds 服務。

dr 環境在 aws 雲中建立了對應的 rds 服務。

透過 Walrus File 部署多型應用

除了透過 UI 部署多型應用,還可以透過 Walrus file 達到同樣的效果。

  1. 準備 app.yaml,內容如下:

version: v1
resources:
  - name: mysql
    type: mysql
    attributes:
      architecture: standalone
      database: mydb
      engine_version: "8.0"
      username: rdsuser

  1. 執行命令部署到不同環境。

# 部署到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/

相關文章