跳到主要内容

配置文件详解

本文档详细介绍 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 和 NFS 包)
# TODO: 未来版本支持
offline:
# 单个 ISO 路径(适用于单一操作系统) )
isoPath: "/root/ubuntu-20.04-amd64-debs.iso"

# 或者为不同操作系统指定不同 ISO
isoPaths:
ubuntu: "/root/ubuntu-20.04-amd64-debs.iso"
centos: "/root/centos-7-x86_64-rpms.iso"
debian: "/root/debian-11-amd64-debs.iso"

# ISO 挂载目录
mountDir: "/tmp/roi-repository"

# LVM 自动配置
lvm:
enabled: false # 是否启用 LVM
devices: [] # 设备列表(空=自动扫描未使用的磁盘)
# 或手动指定: ["/dev/sdb", "/dev/sdc"]

# 方式1: 百分比分配(推荐)
rke2Percentage: 70 # RKE2 存储占比 70%
rainbondPercentage: 30 # Rainbond 存储占比 30%

# 方式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" # 数据卷大小

# ==========================================
# Rainbond 配置
# ==========================================
rainbond:
version: v6.4.0-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.offline - 离线软件仓库

信息

TODO: 未来版本支持

用于在完全离线环境中提供系统软件包(如 lvm2, nfs-kernel-server)。

字段类型必需说明
isoPathstring条件单个 ISO 文件路径
isoPathsmap条件不同操作系统的 ISO 路径映射
mountDirstringISO 挂载目录,默认 /tmp/roi-repository

支持的操作系统键:

  • ubuntu: Ubuntu 系统
  • centos: CentOS/RHEL 系统
  • debian: Debian 系统

示例:

storage:
offline:
isoPaths:
ubuntu: "/root/ubuntu-20.04-amd64-debs.iso"
centos: "/root/centos-7-x86_64-rpms.iso"

storage.lvm - LVM 存储配置

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

字段类型必需默认值说明
enabledboolfalse是否启用 LVM
devices[]string[]磁盘设备列表,空则自动扫描
rke2Percentageint条件-RKE2 存储占比(0-100)
rainbondPercentageint条件-Rainbond 存储占比(0-100)
rke2Sizestring条件-RKE2 固定大小(如 "200G")
rainbondSizestring条件-Rainbond 固定大小(如 "100G")

注意:

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

示例 1: 百分比分配

storage:
lvm:
enabled: true
devices: [] # 自动扫描
rke2Percentage: 70
rainbondPercentage: 30

示例 2: 固定大小分配

storage:
lvm:
enabled: true
devices: ["/dev/sdb", "/dev/sdc"]
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 数据库。

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

示例:

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

rainbond - Rainbond 配置

配置 Rainbond 平台。

字段类型必需默认值说明
versionstringv6.4.0-releaseRainbond 版本
valuesobject-自定义 Helm values

自定义 Helm values 示例:

rainbond:
version: "v6.4.0-release"
values: