关于kubernetes:一文了解如何源码编译Rainbond基础组件

54次阅读

共计 2991 个字符,预计需要花费 8 分钟才能阅读完成。

Rainbond 次要由以下三个我的项目组成,参考官网具体 技术架构

业务端

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

Rainbond-UI https://github.com/goodrain/r…

Rainbond-Console https://github.com/goodrain/r…

集群端

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

Rainbond https://github.com/goodrain/r…

编译我的项目

留神:须要装置 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

正文完
 0