ITPub博客

首页 > 架构设计 > 基础设施 > Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!

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

原创 基础设施 作者:Seal数澈 时间:2024-01-30 11:28:01 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2023-02-20

  • 博文量
    138
  • 访问量
    88929