Walrus 實用教程|Walrus + Gitlab,打通CI/CD 自動化交付!
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 自動化交付環節。
前提條件
在開始之前,請先完成以下準備工作:
- 在 GitLab 上新建一個專案,將我們的 demo 專案(
)import 到該專案。如果沒有開啟 GitHub 型別的 Import Project 許可權,參考下圖示意,在
Admin Area
中開啟:
也可以選擇手動
git clone
專案,新建 GitLab 專案 push 到其中。
- 透過
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
- 訪問 Walrus,在 Walus 最新的 0.5 版本,會自動在
default
專案中建立一個名為local
的環境,自動將 Walrus 容器中內建的 K3s 或部署所在的 K8s 叢集新增為該環境的聯結器,本示例將使用該 K3s 叢集進行演示。
- 在 Walrus 上建立一個 API 金鑰,用於後面 Walrus CLI 與 Walrus Server 之間進行通訊的認證。操作步驟如下:
- 導航到 “賬號 > 使用者資訊 > API 秘鑰”。
- 點選新增金鑰 ,為金鑰命名,並設定過期時間。
- 配置金鑰後,複製生成的金鑰儲存下來。如果後續秘鑰遺失,可以重新生成進行替換。
配置 Walrus CLI 與 GitLab CI 整合
這裡我們將演示一個從 CI 到 CD 的示例。按照以下步驟操作,將 Walrus CLI 整合到 GitLab CI:
- 訪問 GitLab,導航到
Admin Area > Settings > CI/CD > Variables
。
- 新增以下 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 認證。
- 在 GitLab 專案中建立
.gitlab-ci.yml
檔案(預設已存在於示例專案中),此檔案將定義你的 CI/CD 工作流。
以下是用於部署示例專案
Game 2048
的
.gitlab-ci.yml
檔案示例,你可以按需進行復制和修改。例如,將映象
sealdemo/game2048
修改為自己定義的映象名稱。
- 檢視 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
- 訪問 GitLab,導航到
Admin Area > CI/CD > Runners
,檢查 GitLab Runner 是否正常線上(參考 GitLab 官方文件安裝 GitLab Runner: ),GitLab Runner 用於執行由.gitlab-ci.yml
定義的 CI/CD 流水線:
- 導航到
2048 Project > Build > Pipelines
,選擇Run pipeline
執行流水線:
等待流水線執行完成,檢查流水線的執行結果:
檢視流水線的執行日誌:
可以看到流水線已成功執行,GitLab CI 依次完成了
maven
構建、容器映象構建上傳、使用 Walrus CLI 部署應用到 K3s 叢集的 CI/CD 步驟。
- 流水線成功執行後,你可以訪問 Walrus ,檢視所部署的
game2048
應用。
透過自動識別的
endpoints
加上
/2048
路徑,訪問2048遊戲。完整訪問 URL 參考:
:port/2048。
到此,我們已經完成將 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Gitlab CI/CD 實現自動化釋出站點到 IISGitlab
- gitlab 實現CI/CDGitlab
- 快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLabGitlab
- 輕鬆一刻|Walrus CLI與CI/CD工具整合,輕鬆部署2048遊戲遊戲
- 前端初探 Gitlab CI/CD前端Gitlab
- Gitlab-CI/CD 2Gitlab
- Docker 整合 Jenkins Gitlab 實現 CI/CDDockerJenkinsGitlab
- GitLab-CI/CD入門實操Gitlab
- 基於 GitLab CI 的前端工程CI/CD實踐Gitlab前端
- 使用gitlab自帶的ci/cd實現.net core應用程式的部署Gitlab
- 手把手帶你離線部署Walrus,體驗極簡應用交付
- Gitlab CI/CD教程及npm包構建釋出實戰GitlabNPM
- Jenkins與Docker的自動化CI/CD實戰(一)JenkinsDocker
- 實踐分享!GitLab CI/CD 快速入門Gitlab
- Android Gitlab CI/CD指令碼AndroidGitlab指令碼
- DevOps,CI,CD,自動化簡單介紹dev
- 如何將應用一鍵部署至多個環境?丨Walrus教程
- 用GitLab-Runner打造鋒利的CI/CDGitlab
- .NetCore 配合 Gitlab CI&CD 實踐 - 開篇NetCoreGitlab
- Springboot 專案通過 gitlab CI/CD 整合 k8s 自動部署Spring BootGitlabK8S
- Gitlab Pipeline+Supervisor 實戰Python專案CI/CDGitlabPython
- docker&gitlab-ci實現一機多用和前端自動化DockerGitlab前端
- GitLab CI-CD 學習筆記Gitlab筆記
- Golang基於Gitlab CI/CD部署方案GolangGitlab
- .NetCore 配合 Gitlab CI&CD 實踐 - 單體專案NetCoreGitlab
- gitlab上CI/CD的一些小實踐和理解Gitlab
- asp.net core結合Gitlab-CI實現自動化部署ASP.NETGitlab
- IaC 管理新思路:Walrus 和 Terraform 的差異化探索ORM
- 基於Docker快速搭建Gitlab與Gitlab CI/CD服務DockerGitlab
- 前端VUE基於gitlab的CI_CD前端VueGitlab
- Jenkins+GitLab+SonnarQube搭建CI/CD全流程JenkinsGitlab
- Walrus 0.4釋出:單一配置、多型執行,體驗下一代應用交付模型多型模型
- Gitlab CI/CD 檔案編寫 推送程式碼 支援Psr規範性檢查,自動化Phpunit測試GitlabPHP
- [小團隊自動化] (一) Drone CI For Github —— 打造自己的CI/CD工作流Github
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 使用Spring Boot設定GitLab CI/CD管道 - MarcusSpring BootGitlab
- 一個 GitLab CI/CD 的學習筆記Gitlab筆記
- .NET 微服務——CI/CD(2):自動打包映象微服務