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

2024-01-31 12:20

本文主要是介绍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 自动化交付环节。

 

前提条件

在开始之前,请先完成以下准备工作:

 

  1. 在 GitLab 上新建一个项目,将我们的 demo 项目(https://github.com/seal-demo/2048 )import 到该项目。如果没有开启 GitHub 类型的 Import Project 权限,参考下图示意,在 Admin Area 中开启:

 

image.png

 

也可以选择手动 git clone 项目,新建 GitLab 项目 push 到其中。

 

  1. 通过 docker run 安装 Walrus,额外暴露 30000~30100 端口,给本文中部署到内置 K3s 集群的工作负载的 NodePort 端口使用,参考:https://seal-io.github.io/docs/deploy/standalone

 


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.png

 

配置 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,格式为https://domain:port
  • CD_WALRUS_TOKEN:Walrus 的 API 密钥,用于 CLI 认证。

 

image.png

 

  1. 在 GitLab 项目中创建 .gitlab-ci.yml 文件(默认已存在于示例项目中),此文件将定义你的 CI/CD 工作流。

 

以下是用于部署示例项目 Game 2048.gitlab-ci.yml 文件示例,你可以按需进行复制和修改。例如,将镜像 sealdemo/game2048 修改为自己定义的镜像名称。

 

stages:- compile- build- deployvariables:CI_PROJECT_DIR: ./CI_IMAGE_NAME: sealdemo/game2048CD_WALRUS_PROJECT: defaultCD_WALRUS_PROJECT_ENV: localcompile:stage: compileimage: maven:3-openjdk-8artifacts:paths:- target/script:- mvn clean packagebuild:dependencies:- compilestage: buildimage:name: gcr.io/kaniko-project/executor:debugentrypoint: [""]artifacts:paths:- target/before_script:- mkdir -p /kaniko/.docker- echo "{\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USERNAME}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.jsonscript:- /kaniko/executor--context "${CI_PROJECT_DIR}"--dockerfile "${CI_PROJECT_DIR}/Dockerfile"--destination "${CI_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}"deploy:stage: deployimage: alpinebefore_script:- wget -O walrus --no-check-certificate "${CD_WALRUS_SERVER}/cli?arch=amd64&os=linux"- chmod +x ./walrusscript:- ./walrus login --insecure --server ${CD_WALRUS_SERVER} --token ${CD_WALRUS_TOKEN}- ./walrus apply -f ./walrus-file.yaml -p ${CD_WALRUS_PROJECT} -e ${CD_WALRUS_PROJECT_ENV}

 

  1. 查看 Walrus 用于部署应用的 walrus-file.yaml 的内容(默认已存在于示例项目中),Walrus 使用一个非常简洁的 YAML 结构描述应用的部署配置,称为 Walrus file,你可以按需修改:

 

version: v1
resources:
- name: game2048type: containerserviceattributes:containers:- profile: runimage: ${CI_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}ports:- schema: httpexternal: 8080internal: 8080protocol: tcpresources:cpu: 0.25memory: 512

 

  1. 访问 GitLab,导航到 Admin Area > CI/CD > Runners ,检查 GitLab Runner 是否正常在线(参考 GitLab 官方文档安装 GitLab Runner: https://docs.gitlab.com/runner/install/ ),GitLab Runner 用于运行由 .gitlab-ci.yml 定义的 CI/CD 流水线:

 

image.png

 

  1. 导航到 2048 Project > Build > Pipelines,选择 Run pipeline 运行流水线:

 

image.png

 

等待流水线运行完成,检查流水线的运行结果:

 

image.png

 

查看流水线的运行日志:

 

image.png

 

可以看到流水线已成功运行,GitLab CI 依次完成了 maven 构建、容器镜像构建上传、使用 Walrus CLI 部署应用到 K3s 集群的 CI/CD 步骤。

 

  1. 流水线成功运行后,你可以访问 Walrus ,查看所部署的 game2048 应用。

 

image.png

 

通过自动识别的 endpoints 加上 /2048 路径,访问2048游戏。完整访问 URL 参考:http://domain:port/2048。

 

image.png

 

到此,我们已经完成将 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 主页:
https://github.com/seal-io/walrus
Walrus 在线文档:
https://seal-io.github.io/docs/zh/

这篇关于Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663754

相关文章

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

自动化表格处理的革命:智能文档系统技术解析

在当今数据驱动的商业环境中,表格数据的自动化处理成为了企业提高效率、降低成本的关键。企业智能文档系统在智能表格识别方面展现出卓越的性能,通过精准识别和处理各种通用表格,显著提升了企业文档管理的智能化水平。本文将深入探讨该系统在表格识别方面的关键技术和应用优势,以及如何通过行业定制化服务满足不同行业的需求。 1. 通用表格识别 智能文档系统通过先进的OCR技术和表格结构识别算法,能够精准