第 11 章 使用构建 worker 自动构建 Dockerfile
Red Hat Quay 支持使用 OpenShift Container Platform 或 Kubernetes 上的一组 worker 节点构建 Dockerfile。构建触发器(如 GitHub Webhook)可以配置为在提交新代码时自动构建存储库的新版本。
本文档演示了如何使用 Red Hat Quay 安装启用构建,并设置多个 OpenShift Container Platform 或 Kubernetes 集群来接受来自 Red Hat Quay 的构建。
在 OpenShift Container Platform 中使用 Red Hat Quay Builder 之前,您必须预先配置 Red Hat Quay Builder。
11.1.1. 配置 OpenShift Container Platform TLS 组件 复制链接链接已复制到粘贴板!
tls 组件允许您控制 TLS 配置。
当 TLS 组件由 Red Hat Quay Operator 管理时,Red Hat Quay 不支持 Builder。
如果将 tls 设置为 unmanaged,则提供自己的 ssl.cert 和 ssl.key 文件。在本实例中,如果您希望集群支持构建器,您必须将 Quay 路由和 Builder 路由名称添加到证书中的 SAN 列表中,也可以使用通配符。
要添加 builder 路由,请使用以下格式:
[quayregistry-cr-name]-quay-builder-[ocp-namespace].[ocp-domain-name]
[quayregistry-cr-name]-quay-builder-[ocp-namespace].[ocp-domain-name]
使用以下步骤为 OpenShift Container Platform 准备 Red Hat Quay Builders。
先决条件
- 您已配置了 OpenShift Container Platform TLS 组件。
流程
输入以下命令创建一个运行构建的项目,如
builder:oc new-project builder
$ oc new-project builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令在
builder命名空间中创建新ServiceAccount:oc create sa -n builder quay-builder
$ oc create sa -n builder quay-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令在
构建器命名空间中授予用户edit角色:oc policy add-role-to-user -n builder edit system:serviceaccount:builder:quay-builder
$ oc policy add-role-to-user -n builder edit system:serviceaccount:builder:quay-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令检索与构建器命名空间中的
quay-服务帐户关联的令牌。此令牌用于对 OpenShift Container Platform 集群的 API 服务器进行身份验证并与之交互。builderoc sa get-token -n builder quay-builder
$ oc sa get-token -n builder quay-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 识别 OpenShift Container Platform 集群的 API 服务器的 URL。这可在 OpenShift Container Platform Web 控制台中找到。
识别调度构建作业时使用的 worker
节点标签。由于构建 pod 需要在裸机 worker 节点上运行,因此通常使用特定标签来标识这些 pod。使用集群管理员检查,确定应该使用哪个节点标签。
可选。如果集群使用自签名证书,您必须获取 Kube API 服务器的证书颁发机构(CA),才能添加到 Red Hat Quay 的额外证书。
输入以下命令获取包含 CA 的 secret 名称:
oc get sa openshift-apiserver-sa --namespace=openshift-apiserver -o json | jq '.secrets[] | select(.name | contains("openshift-apiserver-sa-token"))'.name$ oc get sa openshift-apiserver-sa --namespace=openshift-apiserver -o json | jq '.secrets[] | select(.name | contains("openshift-apiserver-sa-token"))'.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
从 OpenShift Container Platform Web 控制台中的 secret 获取
ca.crt键值。该值以 "-----BEGIN CERTIFICATE-----"' 开头。 -
将 CA 导入到 Red Hat Quay。确保此文件的名称与
K8S_API_TLS_CA匹配。
为
ServiceAccount创建以下SecurityContextConstraints资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.1.3. 配置 Red Hat Quay Builder 复制链接链接已复制到粘贴板!
使用以下步骤启用 Red Hat Quay Builder。
流程
确保您的 Red Hat Quay
config.yaml文件启用了构建,例如:FEATURE_BUILD_SUPPORT: True
FEATURE_BUILD_SUPPORT: TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的 Red Hat Quay
config.yaml文件中添加以下信息,将每个值替换为与您特定安装相关的信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关每个配置字段的更多信息,请参阅