6.2. 通过定义自定义 SA 和 SCC,以非 root 用户身份运行 Buildah
要以非 root 用户身份使用 Buildah 运行容器镜像的构建,可以执行以下步骤:
- 定义自定义服务帐户 (SA) 和安全性上下文约束 (SCC)。
- 
						配置 Buildah,以使用 ID 为 1000的build用户。
- 使用自定义配置映射启动任务运行,或将其与管道运行集成。
6.2.1. 配置自定义服务帐户和安全上下文约束
					默认 pipeline SA 允许使用命名空间范围之外的用户 ID。要减少对默认 SA 的依赖性,您可以为 ID 为 1000 的 build 用户定义具有必要的集群角色和角色绑定的自定义 SA 和 SCC。
				
						目前,Buildah 需要启用 allowPrivilegeEscalation 设置,才能在容器中运行。通过这个设置,Buildah 可以在以非 root 用户身份运行时利用 SETUID 和 SETGID 功能。
					
流程
- 使用必要的集群角色和角色绑定创建自定义 SA 和 SCC。 - 示例:用户 id 为 - 1000的自定义 SA 和 SCC。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
6.2.2. 配置 Buildah 以使用 build 用户
					您可以定义一个 Buildah 任务,以使用带有用户 ID 1000 的 build 用户。
				
流程
- 创建 - openshift-pipelines命名空间中提供的- buildah任务的副本;将副本的名称更改为- buildah-as-user。- oc get task buildah -n openshift-pipelines -o yaml | yq '. |= (del .metadata |= with_entries(select(.key == "name" )))' | yq '.kind="Task"' | yq '.metadata.name="buildah-as-user"' | oc create -f - - $ oc get task buildah -n openshift-pipelines -o yaml | yq '. |= (del .metadata |= with_entries(select(.key == "name" )))' | yq '.kind="Task"' | yq '.metadata.name="buildah-as-user"' | oc create -f -- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 编辑复制的 - buildah任务。- oc edit task buildah-as-user - $ oc edit task buildah-as-user- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例:使用 - build用户修改 Buildah 任务- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
6.2.3. 使用自定义配置映射或管道运行启动任务运行
					定义自定义 Buildah 任务后,您可以创建一个 TaskRun 对象,以具有用户 ID 1000 的 build 用户身份构建镜像。另外,您还可以将 TaskRun 对象集成为 PipelineRun 对象的一部分。
				
流程
- 使用自定义 - ConfigMap和- Dockerfile对象创建一个- TaskRun对象。- 示例:以用户 ID - 1000身份运行 Buildah 的任务运行- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- (可选)创建管道和对应的管道运行。 - 示例:管道和对应的管道运行 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 启动任务运行或管道运行。