跳到主要内容

配置文件详解

本文档详细介绍 ROI 配置文件 cluster.yaml 的所有配置项和使用方法。

配置文件结构

ROI 使用 YAML 格式的配置文件来定义集群拓扑和组件配置。配置文件主要包含以下部分:

  1. hosts - 主机定义
  2. roleGroups - 角色分配
  3. storage - 存储配置
  4. database - 数据库配置
  5. rainbond - Rainbond 配置

完整配置示例

以下是一个包含所有配置项的完整示例:

# ==========================================
# 主机配置
# ==========================================
hosts:
# Master 节点 1
- name: master-1 # 主机名
address: 192.168.1.10 # 公网 IP
internalAddress: 172.16.0.10 # 内网 IP
port: 22 # SSH 端口(默认: 22)
user: root # SSH 用户
password: "SecurePassword123!" # SSH 密码

- name: master-2
address: 192.168.1.11
internalAddress: 172.16.0.11
user: root
password: "SecurePassword123!"

- name: worker-1
address: 192.168.1.20
internalAddress: 172.16.0.20
user: root
password: "SecurePassword123!"

# ==========================================
# 角色分配
# ==========================================
roleGroups:
# Etcd 节点(通常是 master 节点)
etcd:
- master-1
- master-2

# Master 节点(控制平面)
master:
- master-1
- master-2

# Worker 节点(运行业务负载)
worker:
- worker-1

# NFS 服务器节点(只能一个)
nfs-server:
- master-1

# Rainbond 网关节点(可多个,用于高可用)
rbd-gateway:
- worker-1

# Rainbond Chaos 节点(可多个)
rbd-chaos:
- worker-1

# ==========================================
# 存储配置
# ==========================================
storage:
# LVM 自动配置
lvm:
enabled: false # 是否启用 LVM
# 填写各个节点的磁盘设备列表,必须与 hosts 中的节点一一对应
nodeDevices:
node-1:
- /dev/sdb
- /dev/sdc
node-2:
- /dev/nvme0n1
node-3:
- /dev/vdb

# 方式1: 百分比分配(推荐)
rke2Percentage: 70 # RKE2 存储占比 70% (/var/lib/rancher/rke2)
rainbondPercentage: 30 # Rainbond 存储占比 30% (/opt/rainbond)
# rke2Percentage: 100 # 只创建RKE2分区
# rainbondPercentage: 0 # 跳过Rainbond分区

# 方式2: 固定大小分配(会覆盖百分比配置)
# rke2Size: "200G"
# rainbondSize: "100G"

# NFS 配置
nfs:
enabled: true # 是否启用 NFS
sharePath: /nfs-data/k8s # NFS 共享路径
storageClass:
enabled: true # 是否创建 StorageClass


# ==========================================
# 数据库配置
# ==========================================
database:
mysql:
enabled: true # 是否启用外部 MySQL
masterPassword: "RootPassword123!" # Root 密码
replicationPassword: "ReplPass123!" # 复制密码
replicaCount: 1 # secondary副本数,默认1
# 持久化配置(自动推断)
# persistence:
# enabled: true # 自动根据 mysql.enabled 设置
# storageClass: "nfs-storage" # 自动根据 nfs.enabled 选择
# size: "5Gi" # 数据卷大小
# 使用外部自定义MySQL数据库
custom:
enabled: false
console:
host: "mysql.example.com"
port: 3306
database: "console"
username: "rainbond"
password: "your-password"
region:
host: "mysql.example.com"
port: 3306
database: "region"
username: "rainbond"
password: "your-password"

# ==========================================
# Rainbond 配置
# ==========================================
rainbond:
# 通过 github release 获取最新版本号,https://github.com/goodrain/rainbond/releases/latest,如 v6.5.1-release
version: v6.5.1-release # Rainbond 版本

# 自定义 Helm values(可选)
# values:

配置项详细说明

hosts - 主机配置

定义集群中的所有节点。

字段类型必需默认值说明
namestring-主机名,集群内唯一标识
addressstring-公网 IP 地址(没公网IP写内网IP),用于 SSH 连接
internalAddressstringaddress内网 IP 地址,用于集群网络通信
portint22SSH 端口
userstring-SSH 用户名
passwordstring-SSH 密码

示例:

hosts:
- name: node-1
address: 192.168.1.10
internalAddress: 10.0.0.10
port: 22
user: root
password: "password123"

roleGroups - 角色分配

定义节点的角色。节点可以有多个角色。

角色必需说明推荐数量
etcdEtcd 集群节点1, 3, 5(奇数)
masterKubernetes 控制平面节点1, 3, 5
workerKubernetes 工作节点>= 1
nfs-server条件NFS 服务器节点1(启用 NFS 时必需)
rbd-gatewayRainbond 网关节点>= 1
rbd-chaosRainbond 构建节点>= 1

示例:

roleGroups:
etcd: [master-1, master-2, master-3]
master: [master-1, master-2, master-3]
worker: [worker-1, worker-2]
nfs-server: [master-1]
rbd-gateway: [worker-1, worker-2]
rbd-chaos: [worker-1, worker-2]

storage - 存储配置

storage.lvm - LVM 存储配置

自动配置 LVM 存储,为 RKE2 和 Rainbond 创建独立的逻辑卷,并分别挂载到 /var/lib/rancher/rke2/opt/rainbond

字段类型必需默认值说明
enabledboolfalse是否启用 LVM
nodeDevices[]list-节点磁盘设备列表
rke2Percentageint条件-RKE2 存储占比(0-100),为0代表跳过创建
rainbondPercentageint条件-Rainbond 存储占比(0-100),为0代表跳过创建
rke2Sizestring条件-RKE2 固定大小(如 "200G")
rainbondSizestring条件-Rainbond 固定大小(如 "100G")

注意:

  • 百分比和固定大小二选一,固定大小优先级更高
  • 百分比之和应为 100

示例 1: 百分比分配

storage:
lvm:
enabled: true
nodeDevices:
node-1:
- /dev/sdb
- /dev/sdc
node-2:
- /dev/nvme0n1
node-3:
- /dev/vdb
rke2Percentage: 70
rainbondPercentage: 30

示例 2: 固定大小分配

storage:
lvm:
enabled: true
nodeDevices:
node-1:
- /dev/sdb
- /dev/sdc
node-2:
- /dev/nvme0n1
node-3:
- /dev/vdb
rke2Size: "300G"
rainbondSize: "200G"

storage.nfs - NFS 存储配置

配置 NFS 共享存储。

字段类型必需默认值说明
enabledboolfalse是否启用 NFS
sharePathstring-NFS 共享路径
storageClass.enabledbooltrue是否创建 StorageClass

示例:

storage:
nfs:
enabled: true
sharePath: /nfs-data/k8s
storageClass:
enabled: true

database - 数据库配置

信息

如果 mysql.enabled 和 custom.enabled 都为 false,那么将会使用 Rainbond 创建的单节点 rbd-db 为默认数据库。

mysql - 内置安装

配置 MySQL 主从数据库,默认由 ROI 程序自动安装。

字段类型必需默认值说明
mysql.enabledboolfalse是否启用外部 MySQL
mysql.masterPasswordstring-Root 密码
mysql.replicationPasswordstring-复制密码
mysql.replicaCountint1secondary副本数
mysql.persistence.enabledbool-自动根据 enabled 推断
mysql.persistence.storageClassstring-自动根据 NFS 配置推断
mysql.persistence.sizestring5Gi数据卷大小

示例:

database:
mysql:
enabled: true
masterPassword: "MySQL@Root123!"
replicationPassword: "MySQL@Repl123!"
replicaCount: 2 # 主从复制

custom - 外部自定义

配置外部自定义数据库。

字段类型必需默认值说明
custom.enabledboolfalse是否启用外部数据库
custom.console---配置外部自定义控制台端的数据库信息
custom.console.hoststring-数据库地址
custom.console.portint-数据库端口
custom.console.databasestring-数据库名称
custom.console.usernamestring-数据库用户名
custom.console.passwordstring-数据库密码
custom.region---配置外部自定义集群端的数据库信息
custom.region.hoststring-数据库地址
custom.region.portint-数据库端口
custom.region.databasestring-数据库名称
custom.region.usernamestring-数据库用户名
custom.region.passwordstring-数据库密码

示例:

database:
custom:
enabled: true
console:
host: "mysql.example.com"
port: 3306
database: "console"
username: "rainbond"
password: "your-password"
region:
host: "mysql.example.com"
port: 3306
database: "region"
username: "rainbond"
password: "your-password"

rainbond - Rainbond 配置

配置 Rainbond 平台。

字段类型必需默认值说明
versionstringhttps://github.com/goodrain/rainbond/releases/latestRainbond 版本
valuesobject-自定义 Helm values

自定义 Helm values 示例:

rainbond:
version: ""
values: