KubeVela 上手(1)|让云端应用交付更加丝滑

简介: KubeVela 是阿里云和微软共同发起的 OAM(Open Application Model)标准的技术实现,旨在打造统一、标准、跨环境的云端应用交付,省时省力,轻松简单

作者|KubeVela 社区

 

本文适合所有软件工程师进行阅读使用,尤其是希望开拓后端技术视野的前端、移动端和全栈工程师们。

前言

在软件开发越来越敏捷的今天,后端技术架构也一直一刻不停地演进以适应需求的变化。

从最初的物理机时代、云计算萌芽的虚拟机时代,再到大爆发的容器时代,所有这一切,我们本来都朝着一个确定方向发展,即:让应用交付更好、更快和更强。目前处在容器时代的我们,一边迎接 Kubernetes 等云原生技术浪潮带来的丰富能力,一边又不得不面对这些烦恼:

  • Kubernetes 陡峭的学习曲线和一堆眼花缭乱的概念,使得应用开发人员的开发效率很难令人满意。
  • 服务应用开发的平台团队,却没有一个合适的框架来构建用户友好且高度可扩展的抽象。
  • 尤其在未来的混合云、多云、分布式云这些日益复杂的业务场景中,应用交付更是变得碎片化。

KubeVela 是阿里云和微软共同发起的 OAM(Open Application Model)标准的技术实现,旨在打造统一、标准、跨环境的云端应用交付,省时省力,轻松简单:

  • 以应用程序为中心- KubeVela 引入了开放应用程序模型(OAM)来作为更高级别的 API,通过高度一致的工作流来捕获面向混合环境的微服务交付的所有信息。包括多集群分发策略、流量调配和滚动更新等运维特征,都声明在应用级别。用户无需关心任何基础设施细节,只需要定义和部署应用即可。
  • 可编程式交付工作流- KubeVela 的模型层是利用 CUE 来实现的。它使得你可以轻松地将应用交付工作流声明为一个 DAG,并将所有步骤和应用部署需求以可编程的方式粘合在一起。这里没有任何限制,原生可扩展。
  • 运行时无关 - KubeVela 是一个完全与运行时无关的应用交付与管理控制平面。它可以按照你定义的工作流与策略,面向混合环境交付和管理任何应用组件:包括容器、云函数、数据库甚至 AWS EC2 实例。

现在快跟我来,走进 KubeVela 一探究竟!

可以先熟悉的概念

Docker:常用的一种容器。

Image:容器镜像。Docker 的最核心组成,简单理解为可拷贝的安装光盘。

DockerHub:Docker 公司负责维护的一个容器镜像公开下载中心。

Kubernetes:容器编排标准,工作是统一管理调度容器。

YAML:一种配置文件格式。

话不多说,来愉快地敲代码学习吧!

试玩 KubeVela 环境搭建

这一次,我们将介绍使用 Kind(Kubernetes in Docker)来搭建本地 Kubernetes 环境。顾名思义,Kubernetes in Docker,所以继续往下看之前,请确保跟随链接先安装好 Docker(_https://docs.docker.com/desktop/_)和 Kubernetes 的命令行工具 kubectl(_https://kubernetes.io/zh/docs/tasks/tools/_)。

安装 Kind,如果是 MacOS 系统,请在命令行键入:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-darwin-amd64chmod +x ./kindmv ./kind /some-dir-in-your-PATH/kind

如果是 Windows 则使用:

curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.11.1/kind-windows-amd64Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe

安装好 Kind 之后启动 Kind,运行如下命令:


cat <<EOF | kind create cluster --image=kindest/node:v1.18.15 --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-planekubeadmConfigPatches:- |kind: InitConfigurationnodeRegistration:kubeletExtraArgs:node-labels: "ingress-ready=true"extraPortMappings:- containerPort: 80hostPort: 80protocol: TCP- containerPort: 443hostPort: 443protocol: TCP
EOF

同时我们需要安装 Ingress for Kind。如果把 Kubernetes 比作为“容器酒店”的总经理,Ingress 则类似于这家酒店的迎宾员,负责把前来的“访问客人”引导到下面具体的哪一步,是去餐厅、去客房还是去健身等等:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml

当以上一切就绪,就意味着本地我们已经有了完备的 Kubernetes 环境。

接下来,让我们来安装 KubeVela。首先请安装 Helm Chart,它是 Kubernetes 生态的包管理工具,运行:

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

然后在 Helm Chat 中添加 KubeVela:

helm repo add kubevela https://charts.kubevela.net/core

接着更新 Helm Chart:

helm repo update

最后安装 KubeVela:

helm install --create-namespace -n vela-system kubevela kubevela/vela-core

我们查看一下是否安装成功:

helm test kubevela -n vela-system

成功后提示:Welcome to use the KubeVela! Enjoy your shipping application journey!

好,那开始编写第一个 KubeVela Demo 吧!

KubeVela,Hello World!

在前一小节的环境配置当中,我们启动了一个 Kind 集群,可以在 Docker GUI 里查看到相关容器信息:

 

按 KubeVela 所抽象的方式,我们定义一个 Web Service,它会拉取 DockerHub 上命为「crccheck/hello-world」的镜像。

apiVersion: core.oam.dev/v1beta1kind: Applicationmetadata:  name: first-vela-appspec:  components:    - name: express-server      type: webservice      properties:        image: crccheck/hello-world        port: 8000      traits:        - type: ingress          properties:            domain: testsvc.example.com            http:              "/": 8000

紧接着使用 Kubernetes 的 kubectl apply 命令来部署这条 YMAL:

kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/docs/examples/vela-app.yaml

由于 Ingress for Kind 会默认把你在 YAML 中声明的 webservice 绑定到 localhost,所以如果你想得到访问部署好的应用,只需要在命令行里键入:​

curl -H "Host:testsvc.example.com" localhost

Viola!出现了让我们最亲切的词语:Hello World!

<xmp>Hello World##         .                           ## ## ##        ==     ## ## ## ## ##    ===      /""""""""""""""""\___/ ===             ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~                           \______ o _,/                            \      \       _,'                       `'--.._\..--''</xmp>

总结与预告

上文带我们完整地体验了一遍 KubeVela 带来的应用交付流程,就像“把大象关进冰箱只要三步”一样简单直接。

通过编写一个叫做 Application 的“应用交付计划” YAML 文件,我们得到交付的是一个 Web Service 类型的 Kubernetes 组件。

Web Service 组件背后的机制是什么?KubeVela 如何交付 Helm 组件?又如何交付云服务组件?如何编排这些组件?

这些就留待下一期我们回来详细讲解 KubeVela 的核心概念:Application 和 Components(组件系统)。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云云原生首次在太空验证,提升“天算星座“卫星计算精度

12月10日&#xff0c;搭载“天算星座”计算平台的试验卫星在轨稳定运行&#xff0c;华为云“云边一体”方案首次在太空验证。 图&#xff1a;天算星座计划 “天算星座”计划&#xff0c;由北京邮电大学深圳研究生院与天仪研究院共同发起&#xff0c;以服务国家重大战略需求和…

火柴人_火柴人战争遗产修改无限金币钻石

火柴人战争遗产修改无限金币钻石V1.11.160/中文/80M商店内使用钻石购买商品不减反增【一、游戏简介】《火柴人战争遗产修改版 Stick War: Legacy》一直最受玩家欢迎、评分最高的一款网游现在推出移动版.玩 Stick War&#xff0c;体验这款最受欢迎、最有趣、最具挑战性且容易入迷…

一种通用整形数组压缩方法

简介&#xff1a; 我们在开发中后台应用或者中间件的时候&#xff0c;会存储一些数据在内存中以加快访问速度。随着数据量的增加&#xff0c;除了可以放置于堆外&#xff0c;还可以通过实时压缩来缓解。今天就给大家介绍一种压缩整形数组的方式。 作者 | 玄胤 来源 | 阿里技术公…

gitlab git clone 卡住_gitlab从入门到绝望

啥年月了还用svn&#xff0c;日了狗一样难受。开搞&#xff01;docker是最好的容器&#xff0c;直接docker装gitlab。学新玩意不去官网不是人&#xff1a;https://docs.gitlab.com/omnibus/docker/#expose-gitlab-on-different-portsdocker pull gitlab/gitlab-cesudo docker r…

FBEC2021暨第六届金陀螺奖颁奖典礼盛大开幕

2021年12月10日&#xff0c;由广东省游戏产业协会、广东省虚拟现实产业技术创新联盟、深圳市科学技术协会、深圳市互联网文化市场协会指导&#xff0c;陀螺科技主办&#xff0c;深圳市科技开发交流中心、恒悦创客魔方协办&#xff0c;行业头部媒体游戏陀螺、VR陀螺、陀螺电竞、…

RDS PostgreSQL一键大版本升级技术解密

简介&#xff1a; 内容简要&#xff1a; 一、PostgreSQL行业位置 二、PostgreSQL版本升级背景 三、PostgreSQL版本升级解密 四、PostgreSQL版本升级成果 一、PostgreSQL行业位置 &#xff08;一&#xff09;行业位置 在讨论PostgreSQL&#xff08;下面简称为PG&#xff09;在…

环境变量_Jenkins流水线环境变量权威指南

你是否遇到过因环境变量问题导致调试流水线很长时间&#xff1f;这篇文章一定能解决你的问题。本文章翻译自博客。欢迎来到“Jenkins CookBook”系列的第一篇博客文章。今天&#xff0c;我们专注于有效地使用Jenkins Pipeline环境变量。您将学习如何定义env变量&#xff0c;如何…

浅谈RSocket与响应式编程

简介&#xff1a; RSocket是高效一个二进制的网络通讯协议&#xff0c;能够满足很多场景下使用。另外&#xff0c;RSocket也是一个激进的响应式捍卫者&#xff0c;激进到连API都跟响应式无缝集成。本文我们将和大家分享RSocket与响应式编程。 作者 | 素渡 来源 | 阿里技术公众号…

Go语言重新开始,Go Modules 的前世今生与基本使用

随着Go语言发展与场景变化&#xff0c; GOPATH 引起的编译依赖、内部自签发证书、安全审计等问题相继出现&#xff0c;随着官方推出的Go Modules逐渐完善&#xff0c;用户有了新的选择。本文将会带领大家从0开始&#xff0c;认识并使用Go Modules。 2020 年腾讯内部的一份开发者…

MaxCompute中如何通过logview诊断慢作业

简介&#xff1a; MaxCompute致力于批量结构化数据的存储和计算&#xff0c;提供海量数据仓库的解决方案及分析建模服务&#xff0c;在MaxCompute执行sql任务的时候有时候作业会很慢&#xff0c;本文通过查看logview排查具体任务慢的原因 在这里把任务跑的慢的问题划分为以下几…

excel超级工具箱_这6个Excel高效办公插件,你都用过吗?

1.易用宝。ExcelHome出品&#xff0c;永久免费&#xff0c;让繁琐或难以实现的操作变得简单可行&#xff0c;甚至能够一键完成&#xff0c;所有这些功能都将极大地提升 Excel 的便捷以及可用性&#xff01;地址&#xff1a;http://yyb.excelhome.net2.方方格子工具箱。大部分功…

Yurt-Tunnel 详解|如何解决 K8s 在云边协同下的运维监控挑战

简介&#xff1a; 伴随着 5G、IoT 等技术的快速发展&#xff0c;边缘计算被越来越广泛地应用于电信、媒体、运输、物流、农业、零售等行业和场景中&#xff0c;成为解决这些领域数据传输效率的关键方式。与此同时&#xff0c;边缘计算形态、规模、复杂度的日益增长&#xff0c;…

RTC风向标:11月最值得关注的26个热点

近年来&#xff0c;实时音视频快速发展&#xff0c;WebRTC作为实时音视频的标准也快速发展&#xff0c;从直播到通讯&#xff0c;其应用场景也在不断丰富。如果您关注实时音视频方向的技术产品应用与创新&#xff0c;本系列文章就将会为您分享音视频方向的技术产品动态&#xf…

克隆需要验证_[实验技巧]CRISPR实验中如何验证编辑?

在CRISPR/Cas9基因组编辑实验中&#xff0c;如果你已经构建好了gRNA表达载体&#xff0c;并利用Cas9将它引入了目标细胞&#xff0c;那么恭喜你&#xff01;成功就在眼前&#xff0c;指日可待。下一步&#xff0c;你还要验证一下&#xff0c;看看细胞的编辑是否如你所愿。在此&…

基于边缘云的机器流量管理技术实战

简介&#xff1a; CDN是通过在全球范围内分布式地部署边缘服务器将各类互联网内容缓存到靠近用户的边缘服务器上&#xff0c;从而降低用户访问时延并大幅减少穿越互联网核心网的流量。互联网业务使用CDN已经成为一种必然的选择。 企业边缘应用面临的挑战 CDN是通过在全球范围…

python中的repr是什么意思_python中str和repr有什么区别

python中str和repr有什么区别&#xff1f;下面给大家详细介绍&#xff1a; 1、内建函数str()和repr() 或反引号操作符&#xff08;&#xff09;可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。 2、str()函数得到的字符串可读性好&#xff08;故被print调用&am…

Go语言入门分享

简介&#xff1a; Go语言出自Ken Thompson、Rob Pike和Robert Griesemer之手&#xff0c;起源于2007年&#xff0c;并在2009年正式对外发布。Go的主要目标是“兼具Python等动态语言的开发速度和C/C等编译型语言的性能与安全性”&#xff0c;旨在不损失应用程序性能的情况下降低…

瑞欧威尔联合创始人兼CEO 李波博士:“工业元宇宙”是为了更好赋能实体经济

2021年12月10日&#xff0c;由广东省游戏产业协会、广东省虚拟现实产业技术创新联盟、深圳市科学技术协会、深圳市互联网文化市场协会指导&#xff0c;陀螺科技主办&#xff0c;深圳市科技开发交流中心、恒悦创客魔方协办&#xff0c;行业头部媒体游戏陀螺、VR陀螺、陀螺电竞、…

加载模型图_Tensorflow ckpt模型加载时的命名映射

tensorflow代码在加载ckpt模型时一般会使用如下代码&#xff1a;saver tf.train.Saver() with tf.Session() as sess:saver.restore(sess, "model.ckpt")那么问题来了&#xff0c;如果想把开源的ckpt模型加载到自己代码里不同的变量命名空间中&#xff0c; 应该如何…

Flink + Iceberg + 对象存储,构建数据湖方案

简介&#xff1a; 上海站 Flink Meetup 分享内容&#xff0c;如何基于Flink、对象存储、Iceberg 来构建数据湖生态。 本文整理自 Dell 科技集团高级软件研发经理孙伟在 4 月 17 日 上海站 Flink Meetup 分享的《Iceberg 和对象存储构建数据湖方案》&#xff0c;文章内容为&…