• 云原生 | Kubevela一键发布应用分析


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

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

    下面附上相关地址:

    addon yao gitlab地址

    yao 官网地址

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

    一、生成系统  

    根据官方文档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代码来实现一键启动。

  • 相关阅读:
    Ubuntu服务器搭建 - 环境篇
    入职环境安装经验
    【C++面向对象程序设计】类与对象的引入、this指针
    Metabase学习教程:系统管理-7
    网工内推 | IT主管、高级网工,上市公司,必须持有HCIE认证
    java stream中的peek()用法
    【Python面试】——Python如何进行内存管理
    C语言学习-数组应用-三子棋(4.1)
    java计算机毕业设计网上商城系统演示录像源码+系统+数据库+lw文档+mybatis+运行部署
    FPGA如此火热,ASIC和FPGA到底选哪个好?
  • 原文地址:https://blog.csdn.net/CBGCampus/article/details/127783448