扫码阅读
手机扫码阅读

云原生 | Kubevela应用一键发布,了解一下

315 2023-09-08


Cloud Native

ESG服务BU云原生交付中心、云基地

在云原生上的尝试、调研与分享


Kubevela

一键发布 应用分析

本期我们将介绍如何通过使用kubevela的addon插件功能,实现一键启动应用

本次实验采用的应用为yao,yao 是一个开源的高性能应用引擎,用以快速生成业务系统、网站/APP API 接口、管理后台、自建低代码平台等。

下面附上相关地址:

addon yao gitlab地址:

https://newgitlab.digitalchina.com/wuhan/ebg_cn/kube-addon/tree/master/local-addon s/yao

yao 官网地址:

https://yaoapps.com/

话不多说,下面就开始吧~

生成系统

根据官方文档yao生成一个简单的系统需要一下几步:

# 1

安装yao命令行

在Linux或MacOS系统中执行curl命令获取安装脚本并执行:

curl -fsSL https://website.yaoapps.com/install.sh | bash

# 2

初始化项目

创建指定的目录并进入,通过init命令初始化项目:

mkdir /data/appcd /data/appyao init

# 3

创建数据表初始化菜单

yao migrate //在项目的根目录下运行及前一步创建的/data/appyao run flows.setmenu //初始化菜单

# 4

运行项目

yao start //在项目的根目录下运行

转换为Addon

将其转换为addon的实现的要点分别有以下几点:

  • 具有yao命令行的镜像;

  • 在试用yao镜像生成的容器中初始化项目运行项目

  • 将yao生成的系统服务端口映射到宿主机上;

根据以上几点要求我们分别实现:

# 1

选用具有yao命令行的镜像

首先yao官方提供了具有yao命令行的镜像 yaoapp/yao:0.10.1-amd64-dev

同时我们也可以选择试用其他的适配自己实验环境的镜像。

# 2

运行项目初始化命令

其次需要在容器中运行项目初始化的命令,这里我选择提前准备好shell脚本然后通过k8s中的configMap资源挂载到容器中执行。

# 3

端口映射到宿主机

最后yao的服务会默认监听5099端口,所以这里选择试用k8s中的NodePort Service来将端口映射到集群。

当然我们也可以通过修改环境变量的方式来更改yao生成的系统的配置。

addon代码分析

/ addon目录结构

yao-service.yaml

用来保存yao服务的启动脚本,并存储在configMap中。

apiVersion: v1kind: ConfigMapmetadata: name: http-configmap namespace: defaultdata: services.sh: | #!/bin/bash cd /data/app yao init yao migrate yao run flows.setmenu yao start

yao-service.yaml

创建yao service将pod 的端口代理到宿主机的对应端口上

apiVersion: v1kind: Servicemetadata: namespace: default name: yao-servicespec: type: NodePort selector: app: yao-service ports: - port: 5099 targetPort: 5099 nodePort: 32099

yao.yaml

apiVersion: v1kind: ConfigMapmetadata: name: http-configmap namespace: defaultdata: services.sh: | #!/bin/bash cd /data/app yao init yao migrate yao run flows.setmenu yao start

yao服务的deployment,用来部署yao镜像,同时创建数据卷,并在生成的容器中挂载卷。

这里的卷有两个:

一个是用来保存yao服务本身的数据的yao-volume卷,这个卷使用服务器本地的文件系统来生成。

另一个卷是使用k8s的configMap,将之前生成的configMap中的启动脚本挂载到容器的对应位置

command参数是启动对应脚本来初始化并启动yao服务。

最后我们可以将yao的代码上传到GitHub、gitlab等服务之上并通过kubevela中添加仓库来获取yao的addon代码来实现一键启动。

那么以上就是

全部内容了,

相信一定能对你有所帮助~


本期作者

go开发工程师 冯康


原文链接: http://mp.weixin.qq.com/s?__biz=Mzg5MzUyOTgwMQ==&mid=2247512261&idx=1&sn=5dea3652f1e8ead0ce36f724f55ec08a&chksm=c02f8b63f7580275888f96125817b9e24f2bbae3d57c85f7a179aee500acf63b3951dc023043#rd