本期我们将介绍如何通过使用kubevela的addon插件功能,实现一键启动应用。
本次实验采用的应用为yao,yao 是一个开源的高性能应用引擎,用以快速生成业务系统、网站/APP API 接口、管理后台、自建低代码平台等。
下面附上相关地址:
话不多说,下面就开始吧~
根据官方文档yao生成一个简单的系统需要一下几步:
#1 安装yao命令行
在Linux或MacOS系统中执行curl命令获取安装脚本并执行:
curl -fsSL https://website.yaoapps.com/install.sh | bash
#2 初始化项目
创建指定的目录并进入,通过init命令初始化项目:
mkdir /data/app
cd /data/app
yao init
#3 创建数据表初始化菜单
yao migrate //在项目的根目录下运行及前一步创建的/data/app
yao run flows.setmenu //初始化菜单
#4 运行项目
yao start //在项目的根目录下运行
将其转换为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生成的系统的配置。
yao-service.yaml
用来保存yao服务的启动脚本,并存储在configMap中。
apiVersion: v1
kind: ConfigMap
metadata:
name: http-configmap
namespace: default
data:
services.sh: |
#!/bin/bash
cd /data/app
yao init
yao migrate
yao run flows.setmenu
yao start
yao-service.yaml
创建yao service将pod 的端口代理到宿主机的对应端口上
apiVersion: v1
kind: Service
metadata:
namespace: default
name: yao-service
spec:
type: NodePort
selector:
app: yao-service
ports:
- port: 5099
targetPort: 5099
nodePort: 32099
yao.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: http-configmap
namespace: default
data:
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代码来实现一键启动。