13.2. 在 RHEL 的镜像模式下注入 secret
RHEL 的镜像模式没有用于 secret 的固执己见的机制。但是,在某些情况下,您可以在系统中注入容器 pull secret。例如:
要使
bootc
从需要身份验证的注册中心获取更新,您必须在文件中包含一个 pull secret。在以下示例中,creds
secret 包含注册中心 pull secret。FROM registry.redhat.io/rhel10/bootc-image-builder:latest COPY containers-auth.conf /usr/lib/tmpfiles.d/link-podman-credentials.conf RUN --mount=type=secret,id=creds,required=true cp /run/secrets/creds /usr/lib/container-auth.json && \ chmod 0600 /usr/lib/container-auth.json && \ ln -sr /usr/lib/container-auth.json /etc/ostree/auth.json
FROM registry.redhat.io/rhel10/bootc-image-builder:latest COPY containers-auth.conf /usr/lib/tmpfiles.d/link-podman-credentials.conf RUN --mount=type=secret,id=creds,required=true cp /run/secrets/creds /usr/lib/container-auth.json && \ chmod 0600 /usr/lib/container-auth.json && \ ln -sr /usr/lib/container-auth.json /etc/ostree/auth.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要构建它,请运行
podman build --secret id=creds,src=$HOME/.docker/config.json
。使单个 pull secret 用于bootc
和 Podman,方法是使用到容器镜像中嵌入的通用持久文件的两个位置的符号链接,如/usr/lib/container-auth.json
。要让 Podman 获取容器镜像,请在
/etc/containers/auth.json
种包含一个 pull secret。使用这个配置,两个堆栈共享/usr/lib/container-auth.json
文件。- 通过将它们嵌入到容器构建中来注入 secret
- 如果注册中心服务器被适当保护,则您可以在容器镜像中包含 secret。在某些情况下,仅将 bootstrap secret 嵌入到容器镜像中是一种可行的模式,特别是在与让机器认证到集群的机制一起使用时。在此模式中,作为主机系统的一部分或容器镜像运行的置备工具使用 bootstrap secret 注入或更新其他 secret,如 SSH 密钥、证书等。
- 使用云元数据注入 secret
-
大多数生产基础设施即服务(IaaS)系统支持元数据服务器或等同的服务器,其可以安全地保护主机 secret,特别是 bootstrap secret。容器镜像可以包含
cloud-init
或ignition
等工具来获取这些 secret。 - 通过在磁盘镜像中嵌入 secret 来注入它们
-
您只能在磁盘镜像中嵌入
bootstrap secret
。例如,当您从一个输入容器镜像(如 AMI 或 OpenStack)生成一个云磁盘镜像时,磁盘镜像可以包含是有效的机器本地状态的 secret。轮转它们需要额外的管理工具或刷新磁盘镜像。 - 使用裸机安装程序注入 secret
- 安装程序工具通常支持通过 secret 注入配置。
- 通过
systemd
凭证注入 secret -
systemd
项目有一个凭证概念,来确保获取凭证数据,并将其传递给系统和服务,这适用于某些部署方法。详情请查看 systemd 凭证 文档。