简介: 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(组件系统)。

原文链接

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

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

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

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

  2. KubeVela 成为 CNCF 沙箱项目,让云端应用交付更加简单

    简介:KubeVela 就是这样一个面向用户的上层平台项目.对于业务开发者来说,KubeVela 简单.易用,它可以让开发者以极低的心智负担和上手成本在 Kubernetes 上定义与部署应用... ...

  3. KubeVela 1.4:让应用交付更安全、上手更简单、过程更透明

    作者:孙健波,曾庆国 KubeVela 是一个现代化的软件交付控制平面,目标是让应用的部署和运维在如今的混合多云环境下更简单.敏捷.可靠.自 1.1 版本发布以来,KubeVela 架构上天然打通了企 ...

  4. OAM 与 KubeVela:下一代云原生应用交付和管理实践

    本篇文章是我在 "2022云原生超级英雄会" 直播中分享的<OAM 与 KubeVela:下一代云原生应用交付和管理实践>演讲内容整理. 演讲视频 在业务不断扩张的当下 ...

  5. 基于 Jenkins 构建的团队如何使用 Zadig 丝滑交付

    Jenkins 是一个是基于 Java 开发的.非常经典的开源持续集成项目,被企业和团队广泛应用,但 Jenkins 本身并非云原生设计,随着微服务数量增长.业务架构上云 (Kubernetes) 趋 ...

  6. KubeVela 为 CNCF 孵化器带来软件交付控制平面能力

    CNCF TOC(Technical Oversight Committee,技术监督委员会)已经投票接受 KubeVela 作为 CNCF 的孵化项目. KubeVela [ 1] 是一个应用交付引 ...

  7. 她,从种蘑菇卖煤球,到开源 Zadig

    三周前,Zadig 开源了. Zadig 是国内不断涌现的新业务模式催生出的一款云原生软件交付产品.成立于 2019 年初,创始人没有显赫背景,研发由女性软件工程师主导,我们这个只有 10 来人的云原 ...

  8. 专访 KubeVela 核心团队:如何简化云原生复杂环境下的应用交付和管理

    01 背景 Aliware 12 月 9 日,在 2021 年 KubeCon 云原生技术峰会上,CNCF 开源项目 KubeVela 宣布推出了 1.2 版本. KubeVela 是一个简单易用且高 ...

  9. 基于 KubeVela 的 GitOps 交付

    作者|董天欣(雾雾) 审核&校对:溪洋.海珠 编辑&排版:雯燕 KubeVela 是一个简单.易用.且高可扩展的云原生应用管理和交付平台,能让开发人员方便快捷地在 Kubernetes ...

最新文章

  1. 解决mysql中limit和in不能同时使用的问题
  2. 我对NHibernate的感受(2):何必到处都virtual
  3. 2021高考成绩微信查询方法6,2021年高考成绩查询时间、入口及方法
  4. php 云计算 源码,蜂巢平台基于PHP5.3云计算应用框架 v0.4.0.1
  5. 使用GPU在caffe上进行CNN训练
  6. 更改Android Studio中AVD的默认路径
  7. Codeforces Round #358 (Div. 2) A. Alyona and Numbers 水题
  8. 程序员如何跨越35岁危机?这篇给点干货建议!
  9. LeetCode 406 根据身高重建队列
  10. OpenShift 4 - OpenShift是如何升级RHCOS的
  11. 自定义数组名做参数(传指针教学)
  12. MyBatis缓存结构
  13. totolink服务器未响应,totolink路由器登陆页面打不开怎么办
  14. Material Design实战
  15. Python带你了解数据结构【二】
  16. ROS-Melodic 编译Moveit全过程记录和错误解决方案
  17. MDN-CSS-排版社区大学首页
  18. ffmpeg中的av_pix_fmt_descriptors
  19. 穷人家的孩子刘强东又投资了一家AI芯片公司
  20. 网络安全:常见的网络协议

热门文章

  1. ubuntu 禁用透明大页_如何在ubuntu上默认启用透明的大页面?
  2. 不安装oracle 连接数据库,不安装oracle 连接服务器oracle数据库方法
  3. python request url编码_Python 爬虫 (requests) 发送中文编码的 HTTP POST 请求
  4. python windows开发_windows 下 python 开发是一种什么样的体验?
  5. 3d打印光固化好还是热固化好_UV专利一览(71) —天啦噜!3D打印上太空!
  6. excel 科学计数法转换成文本完整显示_表格技巧—Excel里身份证号码显示不全的多种解决办法...
  7. leetcode 116 --- 填充每个节点指向最右节点的next指针
  8. python商城源码_自学Python才几天,就成功编写出俄罗斯方块游戏,附自学教程
  9. 计算机大作业论文意义,大学的大作业是什么?
  10. java mssql mysql,在JSP中访问MSSQLServer数据库_MySQL