组件配置文件实践

    Rainbond 结合了 Kubernetes 的 ConfigMap 实现的配置文件,是一种特殊的存储类型,此类型允许用户直接定义文件内容,通常是指配置文件;配置文件有两大特性:动态渲染环境变量和配置文件共享。

    的官方镜像,给出了两种自定义配置文件的方法

    • 第一种

    在宿主机需要有一个配置文件,并将这个配置文件在容器启动时挂载到容器的 目录下,/etc/mysql/conf.d 下的配置文件即会覆盖容器内默认配置文件 /etc/mysql/my.cnf

    这种方法不够灵活,无法在创建组件时确认 Pod 会被调度在哪个节点上(数据中心通常是集群),需要组件创建完成后才能挂载配置文件,然后重启组件使其生效。

    • 第二种

    在容器启动时 docker run 命令中传入相关参数, 比如通过 character-set-servercollation-server 两个参数修改默认的编码和校对规则:

    这种方法同样不够灵活,如果设置的参数非常多,那么这个 docker run 命令将会非常的长。

    Rainbond 结合 k8s 的 ConfigMap 实现的配置文件,这种方法灵活性比较高, 可以 动态渲染环境变量,还可以共享给其它组件使用,以下演示 Rainbond 的配置文件挂载以及共享配置文件方法。

    1. 拥有一份 MariaDB的配置文件。

    在这个配置文件中使用了 动态渲染配置文件解析环境变量,设置了 , CHARACTER_SET_SERVERDEFAULT_STORAGE_ENGINE 等可以解析环境变量的变量,并给它们设置了默认值,如果组件中存在指定的环境变量,那么 Rainbond 会将该环境变量的值解析到配置文件中;如果组件中不存在该环境变量,那么 Rainbond 会将默认值解析到配置文件中;如果指定的环境变量不存在,且没有设置默认值,那么 Rainbond 不会进行解析。

    动态渲染配置文件解析环境变量的语法:

    操作步骤

    1. 从源码创建 MariaDB 组件,创建时不要勾选构建并启动

    2.在组件管理页面 环境配置 —> 配置文件设置 中点击 添加配置文件 ,使用上述示例配置文件即可,挂载路径为 /etc/mysql/mariadb.cnf;如图所示:

    组件配置文件实践 - 图2

    3.添加环境变量

    1. 构建 MariaDB 组件,启动成功后进入容器检查 /etc/mysql/mariadb.cnf 的内容

    可以发现,Rainbond 没有找到 DEFAULT_CHARACTER_SETCHARACTER_SET_SERVER 等没有对应环境变量的变量,则使用它们对应的默认值进行了解析;找到了 DEFAULT_STORAGE_ENGINE 对应的环境变量,则使用环境变量 的值 myisam 进行解析.

    2.登录 MySQL,查看配置是否生效:

    可以看出,编码,校对规则,存储引擎 的设置都已经生效。

    前提条件

    已通过上述步骤为 MariaDB 挂载配置文件

    1. 重新创建一个MariaDB组件,
    2. 在组件管理界面 环境配置 —> 共享配置文件 —> 挂载共享配置文件 找到上面的MariaDB 配置文件并填写挂载路径,更新组件,如图所示:

    组件配置文件实践 - 图4

    效果展示

    创建完成后, 进入容器查看配置文件/etc/mysql/mariadb.cnf内容如下: