2 Star 4 Fork 7

lang.yu / vertx-zero-cloud

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Zero Cloud

1. 基本介绍

1.1. 序

    Zero Cloud是基于Zero Framework的云端版本,目前Zero框架的Extension部分功能已经可以支撑大部分企业级应用(在ITSM、CMDB、IOT、酒店管理、金融、医疗领域运行了9个生产环境的企业内部系统),在准备发布1.0.0 版本之前,我又重新基于云端进行了新的架构设计,准备打造云原生平台。

    早期开发Zero时有一个侵入式的微服务云端版本,但那个版本比较初级,当时就是基于K8SIstio 最早的版本开发的,底层使用了etcdgRpc,如今旧事重提,换一种云端思路来打造新的云原生生态,于是有了Zero Cloud。

    该项目目前没有核心代码,核心代码会收录在vertx-zero/vertx-istio 子项目中,当前项目主要提供云端架构的指导规范、概念定义、设计思路、自动化脚本以及云端项目脚手架,并通过自动化或半自动化模式使完整生态落地。

1.2. 结构(概念版)

Zero Cloud的基础系统设计并没有完全按照云原生十二要素进行,由于K8S和Istio已经提供了底层大部分基础设施功能,所以Zero Cloud将所有精力集中于应用层,根据部署运维的视角,其实客户本身的应用系统是一个平行四边形结构。


2. 目录说明

2.1. vertx-zero-cloud

目录名 所属 说明
development vertx-zero-cloud 研发/开发环境工具目录。
document vertx-zero-cloud 内置文档目录。
toolkit vertx-zero-cloud 脚本工具专用目录。
apps xxx-cloud 全局环境配置模板。
environment xxx-cloud 环境分流格式专用配置目录。
platform xxx-cloud 多语言资源配置分流目录。

    对vertx-zero-cloud而言,xxx-cloud系统平台是单独的一个app,而xxx-cloud其本身是一个** 多租户、多语言、多应用的环境,至于结构图中的多环境、多区域**和部署应用没有直接关系,大部分是在底层K8S这一级实现分离。

2.2. xxx-cloud

    无须手工创建,直接设置环境变量后运行初始化脚本即可,xxx-cloud自带分类配置:

  • K8S环境配置:用于描述该平台发布到哪种K8S环境中(五选一)
  • 应用语言配置:用于描述该平台使用哪种语言优先(三选一)
目录名 类型 说明
database/mysql 目录 (K8S挂载)MySQL数据库文件目录。
database/tidb 目录 (K8S挂载)TiDB数据库文件目录。
development 目录 和vertx-zero-cloud中的development维持一致,协同开发。
deployment 目录 (五选一)对应vertx-zero-cloud中的environment。
kzero 目录 (生产运行)对应vertx-zero-cloud中的platform。
kidd 目录 (生产运行)和kzero协同处理配置的专用平台。
kinect 目录 (开发测试)低代码所见即所得专用平台。
zapp.yml 文件 当前平台的全局统一配置。
zapp-axis.yml 文件 当前平台核心引擎配置。
zapp-modulat.yml 文件 当前平台的Zero模块化配置,标准化专用。
zapp-plugin.yml 文件 当前平台的功能插件配置,集成和IT驱动专用。
zapp-down.yml 文件 当前平台下的app-children专用配置(子系统、子模块专用)。
zapp-up.yml 文件 和vertx-zero-cloud连接执行协同处理的专用配置。
k-app.sh 文件 初始化环境融合脚本,融合出厂设置、平台特有专用。
k-init.sh 文件 初始化环境专用脚本。
.env.development 文件 开发用环境变量。
.env.production 文件 生产用环境变量。

2.3. 设计理念

  • xxx-cloud必须实现自动化运维、管理、更新以及不下线。
  • vertx-zero-cloud属于xxx-cloud的中枢神经系统,它提供了整个平台环境的专有规范,更新时自动分发出厂设置 给每一个xxx-cloud
  • xxx-cloud本身的Github库中记录了所有版本变更,配置层用于协调生产、开发、测试环境的无缝切换。
  • 二者协同实现双平台架构,上游平台和下游平台各司其职,上游平台负责开发、运维、监控、管理以及命令和事件的分发,下游平台负责应用变更、需求适配。

3. 系统规范

3.1. K8S环境类型

    Zero Cloud中定义了K8S的运行环境,位于目录environment中,而每一个xxx-cloud 只能选择一种,之中所包含的脚本和相关部署工具都相互独立、相互隔离,其核心环境如下(只有两个可以上生产):

目录名 类型 说明
kmini 开发 本地Minikube开发环境。
k8s 开发/测试 远程Minikube开发测试环境(单节点)。
kmt 压测 预发布压力测试专用环境(单节点 / 集群)。
ki 生产 远程标准环境(单节点 / 集群)。
kiha 生产/高可用 远程HA环境(集群)。

3.2. 组件环境

    K8S的每个目录会包含各种功能型组件的核心目录,其支持功能是横向的,所有xxx-cloud 都可以选择启用或禁用。etcd是K8S自带,所以此处不考虑etcd的启动和部署脚本,以下环境是目前可以直接和zero执行集成的核心环境,大部分内容zero-framework中已提供了集成客户端以及相关代码。

说明
/cloud/* Zero Cloud部署脚本/配置。
/elk/* ELK日志平台部署脚本/配置。
/es/* ElasticSearch部署脚本/配置。
/hcp/* HCP Vault部署脚本/配置。
/istio/* Istio启动脚本。
/kafka/* Kafka部署脚本/配置。
kiali/* Kiali部署脚本/配置。
/mysql/* MySQL部署脚本/配置。
/neo4j/* Neo4J部署脚本/配置。
/pts/* Prometheus部署脚本/配置。
/redis/* Redis部署脚本/配置。
/tidb/* TiDB部署脚本/配置。
/zipkin/* Zipkin部署脚本/配置。

4. 应用规范

4.1. 语言分类

说明
cn 中文
en 英文(保留)
jp 日文(保留)

4.2. 环境分类

类型 说明
kzero 出厂 平台基础默认环境。
kidd 运行 不下线的云端运行环境,kzero冗余镜像。
kinect 测试/预发布 kzero -> kidd的预发布验证环境。
  1. kzero为静态环境,环境中不包含相关配置,云端部署和发布时,会直接以此目录中的所有配置信息为基版本。
  2. kidd/kinect为运行环境,其中会包含整套配置信息,基于平台目录相关配置都存储于该目录中。

4.3. 配置文件

说明
zcloud.yml 平台连接配置目录。
zcloud-plugin.yml 插件启用配置,可配置environment中所需部署脚本。
zcloud-axis.yml 开发专用配置,配置低代码平台。
zcloud-modulat.yml 模块化专用配置文件。

4.4. 应用配置目录

说明
asset/admin 「OOB」平台共享管理目录。
asset/modulat 「OOB」模块化专用目录。
asset/tenant 「OOB」租户专用目录。
asset/istio 「OOB」K8S连接配置专用目录。
atom/workflow 「OOB」工作流引擎专用配置目录。
atom/emf 「OOB」模型专用配置目录(基于EMF)。
atom/authorize 「OOB」权限管理配置专用目录。
atom/integration 「OOB」集成服务配置专用目录。
atom/graphic 「OOB」拓扑图配置专用目录。
atom/tpl 「OOB」模板系统配置专用目录。
action/job 「OOB」操作执行任务定义。
action/api 「OOB」操作执行接口定义。
action/lexeme 「OOB」操作执行语义转换定义。
action/rule 「OOB」操作执行规则定义。
above/page 「OOB」呈现配置页面。
above/form 「OOB」呈现配置表单。
above/list 「OOB」呈现配置列表。
above/event 「OOB」呈现行为配置目录。

5. 整体拓扑

以最新版为准,该图是老版本,后续定型后重新更新。


6. 应用初始化

6.1. 环境变量

    环境变量命名规范如下:

  • ZK打头,全称Zero Kernel,容器相关的环境变量。
  • ZA打头,全称Zero Aeon,永世系统核心驱动层组件专用。
  • ZC打头,全称Zero Component,每个应用专有的环境变量。

    环境变量如:

类型 名称 说明
Zero Kernel ZK_NS 应用APP的名空间。
Zero Kernel ZK_CONFIG 应用APP核心配置文件路径。
Zero Aeon ZA_ENV 环境五选一,默认kmini
Zero Aeon ZA_LANG 语言三选一,默认cn。
TiDB ZC_TIDB TiDB名称。
TiDB ZC_TIDB_STORE TiDB挂载的存储数据文件的路径(物理路径)。

6.2. 初始化步骤

  1. 创建一个Maven的空项目,并链接到您的Git私库中。

  2. vertx-zero/vertx-istio/scaffold中下载核心文件到项目根目录。

    .env.development            # 开发环境文件
    k-app.sh                    # 初始化环境融合脚本
    k-init.sh                   # 初始化环境脚本
  3. 修改.env.development环境变量。

  4. 运行k-app.sh自动执行当前项目初始化。

6.3. 基本环境要求

说明
JDK 17+(推荐ZuLu)
Node 18.x+
envsubst 该命令必须可用,网上参考安装教程。
minikube (开发)K8S迷你环境、单节点。
docker (开发)容器环境。

7. 运行说明

7.1. 脚本命名规范

  • minikube-:基本环境启动脚本(包括dashboard)。
  • istio-:Istio环境安装脚本。
  • zo-(Zero Deployment to K8S)脚本:发布组件到K8S的专用脚本。
  • zp-(Zero Purge from K8S)脚本:从K8S清除当前组件专用脚本。
  • zq-(Zero Query)脚本:查询组件状态专用脚本。
  • 如果该脚本需开放或启动某个端口号,则以端口号名称为文件前缀,如:
    • 1201-istioctl-kiali.sh
    • 1231-minicube-dashboard.sh

7.2. 默认端口

  • 1231:Dashboard主端口号。
  • 1201 ~ 1299:辅助工具主端口号。
  • Random:以组件标准为主,如TiDB是4000,程序消费专用端口号。
端口 类型 说明
1231 Minikube Minikube Dashboard专用端口号,查看K8S集群专用。
1201 Kaili Kaili监控平台专用端口号。
1202 TiDB TiDB Grafana专用端口号。
1203 TiDB TiDB Prometheus专用端口号。
4000 TiDB TiDB数据库专用端口号。

空文件

简介

Zero云原生平台(实验版) 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Shell
1
https://gitee.com/silentbalanceyh/vertx-zero-cloud.git
git@gitee.com:silentbalanceyh/vertx-zero-cloud.git
silentbalanceyh
vertx-zero-cloud
vertx-zero-cloud
master

搜索帮助