当前位置:网站首页>一文了解如何源码编译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.sh
VERSION
指定构建完镜像的 tag,前端打包出的镜像将作为后端代码的基础镜像。
编译后端Rainbond-console镜像
- 首先将
Rainbond-console
项目克隆到本地
git clone https://github.com/goodrain/rainbond-console.git
- 使用项目根目录下的
release.sh
脚本构建镜像:
VERSION=v5.5.0-release ./release.sh allinone
VERSION
指定构建完镜像的 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
边栏推荐
- Notes on PHP penetration test topics
- Empire CMS collection Empire template program general
- Rainbond结合NeuVector实践容器安全管理
- 央视太暖心了,手把手教你写HR最喜欢的简历
- Game attack and defense world reverse
- Basic use of CTF web shrink template injection nmap
- Complex network modeling (III)
- What is the function of paralleling a capacitor on the feedback resistance of the operational amplifier circuit
- 轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷
- Force buckle 145 Binary Tree Postorder Traversal
猜你喜欢
船载雷达天线滑环的使用
Main window in QT learning 27 application
Empire CMS collection Empire template program general
Quick analysis of Intranet penetration helps the foreign trade management industry cope with a variety of challenges
【数字IC验证快速入门】10、Verilog RTL设计必会的FIFO
The largest 3 same digits in the string of leetcode simple question
【数字IC验证快速入门】13、SystemVerilog interface 和 program 学习
Explore dry goods! Apifox construction ideas
Few shot Learning & meta learning: small sample learning principle and Siamese network structure (I)
Linux server development, MySQL index principle and optimization
随机推荐
What is the function of paralleling a capacitor on the feedback resistance of the operational amplifier circuit
Network learning (III) -- highly concurrent socket programming (epoll)
UnityHub破解&Unity破解
Myabtis_Plus
Recursive method constructs binary tree from middle order and post order traversal sequence
Record a stroke skin bone error of the skirt
uniapp 移动端强制更新功能
复杂网络建模(一)
Téléchargement des données de conception des puces
云原生存储解决方案Rook-Ceph与Rainbond结合的实践
Unityhub cracking & unity cracking
Avatary的LiveDriver试用体验
数据库实时同步利器——CDC(变化数据捕获技术)
Leetcode 187 Repeated DNA sequence (2022.07.06)
【数字IC验证快速入门】14、SystemVerilog学习之基本语法1(数组、队列、结构体、枚举、字符串...内含实践练习)
运放电路的反馈电阻上并联一个电容是什么作用
Padavan manually installs PHP
【踩坑系列】uniapp之h5 跨域的问题
快解析内网穿透为文档加密行业保驾护航
太真实了,原来自己一直没有富裕起来是有原因的