第 13 章 使用 RHEL 系统角色管理容器
使用 podman
RHEL 系统角色,您可以管理 Podman 配置、容器以及运行 Podman 容器的 systemd
服务。
13.1. 使用 podman RHEL 系统角色创建带有绑定挂载的无根容器 复制链接链接已复制到粘贴板!
您可以使用 podman
RHEL 系统角色,通过运行 Ansible playbook 来创建带有绑定挂载的无根容器,并管理应用程序配置。
示例 Ansible playbook 启动两个 Kubernetes pod:一个用于数据库,另一个用于 web 应用。数据库 pod 配置在 playbook 中指定,而 Web 应用 Pod 在一个外部 YAML 文件中定义。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。 -
用户和组
webapp
存在,且必须列在主机上的/etc/subuid
和/etc/subgid
文件中。 -
必须已创建名为
dbuser
和名为dbgroup
的组。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
run_as_user
和run_as_group
- 指定容器是无根的。
kube_file_content
包含一个定义名为
db
的第一个容器的 Kubernetes YAML 文件。您可以使用podman kube generate
命令生成 Kubernetes YAML 文件。-
db
容器是基于quay.io/db/db:stable
容器镜像。 -
db
绑定挂载将主机上的/var/lib/db
目录映射到容器中的/var/lib/db
目录。Z
标志使用私有的 unshared 标签标记内容,因此只有db
容器才能访问内容。
-
kube_file_src: <path>
-
定义第二个容器。控制器节点上
/path/to/webapp.yml
文件的内容将复制到受管节点上的kube_file
字段中。 volumes: <list>
-
一个定义要在一个或多个容器中提供数据源的 YAML 列表。例如,主机上的本地磁盘(
hostPath
)或其他磁盘设备。 volumeMounts: <list>
- 一个定义目标的 YAML 列表,其中单个容器将挂载一个给定卷。
podman_create_host_directories: true
-
在主机上创建目录。这指示角色检查
hostPath
卷的 kube 规格,并在主机上创建这些目录。如果您需要对所有权和权限有更多的控制,请使用podman_host_directories
。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.podman/README.md
文件。验证 playbook 语法:
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow