第 6 章 自动使用构建 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 Builders。
6.1.1. 配置 OpenShift Container Platform TLS 组件 复制链接链接已复制到粘贴板!
tls
组件允许您控制 TLS 配置。
当 TLS 组件由 Red Hat Quay Operator 管理时,Red Hat Quay 不支持 Builder。
如果将 tls
设置为 unmanaged
,则提供自己的 ssl.cert
和 ssl.key
文件。在本实例中,如果希望集群支持 Builder,您必须将 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 组件。
步骤
输入以下命令来创建运行 Builds 的项目,如
builder
:oc new-project builder
$ oc new-project builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令在
构建器
命名空间中创建一个新的ServiceAccount
:oc create sa -n builder quay-builder
$ oc create sa -n builder quay-builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令在
builder
命名空间中授予用户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-builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来检索与
builder
命名空间中quay-builder
服务帐户关联的令牌。此令牌用于身份验证并与 OpenShift Container Platform 集群的 API 服务器交互。oc sa get-token -n builder quay-builder
$ oc sa get-token -n builder quay-builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 识别 OpenShift Container Platform 集群的 API 服务器的 URL。这可以在 OpenShift Container Platform Web 控制台中找到。
识别调度构建作业时要使用的 worker
节点标签
。因为构建 pod 需要在裸机 worker 节点上运行,所以通常它们使用特定的标签标识。使用集群管理员进行检查,以确定应使用哪些节点标签。
可选。如果集群使用自签名证书,则必须获取 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"))'.name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
从 OpenShift Container Platform Web 控制台中的 secret 获取
ca.crt
键值。该值以 "-----BEGIN CERTIFICATE-----"' 开头。 -
使用 Config Tool 在 Red Hat Quay 中导入 CA。确保此文件的名称与
K8S_API_TLS_CA
匹配。
为
ServiceAccount
创建以下SecurityContextConstraints
资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.3. 配置 Red Hat Quay Builders 复制链接链接已复制到粘贴板!
使用以下步骤启用 Red Hat Quay Builders。
步骤
确保您的 Red Hat Quay
config.yaml
文件启用了 Builds,例如:FEATURE_BUILD_SUPPORT: True
FEATURE_BUILD_SUPPORT: True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Red Hat Quay
config.yaml
文件中添加以下信息,将每个值替换为与您的特定安装相关的信息:注意目前,Red Hat Quay Config Tool 只能启用构建功能。Build Manager 和 Executors 的配置必须在
config.yaml
文件中手动完成。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关每个配置字段的更多信息,请参阅