Walrus 實用教程|Walrus + Gitlab,打通CI/CD 自動化交付!

Seal数澈發表於2024-01-30

Walrus file 是 Walrus 0.5 版本推出的新功能,使用者可以透過一個非常簡潔的 YAML 描述應用或基礎設施資源的部署配置,然後透過 Walrus CLI 執行 walrus apply或在 Walrus UI 上進行 import,將 Walrus file 提交給 Walrus server,由 Walrus server 完成對應用或基礎設施資源的部署/配置/管理,並在多個環境之間快速複用。

本教程將演示如何將 Walrus CLI 與 GitLab CI 進行整合,並透過 Walrus file 釋出應用,以打通更多的 CI/CD 自動化交付環節。

前提條件

在開始之前,請先完成以下準備工作:

  1. 在 GitLab 上新建一個專案,將我們的 demo 專案( )import 到該專案。如果沒有開啟 GitHub 型別的 Import Project 許可權,參考下圖示意,在 Admin Area 中開啟:

image

也可以選擇手動 git clone 專案,新建 GitLab 專案 push 到其中。

  1. 透過 docker run 安裝 Walrus,額外暴露 30000~30100埠,給本文中部署到內建 K3s 叢集的工作負載的 NodePort 埠使用,參考:

sudo docker run -d --privileged --restart=always --name walrus \
  -p 80:80 -p 443:443 -p 30000-30100:30000-30100 \
  sealio/walrus

  1. 訪問 Walrus,在 Walus 最新的 0.5 版本,會自動在 default專案中建立一個名為 local 的環境,自動將 Walrus 容器中內建的 K3s 或部署所在的 K8s 叢集新增為該環境的聯結器,本示例將使用該 K3s 叢集進行演示。

  1. 在 Walrus 上建立一個 API 金鑰,用於後面 Walrus CLI 與 Walrus Server 之間進行通訊的認證。操作步驟如下:

  • 導航到 “賬號 > 使用者資訊 > API 秘鑰”。
  • 點選新增金鑰 ,為金鑰命名,並設定過期時間。
  • 配置金鑰後,複製生成的金鑰儲存下來。如果後續秘鑰遺失,可以重新生成進行替換。

image


配置 Walrus CLI 與 GitLab CI 整合

這裡我們將演示一個從 CI 到 CD 的示例。按照以下步驟操作,將 Walrus CLI 整合到 GitLab CI:

  1. 訪問 GitLab,導航到 Admin Area > Settings > CI/CD > Variables

  1. 新增以下 variables,配置 GitLab CI 執行需要的敏感資訊:
  • CI_REGISTRY_USERNAME :CI 構建容器映象推送到 Docker Hub 的使用者名稱,參考 docker login
  • CI_REGISTRY_PASSWORD:CI 構建容器映象推送到 Docker Hub 的密碼,參考 docker login
  • CD_WALRUS_SERVER:Walrus 的訪問 URL,格式為
  • CD_WALRUS_TOKEN:Walrus 的 API 金鑰,用於 CLI 認證。

image

  1. 在 GitLab 專案中建立 .gitlab-ci.yml 檔案(預設已存在於示例專案中),此檔案將定義你的 CI/CD 工作流。

以下是用於部署示例專案 Game 2048.gitlab-ci.yml檔案示例,你可以按需進行復制和修改。例如,將映象 sealdemo/game2048 修改為自己定義的映象名稱。


  1. 檢視 Walrus 用於部署應用的 walrus-file.yaml 的內容(預設已存在於示例專案中),Walrus 使用一個非常簡潔的 YAML 結構描述應用的部署配置,稱為 Walrus file,你可以按需修改:


version: v1resources:- name: game2048
  type: containerservice
  attributes:
    containers:
    - profile: run
      image: ${CI_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}
      ports:
      - schema: http
        external: 8080
        internal: 8080
        protocol: tcp
      resources:
        cpu: 0.25
        memory: 512


  1. 訪問 GitLab,導航到 Admin Area > CI/CD > Runners ,檢查 GitLab Runner 是否正常線上(參考 GitLab 官方文件安裝 GitLab Runner: ),GitLab Runner 用於執行由 .gitlab-ci.yml 定義的 CI/CD 流水線:

image

  1. 導航到 2048 Project > Build > Pipelines,選擇 Run pipeline 執行流水線:

image

等待流水線執行完成,檢查流水線的執行結果:

image

檢視流水線的執行日誌:

image

可以看到流水線已成功執行,GitLab CI 依次完成了 maven 構建、容器映象構建上傳、使用 Walrus CLI 部署應用到 K3s 叢集的 CI/CD 步驟。


  1. 流水線成功執行後,你可以訪問 Walrus ,檢視所部署的 game2048 應用。

image

透過自動識別的 endpoints 加上 /2048 路徑,訪問2048遊戲。完整訪問 URL 參考: :port/2048。

image

到此,我們已經完成將 Walrus CLI 與 GitLab CI 整合的教程演示,並透過 Walrus v0.5 版本最新的 Walrus file 能力,在開發人員將應用程式碼提交到 GitLab 時,利用 GitLab CI 和 Walrus,更友好地完成應用的自動化部署。

Walrus 透過 XaC(一切即程式碼)可以統一管理從底層基礎設施資源置備到上層應用釋出的應用生命週期,本文只演示了其中一個場景片段,有興趣的朋友歡迎利用 Walrus 探索更多的應用場景, 例如置備 Kubernetes 叢集、建立雲 RDS 資料庫、配置 LB 策略等等

100%開源,輕鬆上手

Seal 團隊秉持著一以貫之的開源理念和開箱即用的產品設計思路,Walrus 基於 Apache 2.0 許可完全開源,並且僅需一行命令您就可以在已安裝 Docker 的電腦上部署 Walrus:

sudo docker run -d --privileged --restart=always -p 80:80 -p 443:443 -p 30000-30100:30000-30100 --name walrus sealio/walrus:v0.5.0

如果您喜歡這個專案,歡迎在 Github 上為我們點亮 🌟

Walrus GitHub 主頁:

Walrus 線上文件:

來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70026925/viewspace-3005668/,如需轉載,請註明出處,否則將追究法律責任。

相關文章