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

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: KubeVela 是阿里云和微软共同发起的 OAM(Open Application Model)标准的技术实现,旨在打造统一、标准、跨环境的云端应用交付,省时省力,轻松简单

作者|KubeVela 社区

封面图.jpg

作者|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/_

安装 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-plane
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: 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 里查看到相关容器信息:

1.png

按 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 项目,欢迎搜索钉钉群号 23310022 或直接钉钉扫码加入社区交流群:


二维码.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
搜索推荐 算法 数据挖掘
淘口令真实URL API接口的应用与收益
淘口令作为电商推广利器,通过简短文本引导用户直达商品页,提升购物体验与销售效率。本文探讨淘口令真实URL API接口的应用,包括商品推广、数据分析、跨境电商及社交媒体营销等方面,揭示其在电商领域的巨大潜力与收益。
224 1
|
11月前
|
监控 网络协议 Nacos
Nacos:构建微服务架构的基石
Nacos:构建微服务架构的基石
422 2
|
6月前
|
消息中间件 数据库 开发者
《微服务必解之惑:分布式事务方案大揭秘》
微服务架构因灵活性与可扩展性成为企业首选,但分布式事务问题随之凸显。本文探讨了多种解决方案:两阶段提交(2PC)和三阶段提交(3PC)保证强一致性,但存在性能瓶颈;基于消息队列的最终一致性方案通过异步通信提升性能,适合对实时性要求不高的场景;Saga模式和TCC模式分别通过补偿事务和三阶段控制实现灵活处理。选择方案需综合考虑业务需求、系统架构及开发成本,以找到最优解。掌握这些方法,可有效应对微服务中的分布式事务挑战,构建高效稳定的系统。
122 0
|
JavaScript 前端开发 IDE
[译] 以和为贵!让 ESlint、Prettier 和 EditorConfig 互不冲突
[译] 以和为贵!让 ESlint、Prettier 和 EditorConfig 互不冲突
[译] 以和为贵!让 ESlint、Prettier 和 EditorConfig 互不冲突
|
网络协议 安全 Shell
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
`nmap`是一个开源的网络扫描工具,用于发现网络上的设备和服务。Python的`python-nmap`库允许我们在Python脚本中直接使用`nmap`的功能。
|
存储 关系型数据库 分布式数据库
突破大表瓶颈|小鹏汽车使用PolarDB实现百亿级表高频更新和实时分析
PolarDB已经成为小鹏汽车应对TB级别大表标注、分析查询的&quot;利器&quot;。
突破大表瓶颈|小鹏汽车使用PolarDB实现百亿级表高频更新和实时分析
|
12月前
|
弹性计算 网络协议 数据库
在阿里云国际站上解析域名到服务器详细教程
在阿里云国际站上解析域名到服务器详细教程
|
数据采集
指标体系构建-02-从0开始,梳理数据指标体系
指标体系构建-02-从0开始,梳理数据指标体系
|
算法 调度 决策智能
Python高级算法——模拟退火算法(Simulated Annealing)
Python高级算法——模拟退火算法(Simulated Annealing)
1559 1
|
文字识别 算法 计算机视觉
MATLAB实现OCR自动阅卷,识别答题卡进行成绩统计
利用MATLAB进行答题卡识别编程设计,最主要的是实现了将答题卡中被填涂的答案提取出来,然后与标准的答案进行比对。通过相关的算法,算出考生填涂正确的题数,并统计计算后的得分。