当前位置:网站首页>一文了解如何源码编译Rainbond基础组件
一文了解如何源码编译Rainbond基础组件
2022-07-07 05:09:00 【Rainbond】
Rainbond 主要由以下三个项目组成,参考官网详细 技术架构

业务端 Rainbond-UI https://github.com/goodrain/rainbond-ui
Rainbond-Console https://github.com/goodrain/rainbond-console
Rainbond-UI 和 Rainbond-Console 合起来构成了业务层。业务层是前后端分离模式。UI是业务层的前端代码,Console是业务层的后端代码。
集群端 Rainbond https://github.com/goodrain/rainbond
Rainbond 是平台集群端的实现,主要与 Kubernetes 集群进行交互。
编译项目
注意:需要安装 docker 环境
业务层源码编译
编译前端Rainbond-UI镜像
- 首先将
Rainbond-UI项目克隆到本地
git clone https://github.com/goodrain/rainbond-ui.git- 使用项目根目录下的
build.sh脚本构建镜像:
VERSION=v5.5.0-release ./build.shVERSION 指定构建完镜像的 tag,前端打包出的镜像将作为后端代码的基础镜像。
编译后端Rainbond-console镜像
- 首先将
Rainbond-console项目克隆到本地
git clone https://github.com/goodrain/rainbond-console.git- 使用项目根目录下的
release.sh脚本构建镜像:
VERSION=v5.5.0-release ./release.sh allinoneVERSION 指定构建完镜像的 tag,由于前端代码的镜像为基础镜像,因此该处应与前端项目的 tag 保持一致。请使用如下命令将前后端代码编译在一起,形成最终可直接运行的 allinone 镜像。
运行业务层镜像
当编译完成 allinone 镜像后,你可以参考如下命令,将最后一行的镜像名替换为你打包的镜像名后,运行该镜像。
docker run -d -p 7070:7070 \--name=rainbond-allinone --restart=always \-v ~/.ssh:/root/.ssh \-v ~/rainbonddata:/app/data \rainbond/rainbond:v5.5.0-release-allinone镜像运行起来后,访问机器的 7070 端口,即可进入 Rainbond 控制台。
集群端源码编译
集群端是部署在 Kubernetes 集群上的,同时组件比较多,因此可以根据需要编译单个组件。
单个组件编译
单组件编译在实际开发过程中⾮常重要,通常我们在二次开发过程中修改了某个组件后,可以单独编译某个组件并使⽤最新的组件镜像在已安装的开发测试环境中直接替换镜像。
- 首先将 Rainbond 项目克隆到本地
git clone https://github.com/goodrain/rainbond.git- 使用项目根目录下的
release.sh脚本构建镜像,以 chaos 组件为例,在 rainbond 代码主目录下执行
./release.sh chaos单组件编译支持以下组件:
rbd-chaos
chaos 组件对应 Rainbond 应用构建服务,主要处理 CI 过程,将输入源包括 源代码 或 Docker镜像 或 应用市场应用 进行解析、编译、打包,最终生成 应用(组件)的版本介质。
rbd-api
api 组件对应 Rainbond 数据中心 API 服务,API 服务作为数据中心级抽象的核心控制服务,对外提供 Restful 风格的 API 服务,是数据中心控制请求的唯一入口。
rbd-gateway
gateway 组件对应 Rainbond 应用网关服务,应用网关是外部流量进入 Rainbond 租户内部组件的唯一入口, 提供 HTTP, HTTPs 路由, TCP/UDP 服务, 负载均衡器, 高级路由(A/B 测试, 灰度发布),虚拟 IP 支持等功能。
rbd-monitor
monitor 组件对应 Rainbond 监控服务,Rainbond 基于 Prometheus 封装了 Monitor 组件,通过从 etcd、Kubernetes 集群中自动发现应用、集群、集群节点服务的各类监控对象并完成 Prometheus 监控目标配置,将监控目标纳入 Prometheus 监控范围。
rbd-mq
mq 组件对应 Rainbond 消息中间件服务,MQ 组件是基于 Etcd 实现的轻量级分布式、消息持久化和全局一致性的消息中间件。该组件维护异步任务消息,提供多主题的消息发布和订阅能力。
rbd-webcli
webcli 组件对应 Rainbond 应用 Web 终端控制服务,该组件实现了通过 web 的方式连接到容器控制台的功能。该组件通过与 UI 进行 WebSocket 通信,用户可以通过模拟 Web 终端发送各类 shell 命令,webcli 通过 kube-apiserver 提供的 exec 方式在容器中执行命令并返回结果到 Web 终端。
rbd-worker
worker 组件对应 Rainbond 应用运行时控制服务,应用运行时控制服务将 Rainbond-Application Model 进行实例化转化为 Kubernetes 资源模型,配属应用运行需要的各类资源,完成应用生命周期中的运行态部分,可以理解为 CD 控制服务,该服务的设计要点是支撑大量应用的生命周期监管。
rbd-eventlog
eventlog 组件对应 Rainbond 事件与日志处理服务,主要处理用户异步操作日志、应用构建日志和应用运行日志。
rbd-mesh-data-panel
mesh-data-panel 组件处理组件间的依赖。
rbd-grctl
grctl 组件提供命令行工具,用于查询集群内组件相关信息。
rbd-node
node 组件对应 Rainbond 集群、节点管理服务,Node 组件是 Rainbond 集群组建的基础服务,集群内所有节点都需要运行该组件。提供节点信息采集、集群服务维护、应用日志收集、应用运行时支持等关键能力。
完整安装包打包编译
编译完整安装包适⽤于改动了较多源代码后,重新⽣成安装包。在 rainbond 代码主⽬录下执⾏
./release.sh all运行集群端镜像
由于数据中心端部署在 Kubernetes 集群上,因此需要满足以下前提条件,才能将编译好的组件镜像运行起来。
前提条件
- 已经安装好 Rainbond 的测试环境
- Kubectl 命令,可参考文档 安装Kubectl
运行镜像
Rainbond 数据中心端的组件,都是由 rbdcomponent 这个 CRD 资源进行定义的。当你编译好某个组件的镜像,需要运行时,则需要修改 rbdcomponent 这个资源。
以 chaos 组件为例,假设你编译好的 chaos 镜像名为
rainbond/rbd-chaos:v5.5.0-release依次执行以下操作,替换集群中的组件镜像。
- 编辑对应的 rbdcomponent 文件
kubectl edit rbdcomponent rbd-chaos -n rbd-system- 找到镜像地址一栏,修改镜像,如
spec: image: rainbond/rbd-chaos:v5.5.0-release- 保存退出,此时执行以下命令,应该可以看到对应组件正在更新。等待pod更新完毕即可。
kubectl get pod -n rbd-system关于Rainbond
Rainbond 是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。
Github:https://github.com/goodrain/rainbond
微信群:关注 Rainbond 公众号加入技术交流群
钉钉群:请搜索钉钉群号 31096419
边栏推荐
- 使用 Nocalhost 开发 Rainbond 上的微服务应用
- [quick start of Digital IC Verification] 17. Basic grammar of SystemVerilog learning 4 (randomization)
- Yugu p1020 missile interception (binary search)
- 【数字IC验证快速入门】10、Verilog RTL设计必会的FIFO
- Avatary's livedriver trial experience
- 【数字IC验证快速入门】15、SystemVerilog学习之基本语法2(操作符、类型转换、循环、Task/Function...内含实践练习)
- Record a stroke skin bone error of the skirt
- [quickstart to Digital IC Validation] 15. Basic syntax for SystemVerilog Learning 2 (operator, type conversion, loop, Task / Function... Including practical exercises)
- ZCMU--1396: 队列问题(2)
- Introduction to basic components of wechat applet
猜你喜欢

buureservewp(2)

buureservewp(2)
![[matlab] when matrix multiplication in Simulink user-defined function does not work properly, matrix multiplication module in module library can be used instead](/img/e3/cceede6babae3c8a24336c81d98aa7.jpg)
[matlab] when matrix multiplication in Simulink user-defined function does not work properly, matrix multiplication module in module library can be used instead

Call pytorch API to complete linear regression

JS quick start (I)

Yugu p1020 missile interception (binary search)

运放电路的反馈电阻上并联一个电容是什么作用

Quick analysis of Intranet penetration helps the foreign trade management industry cope with a variety of challenges

拓维信息使用 Rainbond 的云原生落地实践

Custom class loader loads network class
随机推荐
互动送书-《Oracle DBA工作笔记》签名版
QT learning 26 integrated example of layout management
Linux Installation MySQL 8.0 configuration
JS cross browser parsing XML application
Example of file segmentation
Zsh shell adds automatic completion and syntax highlighting
ROS Bridge 笔记(05)— carla_ackermann_control 功能包(将Ackermann messages 转化为 CarlaEgoVehicleControl 消息)
Bugku CTF daily one question chessboard with only black chess
Summary of redis functions
Record a stroke skin bone error of the skirt
Chip information website Yite Chuangxin
Myabtis_ Plus
Use of JMeter
ZCMU--1396: 队列问题(2)
Linux server development, MySQL transaction principle analysis
Binary tree and heap building in C language
DNS server configuration
Minimum absolute difference of binary search tree (use medium order traversal as an ordered array)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after conne
LeetCode简单题之判断一个数的数字计数是否等于数位的值