如何将应用一键部署至多个环境?丨Walrus教程
在 Walrus 平台上,运维团队在资源定义(Resource Definition)中声明提供的资源类型,通过设置匹配规则,将不同的资源部署模板应用到不同类型的环境、项目等。与此同时,研发人员无需关注底层具体实现方式,通过创建 Resource 对象声明需要使用的资源类型及基本信息,就可以灵活地在各种环境中自动化创建所需资源并使用,进而屏蔽各类环境中基础设施的复杂度,降低研发人员的认知负担。
本教程将以 MySQL 数据库为例演示如何使用 Walrus 部署多态应用,即通过配置资源定义和资源两个 API 对象将应用快速部署到不同环境中。
概念介绍:资源定义
首先,让我们了解一些相关概念。资源定义是 Walrus 构建多云、混合基础设施上层统一抽象的核心,它可以构建多态应用、简化部署配置。

容器中存在多架构的概念,即允许在同一个镜像中包含不同架构的镜像 Manifest 配置,获取镜像时根据实际环境自动选择合适镜像,使得容器可以在不同硬件上无缝切换。Walrus 资源定义与此类似,它就是部署过程中的 Manifest,包含不同规则的配置,在部署时自动根据部署环境选择合适的部署模板。

资源定义包括四个部分。
- 模板:通过自定义或使用开源模板抽象创建资源所需配置。
- 匹配规则:定义每个规则的匹配条件,当符合条件时使用的模板。
- 管理员配置:通过在匹配的规则下添加管理配置,最佳实践等预定义配置,简化用户部署时配置。
- UI 样式:根据需求定制的用户界面样式,屏蔽复杂度。
现在,我们一起来看看如何结合资源定义来屏蔽复杂度并部署多态应用。
部署多态应用
前提条件
在开始前,请准备相关资源并完成以下配置工作。
- 连接器配置。
进入 default 项目 > 连接器> 新建连接器,输入名称 alibaba, 选择云厂商类型的连接器,类型选择“Alibaba”,适用环境类型选择“生产”,输入其他信息完成配置。再次点击新建连接器,输入名称 aws, 类型选择“AWS”,适用环境类型选择“生产”,输入其他信息完成配置。
- 环境准备。
进入 default 项目 > 环境> 新建环境,输入名称 production,关联刚才新建的名为 alibaba 的连接器,用作生产部署环境。再次新建环境,输入名称 dr,关联刚才新建的名为 aws 的连接器,用作云灾备环境。加上 default 项目中自带的 local 环境,我们现在一共有三个环境:local,production,dr。

- 下载 Walrus CLI
这一步可参考 Walrus 官方文档:https://seal-io.github.io/docs/zh/cli
配置资源定义
接下来我们将配置资源定义,这里以构建一个多态的 mysql 数据库为例。
- 资源定义规则配置
首先按照顺序进入 运维中心 > 资源定义 > 新建资源定义,输入资源定义名称 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,其他根据实际情况配置。
配置完成后包含以下匹配规则。



- 自定义 UI 样式配置
完成规则配置后,Walrus 会根据配置的规则和预定义配置,智能渲染出 UI 样式,管理员可以根据需求定制 UI 样式。
然后进入运维中心 > 资源定义 > 找到对应的资源定义 > UI Schema,点击预览可看到自动生成的 UI 样式。我们这里删除一些复杂配置,留下常用配置支持用户快速启动,以下是配置完成的 UI 样式。

部署多态应用
使用上面配置好的资源定义就可以支持我们创建多态应用了。这里我们按照以下步骤进行部署:
- 进入
应用管理> local 环境 > 新建资源。 - 输入资源名称,资源类型选择我们刚新建的资源类型
mysql,输入架构,数据库版本等配置,点击保存并部署就可完成部署了。 - 进入 production 环境 > 新建资源,同样选择资源类型 mysql,输入配置完成部署。
- 进入
dr环境 > 新建资源,同样选择资源类型 mysql,输入配置完成部署。 - 三个环境都创建了 mysql 类型的资源,
local环境连接了 kubernetes 连接器,production环境连接了alibaba连接器,dr 环境连接了 aws 连接器,可以看到不同环境是否根据当前环境动态的创建了对应的资源。
local 环境在 kubernetes 集群中创建了 mysql 容器。

production 环境在 alibaba 云中创建了 rds 服务。


dr 环境在 aws 云中创建了对应的 rds 服务。


通过 Walrus File 部署多态应用
除了通过 UI 部署多态应用,还可以通过 Walrus file 达到同样的效果。
- 准备
app.yaml,内容如下:
version: v1
resources:
- name: mysql
type: mysql
attributes:
architecture: standalone
database: mydb
engine_version: "8.0"
username: rdsuser
- 运行命令部署到不同环境。
# 部署到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/
如何将应用一键部署至多个环境?丨Walrus教程的更多相关文章
- ansible一键部署k8s单机环境
一.虚拟机准备 干净的Centsot7.4.4G内存.2个CPU 最小化安装,最好带虚拟化 二.执行初始化脚本 注意:脚本中配置静态网卡根据实际网卡名称配置,我用的是ens33 可以用 sed -i ...
- 使用Docker 一键部署 LNMP+Redis 环境
使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...
- 福利来了~Linux一键部署包,环境安装不用愁!!!
前言 昨天一哥们的弟弟突然问我有没有部署过的Linux,公司连个运维都没有,服务器都要后端部署.... 你有没有相似的遭遇呢?公司规模小,后端即是运维,一份工资干两份活,哈哈~ 为了解决这老弟的困惑, ...
- oneinstack一键部署linux生产环境那点事(ubuntu)
http://oneinstack.com/install/ (1)将oneinstack-full.tar.gz最新版安装文件上传至/usr/local/下 (2)解压tar xzvf oneins ...
- Jenkins实现测试环境到生产环境一键部署(Windows)
前言: 因为dotnet在发布站点后,然后再上传服务时,会因为各种的网速问题,导致站点瞬间挂掉!那么通过一键部署,先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后再本机进行文 ...
- Tomcat热部署:Maven项目一键部署到Tomcat服务器 - 支持多环境
参考:Eclipse中的Maven项目一键部署到Tomcat服务器 - 支持多环境部署 命令 debug模式设置关联源码 eclipse --> 项目右键 --> Debug As --& ...
- Centos 环境一键部署脚本(shell脚本)
谨以此文纪念吊炸天的Centos环境一键部署方案的新鲜出炉 辛苦大半年,产品准备上线了,BOSS亲自体验安装部署,看着超过200+页的安装文档直接崩溃了(需要部署23个基础服务),经历了超过3个小时的 ...
- .NET持续集成与自动化部署之路第三篇——测试环境到生产环境的一键部署策略(Windows)
Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言 前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟 ...
- 使用vagrant一键部署本地php开发环境(一)
一:我们为什么需要用这玩意 我们在开发中经常会面临的问题:环境不一致,有人用Mac有人用Windos还有几个用linux的,而我们的服务器都是linux. 在我本地是可以的啊,我测了都,没有问题 ...
- 使用vagrant一键部署本地php开发环境(二)制作自己的vagrant box
在上篇的基础上 ,我们已经安装好了virtualbox和vagrant,没有安装的话,参照上篇 使用vagrant一键部署本地php开发环境(一) 1.从网易镜像或阿里等等镜像下载Centos7 ht ...
随机推荐
- TienChin 渠道管理-渠道页面完善
最后附上渠道管理的数据 install SQL 语句: INSERT INTO TienChin.tienchin_channel (channel_id, channel_name, status, ...
- linxu下面的绝对路径和相对路径
绝对路径和相对路径 前言 相对路径与绝对路径 绝对路径 相对路径 目录的相关操作 绝对路径和相对路径 前言 学习linux,对于里面的路径肯定要很清楚.做下总结吧. 相对路径与绝对路径 绝对路径 路径 ...
- 分布式缓存-Redis集群
一.单点Redis弊端 1.数据丢失问题:Redis是内存存储,服务器重启可能会丢失数据 2.并发能力问题:单节点Redis并发能力虽然不错,但也无法满足如618这样的高并发场景 3.故障恢复问题:如 ...
- maven打包报错
* 系统:macOS* 开发工具:Idea* 问题描述:在idea中执行mvn clean install时报No compiler is provided in this environment. ...
- vue下载本地文件 下载二进制流文件 兼容ie
vue-cli2要下载的静态文件放在static目录下,vue-cli3则放在public目录下 ie不支持 h5 的download写法,故用以下写法 <el-button type=&quo ...
- 顶配涨至近2万 该买还是买!iPhone15正面曝光 与历代苹果手机对比边框爆窄
从曝光的iPhone 15正面渲染图来看,其颜值确实要比上代又提高不少. 外媒放出了一组iPhone 15 Pro的正面渲染图照,从图片看边框非常的窄,与历代iPhone 边框对比,这个特点更是被放大 ...
- CF526F Pudding Monsters 题解
题目链接:CF 或者 洛谷 析合树真是连续段问题的降智神器 先看下题目的一些特殊性,每行每列恰好有一个棋子.考虑特殊性,\(n \times n\) 的棋盘,那么就该判断是否有 \(n\) 个棋子,容 ...
- 洛谷P3046 海底高铁 巧用差分统计经过区间次数
洛谷P3046 海底高铁 -差分统计经过区间次数 题目贴在这里P3406 海底高铁 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 分析 本题题干很长,但是题意理解很简单.就是给定n ...
- 4.if语句--《Python编程:从入门到实践》
4.1 检查多个条件 1.使用 and 检查多个条件 2.使用 or 检查多个条件 4.2 检查特定值是否包含在列表中 使用 in 检查特定值是否在列表中 >>> req ...
- Mac 上 snail svn 配置验证信息
这样就不用每次都得输入svn的账号 和 密码了