Kolla Images API¶
Kolla 提供了两种不同的方法来在运行时修改容器。第一种是通过暴露给容器的 配置文件,并由初始化脚本处理;第二种是通过更传统的 环境变量。
外部配置¶
所有的 Kolla 镜像都理解一个 JSON 格式的配置,它描述了一组容器在执行(可能)长时间运行的进程之前需要执行的操作。 此配置还指定了运行服务要执行的命令。
当容器运行 kolla_start,默认的入口点时,它会使用 kolla_set_configs 以提升的权限处理配置文件,这意味着它能够设置文件所有权和权限。
配置文件的格式¶
kolla_set_configs 脚本理解以下属性
command (必需): 容器在完成初始化步骤后运行的命令。
config_files: 将文件和目录复制到容器内部。 字典列表,每个字典包含以下属性
source (必需): 需要复制的文件或目录的路径。 理解 shell 通配符。
dest (必需): 文件或目录将被复制到的路径。 不需要存在,如果目标存在则会被删除。
owner (必需,除非
preserve_properties设置为 true): 要更改所有权的用户:组。user与user:user同义。 必须是用户名和组名,而不是 uid/gid。perm (必需,除非 preserve_properties 设置为 true): 要设置为目标文件和目录的 unix 权限。 必须以数字八进制形式传递。
preserve_properties: 复制原始文件和目录的所有权和权限。 布尔值,默认为
false。optional: 如果文件系统上不存在源文件,则不引发错误。 布尔值,默认为
false。merge: 将源目录合并到目标目录,而不是替换它。 布尔值,默认为
false。
permissions: 更改容器内文件或目录的权限和/或所有权。 字典列表,每个字典包含以下属性
path (必需): 要更新的文件或目录的路径。
owner (必需): 要更改所有权的用户:组。
user与user:user同义。 必须是用户名和组名,而不是 uid/gid。perm: 要设置为目标文件和目录的 unix 权限。 必须以数字八进制形式传递。
recurse: 是否递归地将更改应用于目标目录。 布尔值,默认为
false。exclude: 当
recurse设置为true时要排除的目录或文件名称的数组。 支持 Python 正则表达式。 默认为空数组。
这是一个示例配置文件
{
"command": "trove-api --config-file=/etc/trove/trove.conf",
"config_files": [
{
"source": "/var/lib/kolla/config_files/trove.conf",
"dest": "/etc/trove/trove.conf",
"owner": "trove",
"perm": "0600",
"optional": false
}
],
"permissions": [
{
"path": "/var/log/kolla/trove",
"owner": "trove:trove",
"recurse": true,
"exclude": ["/var/log/^snapshot.*"]
}
]
}
将配置文件传递给容器¶
可以通过专用路径将配置传递给容器:/var/lib/kolla/config_files/config.json。 建议出于安全原因将此路径挂载为只读。
在容器中挂载配置文件
docker run -e KOLLA_CONFIG_STRATEGY=COPY_ALWAYS \
-v /path/to/config.json:/var/lib/kolla/config_files/config.json:ro \
kolla-image
环境变量¶
要传递给容器的变量¶
Kolla 容器还理解一些环境变量,以更改其在运行时时的行为
KOLLA_CONFIG_STRATEGY (必需): 定义 kolla_start 脚本 如何复制配置文件。 必须是以下之一
COPY_ONCE: 配置文件只复制一次,即容器第一次启动时。 在这种情况下,容器是完全不可变的。
COPY_ALWAYS: 配置文件每次容器启动时都会复制。 如果主机上的配置文件发生更改,则更改将在下次容器重新启动时应用。
KOLLA_SKIP_EXTEND_START: 如果设置,则绕过
extend_start.sh脚本。 默认情况下未设置。KOLLA_SERVICE_NAME: 如果设置,则在容器内的
PS1中显示变量的值。 默认情况下未设置。KOLLA_BOOTSTRAP: 如果设置,并且镜像支持,则运行镜像
extend_start.sh脚本中定义的 bootstrap 代码。 默认情况下未设置。KOLLA_UPGRADE: 如果设置,并且镜像支持,则运行镜像
extend_start.sh脚本中定义的升级代码。 默认情况下未设置。KOLLA_UPGRADE_CHECK: 如果设置,并且镜像支持,则运行
<service>-status upgrade check命令,该命令在镜像的extend_start.sh脚本中定义。 当前,它被硬编码为仅nova-status upgrade check。 默认情况下未设置。KOLLA_OSM: 如果设置,并且镜像支持,则运行镜像
extend_start.sh脚本中定义的在线数据库迁移代码。 默认情况下未设置。
容器可能会公开其他环境变量以启用或禁用功能,例如 horizon 容器,它查找 ENABLE_XXX 变量,其中 XXX 是 horizon 插件名称。 这些通常在特定于容器的 extend_start.sh 脚本中定义,例如 horizon。
容器中可用的变量¶
以下变量在所有镜像中可用,并且可以在脚本中评估
KOLLA_BASE_DISTRO: 用于构建镜像的
base_distro(例如 centos、ubuntu)