热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一文了解如何源码编译Rainbond基础组件

Rainbond主要由以下三个项目组成,参考官网详细技术架构业务端Rainbond-UI和Rainbond-Console合起来构成了业务层。业务层是前后端分离模式。UI是业务层的

Rainbond 主要由以下三个项目组成,参考官网详细 技术架构

业务端

Rainbond-UI 和 Rainbond-Console 合起来构成了业务层。业务层是前后端分离模式。UI是业务层的前端代码,Console是业务层的后端代码。

Rainbond-UI https://github.com/goodrain/rainbond-ui

Rainbond-Console https://github.com/goodrain/rainbond-console

集群端

Rainbond 是平台集群端的实现,主要与 Kubernetes 集群进行交互。

Rainbond https://github.com/goodrain/rainbond

编译项目

注意:需要安装 docker 环境

业务层源码编译

编译前端Rainbond-UI镜像

  1. 首先将 Rainbond-UI 项目克隆到本地
git clone https://github.com/goodrain/rainbond-ui.git
  1. 使用项目根目录下的 build.sh 脚本构建镜像:
VERSION=v5.5.0-release ./build.sh

VERSION 指定构建完镜像的 tag,前端打包出的镜像将作为后端代码的基础镜像。

编译后端Rainbond-console镜像

  1. 首先将 Rainbond-console 项目克隆到本地
git clone https://github.com/goodrain/rainbond-console.git
  1. 使用项目根目录下的 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 集群上的,同时组件比较多,因此可以根据需要编译单个组件。

单个组件编译

单组件编译在实际开发过程中⾮常重要,通常我们在二次开发过程中修改了某个组件后,可以单独编译某个组件并使⽤最新的组件镜像在已安装的开发测试环境中直接替换镜像。

  1. 首先将 Rainbond 项目克隆到本地
git clone https://github.com/goodrain/rainbond.git
  1. 使用项目根目录下的 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 集群上,因此需要满足以下前提条件,才能将编译好的组件镜像运行起来。

前提条件

  1. 已经安装好 Rainbond 的测试环境
  2. Kubectl 命令,可参考文档 安装Kubectl

运行镜像

Rainbond 数据中心端的组件,都是由 rbdcomponent 这个 CRD 资源进行定义的。当你编译好某个组件的镜像,需要运行时,则需要修改 rbdcomponent 这个资源。

以 chaos 组件为例,假设你编译好的 chaos 镜像名为

rainbond/rbd-chaos:v5.5.0-release

依次执行以下操作,替换集群中的组件镜像。

  1. 编辑对应的 rbdcomponent 文件
kubectl edit rbdcomponent rbd-chaos -n rbd-system
  1. 找到镜像地址一栏,修改镜像,如
spec:
  image: rainbond/rbd-chaos:v5.5.0-release
  1. 保存退出,此时执行以下命令,应该可以看到对应组件正在更新。等待pod更新完毕即可。
kubectl get pod -n rbd-system

推荐阅读
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 五、RabbitMQ Java Client基本使用详解
    JavaClient的5.x版本系列需要JDK8,用于编译和运行。在Android上,仅支持Android7.0或更高版本。4.x版本系列支持7.0之前 ... [详细]
  • 多线程补充(一)JVM内存结构 VS Java内存模型 VS Java对象模型
    一:Java内存结构参考:https:www.zhihu.comquestion64586462answer576543433内存结构࿱ ... [详细]
author-avatar
mobiledu2502925953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有