乐趣区

关于运维:KubeVela-上手|让云端应用交付更加丝滑

简介:KubeVela 是阿里云和微软独特发动的 OAM(Open Application Model)规范的技术实现,旨在打造对立、规范、跨环境的云端利用交付,省时省力,轻松简略

作者|KubeVela 社区

作者|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-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 里查看到相干容器信息:

按 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 或间接钉钉扫码退出社区交换群:


版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

退出移动版