作者|KubeVela 社区
作者|KubeVela 社区
本文适合所有软件工程师进行阅读使用,尤其是希望开拓后端技术视野的前端、移动端和全栈工程师们。
?
?
在软件开发越来越敏捷的今天,后端技术架构也一直一刻不停地演进以适应需求的变化。
?
从最初的物理机时代、云计算萌芽的虚拟机时代,再到大爆发的容器时代,所有这一切,我们本来都朝着一个确定方向发展,即:让应用交付更好、更快和更强。目前处在容器时代的我们,一边迎接 Kubernetes 等云原生技术浪潮带来的丰富能力,一边又不得不面对这些烦恼:
?
KubeVela 是阿里云和微软共同发起的 OAM(Open Application Model)标准的技术实现,旨在打造统一、标准、跨环境的云端应用交付,省时省力,轻松简单:
?
现在快跟我来,走进 KubeVela 一探究竟!
?
?
Docker:常用的一种容器。
?
Image:容器镜像。Docker 的最核心组成,简单理解为可拷贝的安装光盘。
?
DockerHub:Docker 公司负责维护的一个容器镜像公开下载中心。
?
Kubernetes:容器编排标准,工作是统一管理调度容器。
?
YAML:一种配置文件格式。
?
话不多说,来愉快地敲代码学习吧!
?
?
这一次,我们将介绍使用 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 吧!
?
在前一小节的环境配置当中,我们启动了一个 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 或直接钉钉扫码加入社区交流群:
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...