组件配置文件实践
Rainbond 结合了 Kubernetes 的 ConfigMap 实现的配置文件,是一种特殊的存储类型,此类型允许用户直接定义文件内容,通常是指配置文件;配置文件有两大特性:动态渲染环境变量和配置文件共享。
的官方镜像,给出了两种自定义配置文件的方法
- 第一种
在宿主机需要有一个配置文件,并将这个配置文件在容器启动时挂载到容器的 目录下,/etc/mysql/conf.d
下的配置文件即会覆盖容器内默认配置文件 /etc/mysql/my.cnf
。
这种方法不够灵活,无法在创建组件时确认 Pod 会被调度在哪个节点上(数据中心通常是集群),需要组件创建完成后才能挂载配置文件,然后重启组件使其生效。
- 第二种
在容器启动时 docker run 命令中传入相关参数, 比如通过 character-set-server
和 collation-server
两个参数修改默认的编码和校对规则:
这种方法同样不够灵活,如果设置的参数非常多,那么这个 docker run 命令将会非常的长。
Rainbond 结合 k8s 的 ConfigMap 实现的配置文件,这种方法灵活性比较高, 可以 动态渲染环境变量,还可以共享给其它组件使用,以下演示 Rainbond 的配置文件挂载以及共享配置文件方法。
- 拥有一份 MariaDB的配置文件。
在这个配置文件中使用了 动态渲染配置文件解析环境变量,设置了 , CHARACTER_SET_SERVER
,DEFAULT_STORAGE_ENGINE
等可以解析环境变量的变量,并给它们设置了默认值,如果组件中存在指定的环境变量,那么 Rainbond 会将该环境变量的值解析到配置文件中;如果组件中不存在该环境变量,那么 Rainbond 会将默认值解析到配置文件中;如果指定的环境变量不存在,且没有设置默认值,那么 Rainbond 不会进行解析。
动态渲染配置文件解析环境变量的语法:
操作步骤
- 从源码创建 MariaDB 组件,创建时不要勾选构建并启动
2.在组件管理页面 环境配置 —> 配置文件设置 中点击 添加配置文件 ,使用上述示例配置文件即可,挂载路径为 /etc/mysql/mariadb.cnf
;如图所示:
3.添加环境变量
- 构建 MariaDB 组件,启动成功后进入容器检查
/etc/mysql/mariadb.cnf
的内容
可以发现,Rainbond 没有找到 DEFAULT_CHARACTER_SET
,CHARACTER_SET_SERVER
等没有对应环境变量的变量,则使用它们对应的默认值进行了解析;找到了 DEFAULT_STORAGE_ENGINE
对应的环境变量,则使用环境变量 的值 myisam 进行解析.
2.登录 MySQL,查看配置是否生效:
可以看出,编码,校对规则,存储引擎 的设置都已经生效。
前提条件
已通过上述步骤为 MariaDB 挂载配置文件
- 重新创建一个MariaDB组件,
- 在组件管理界面 环境配置 —> 共享配置文件 —> 挂载共享配置文件 找到上面的MariaDB 配置文件并填写挂载路径,更新组件,如图所示:
效果展示
创建完成后, 进入容器查看配置文件/etc/mysql/mariadb.cnf
内容如下: