当前位置: 首页 > news >正文

如何将应用一键部署至多个环境?丨Walrus教程

在 Walrus 平台上,运维团队在资源定义(Resource Definition)中声明提供的资源类型,通过设置匹配规则,将不同的资源部署模板应用到不同类型的环境、项目等。与此同时,研发人员无需关注底层具体实现方式,通过创建 Resource 对象声明需要使用的资源类型及基本信息,就可以灵活地在各种环境中自动化创建所需资源并使用,进而屏蔽各类环境中基础设施的复杂度,降低研发人员的认知负担。

 

本教程将以 MySQL 数据库为例演示如何使用 Walrus 部署多态应用,即通过配置资源定义和资源两个 API 对象将应用快速部署到不同环境中。

 

概念介绍:资源定义

首先,让我们了解一些相关概念。资源定义是 Walrus 构建多云、混合基础设施上层统一抽象的核心,它可以构建多态应用、简化部署配置。

 

image.png

 

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

 

image.png

 

资源定义包括四个部分。

 

  • 模板:通过自定义或使用开源模板抽象创建资源所需配置。
  • 匹配规则:定义每个规则的匹配条件,当符合条件时使用的模板。
  • 管理员配置:通过在匹配的规则下添加管理配置,最佳实践等预定义配置,简化用户部署时配置。
  • UI 样式:根据需求定制的用户界面样式,屏蔽复杂度。

 

现在,我们一起来看看如何结合资源定义来屏蔽复杂度并部署多态应用

 

部署多态应用

前提条件

在开始前,请准备相关资源并完成以下配置工作。

 

  1. 连接器配置。

进入 default 项目 > 连接器> 新建连接器,输入名称 alibaba, 选择云厂商类型的连接器,类型选择“Alibaba”,适用环境类型选择“生产”,输入其他信息完成配置。再次点击新建连接器,输入名称 aws, 类型选择“AWS”,适用环境类型选择“生产”,输入其他信息完成配置。

 

  1. 环境准备。

进入 default 项目 > 环境> 新建环境,输入名称 production,关联刚才新建的名为 alibaba 的连接器,用作生产部署环境。再次新建环境,输入名称 dr,关联刚才新建的名为 aws 的连接器,用作云灾备环境。加上 default 项目中自带的 local 环境,我们现在一共有三个环境:localproduction,dr

 

image.png

 

  1. 下载 Walrus CLI

这一步可参考 Walrus 官方文档:https://seal-io.github.io/docs/zh/cli

 

配置资源定义

接下来我们将配置资源定义,这里以构建一个多态的 mysql 数据库为例。

 

  1. 资源定义规则配置

首先按照顺序进入 运维中心 > 资源定义 > 新建资源定义,输入资源定义名称 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,其他根据实际情况配置。

 

配置完成后包含以下匹配规则。

 

image.png

 

image.png

 

image.png

 

  1. 自定义 UI 样式配置

完成规则配置后,Walrus 会根据配置的规则和预定义配置,智能渲染出 UI 样式,管理员可以根据需求定制 UI 样式。

 

然后进入运维中心 > 资源定义 > 找到对应的资源定义 > UI Schema,点击预览可看到自动生成的 UI 样式。我们这里删除一些复杂配置,留下常用配置支持用户快速启动,以下是配置完成的 UI 样式。

 

image.png

 

部署多态应用

使用上面配置好的资源定义就可以支持我们创建多态应用了。这里我们按照以下步骤进行部署:

 

  1. 进入 应用管理 > local 环境 > 新建资源。
  2. 输入资源名称,资源类型选择我们刚新建的资源类型 mysql,输入架构,数据库版本等配置,点击保存并部署就可完成部署了。
  3. 进入 production 环境 > 新建资源,同样选择资源类型 mysql,输入配置完成部署。
  4. 进入 dr 环境 > 新建资源,同样选择资源类型 mysql,输入配置完成部署。
  5. 三个环境都创建了 mysql 类型的资源,local 环境连接了 kubernetes 连接器,production 环境连接了 alibaba 连接器,dr 环境连接了 aws 连接器,可以看到不同环境是否根据当前环境动态的创建了对应的资源。

 

local 环境在 kubernetes 集群中创建了 mysql 容器。

 

image.png

 

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

 

image.png

 

image.png

 

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

 

image.png

 

image.png

 

通过 Walrus File 部署多态应用

除了通过 UI 部署多态应用,还可以通过 Walrus file 达到同样的效果。

 

  1. 准备 app.yaml,内容如下:

 

version: v1
resources:- name: mysqltype: mysqlattributes:architecture: standalonedatabase: mydbengine_version: "8.0"username: rdsuser

 

  1. 运行命令部署到不同环境。

 

# 部署到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教程

在 Walrus 平台上,运维团队在资源定义(Resource Definition)中声明提供的资源类型,通过设置匹配规则,将不同的资源部署模板应用到不同类型的环境、项目等。与此同时,研发人员无需关注底层具体实现方式&…...

Redis的一些问题,解决并发的

项目通布隆过滤器: 布隆过滤器: 布隆过滤器是一种空间效率非常高的数据结构,用于快速判断一个元素是否可能存在于一个集合中。它由一个位数组(通常是长度为 m 的比特数组)和 k 个不同的哈希函数组成。当一个元素被加入…...

郭炜老师mooc第十一章数据分析和展示(numpy,pandas, matplotlib)

多维数组库numpy numpy创建数组的常用函数 # numpy数组import numpy as np #以后numpy简写为np print(np.array([1,2,3])) #>>[1 2 3] print(np.arange(1,9,2)) #>>[1 3 5 7] 不包括9 print(np.linspace(1,10,4)) #>>[ 1. 4. 7. 10.] # linespace(x,y,n)&…...

Redis主从架构和管道Lua(一)

Redis主从架构 架构 Redis主从工作原理 如果为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。master受到PSYNC命令,会在后台进行数据持久化通过bgsave生成最新的 RDB快照文件,持久化期间…...

GTH手册学习注解

CPLL的动态配置 终于看到有这个复位功能了 QPLL SWITCHing需要复位 器件级RESET没发现有管脚引出来 两种复位方式,对应全复位和器件级复位 对应的复位功能管脚 改那个2分频的寄存器说明段,复位是自动发生的?说明可能起效了,但是分…...

html5cssjs代码 002 50以内的加法算式

html5&css&js代码 002 一些基本概念 50以内的加法算式 一、代码二、解释 50以内的加法算式。 一、代码 <!DOCTYPE html> <html lang"en"> <head><title>50以内的加法算式</title><meta charset"UTF-8"><m…...

[React 进阶系列] React Context 案例学习:使用 TS 及 HOC 封装 Context

[React 进阶系列] React Context 案例学习&#xff1a;使用 TS 及 HOC 封装 Context 具体 context 的实现在这里&#xff1a;[React 进阶系列] React Context 案例学习&#xff1a;子组件内更新父组件的状态。 根据项目经验是这样的&#xff0c;自从换了 TS 之后&#xff0c;…...

网络编程:网络编程基础

一、网络发展 1.TCP/IP两个协议阶段 TCP/IP协议已分成了两个不同的协议&#xff1a; 用来检测网络传输中差错的传输控制协议TCP 专门负责对不同网络进行2互联的互联网协议IP 2.网络体系结构 OSI体系口诀&#xff1a;物链网输会示用 2.1网络体系结构概念 每一层都有自己独…...

力扣热题100_矩阵_73_矩阵置零

文章目录 题目链接解题思路解题代码 题目链接 73.矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&…...

C++程序设计-第四/五章 函数和类和对象【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下C程序设计中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 C程序设计系列文章传送门&#xff1a; 第一章 面向对象基础 第四/五章 函数和类和对象 第六/七/八章 运算符重载/包含与继承/虚函…...

C#快速入门基础

本篇文章从最基础的C#编程开始学习&#xff0c;经过非常优秀的面向对象编程思想和方法的学习&#xff0c;为C#编程打下基础。 第 01 章 C#开发环境之VS使用和.NET平台基础 1.1 Visual Studio 开发环境 1.1.1 硬件环境 i5CPUi5CPU&#xff08;建议 4核 4线程或以上 &#xff0…...

UnityShader常用算法笔记(颜色叠加混合、RGB-HSV-HSL的转换、重映射、UV序列帧动画采样等,持续更新中)

一.颜色叠加混合 1.Blend混合 // 正常&#xff0c;透明度混合 Normal Blend SrcAlpha OneMinusSrcAlpha //柔和叠加 Soft Additive Blend OneMinusDstColor One //正片叠底 相乘 Multiply Blend DstColor Zero //两倍叠加 相加 2x Multiply Blend DstColor SrcColor //变暗…...

Vue3调用钉钉api,内嵌H5微应用单点登录对接

钉钉内嵌H5微应用单点登录对接 https://open.dingtalk.com/document/isvapp/obtain-the-userid-of-a-user-by-using-the-log-free 前端需要的代码 1、安装 dingtalk-jsapi npm install dingtalk-jsapi2、在所需页面引入 import * as dd from dingtalk-jsapi; // 引入钉钉a…...

UE5 局域网联机,寻找会话失败。

目录 参考资料&#xff1a; 尝试解决办法 1.1在【项目名.Build.cs】脚本中添加该行&#xff0c;添加后关闭编辑器&#xff0c;重新生成解决方案。​编辑 2.检查是否在同一个C类子网 参考资料&#xff1a; 1.Cant find session in LAN - Programming & Scripting / Mul…...

Windows系统安装MongoDB并结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…...

Hadoop伪分布式配置--没有DataNode或NameNode

一、原因分析 重复格式化NameNode 二、解决方法 1、输入格式化NameNode命令&#xff0c;找到data和name存放位置 ./bin/hdfs namenode -format 2、删除data或name&#xff08;没有哪个删哪个&#xff09; sudo rm -rf data 3、重新格式化NameNode 4、重新启动即可。...

柚见第十期(后端队伍接口详细设计)

创建队伍 用户可以 创建 一个队伍&#xff0c;设置队伍的人数、队伍名称&#xff08;标题&#xff09;、描述、超时时间 P0 队长、剩余的人数 聊天&#xff1f; 公开 或 private 或加密 信息流中不展示已过期的队伍 请求参数是否为空&#xff1f;是否登录&#xff0c;未登录不…...

【李沐论文精读】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…...

新版Android Studio火烈鸟 在新建项目工程时 无法选java的语言模板解决方法

前言 最近下载最新版androidstudio时 发现不能勾选java语言模板了 如果快速点击下一步 新建项目 默认是kotlin语言模板 这可能和google主推kt语言有关 勾选1 如图所示 如果勾选 No Activity 这个模板 是可以选java语言模板的 但是里面没有默认的Activity 勾选2 和以前的用法…...

github(不是git啊)操作记录(踩坑)

专栏介绍与文章目录-CSDN博客 github是程序员绕不开的东西。 网站打不开&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 明明账号密码都对却登录失败&#xff1f; 向雇主或有关部门申请合法信道连接互联网。 重置密码失败&#xff1f; 向雇主或有关部门申请合法信道…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...