13.3.2. 使用 OpenShift Container Platform for Red Hat Quay builders
构建器需要 SSL/TLS 证书。有关 SSL/TLS 证书的更多信息,请参阅 向 Red Hat Quay 容器添加 TLS 证书。
如果使用 Amazon Web Service (AWS) S3 存储,您必须在运行构建器前修改 AWS 控制台中的存储桶。如需所需参数,请参阅以下部分"修改 AWS S3 存储桶"。
13.3.2.1. 为虚拟构建器准备 OpenShift Container Platform 复制链接链接已复制到粘贴板!
使用以下步骤为 Red Hat Quay 虚拟构建器准备 OpenShift Container Platform。
- 此流程假设您已置备集群并运行 Quay Operator。
- 此流程是在 OpenShift Container Platform 上设置虚拟命名空间。
流程
- 使用集群管理员帐户登录到 Red Hat Quay 集群。
运行以下命令,创建一个运行您的虚拟构建器(如
virtual-builders)的新项目:$ oc new-project virtual-builders输入以下命令在项目中创建一个
ServiceAccount,它将用于运行构建:$ oc create sa -n virtual-builders quay-builder为创建的服务帐户提供编辑权限,以便它可以运行构建:
$ oc adm policy -n virtual-builders add-role-to-user edit system:serviceaccount:virtual-builders:quay-builder输入以下命令授予 Quay builder
anyuid scc权限:$ oc adm policy -n virtual-builders add-scc-to-user anyuid -z quay-builder注意此操作需要集群管理员特权。这是必要的,因为构建器必须以 Podman 用户身份运行,才能使非特权或无根构建正常工作。
获取 Quay builder 服务帐户的令牌。
如果使用 OpenShift Container Platform 4.10 或更早的版本,请输入以下命令:
oc sa get-token -n virtual-builders quay-builder如果使用 OpenShift Container Platform 4.11 或更高版本,请输入以下命令:
$ oc create token quay-builder -n virtual-builders注意当令牌过期时,您需要请求新令牌。另外,您还可以添加自定义过期。例如,指定
--duration 20160m以保留令牌两周。输出示例
eyJhbGciOiJSUzI1NiIsImtpZCI6IldfQUJkaDVmb3ltTHZ0dGZMYjhIWnYxZTQzN2dJVEJxcDJscldSdEUtYWsifQ...
输入以下命令确定构建程序路由:
$ oc get route -n quay-enterprise输出示例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ... example-registry-quay-builder example-registry-quay-builder-quay-enterprise.apps.docs.quayteam.org example-registry-quay-app grpc edge/Redirect None ...输入以下命令使用 .crt 扩展生成自签名 SSL/TlS 证书:
$ oc extract cm/kube-root-ca.crt -n openshift-apiserver输出示例
ca.crt输入以下命令将
ca.crt文件重命名为extra_ca_cert_build_cluster.crt:$ mv ca.crt extra_ca_cert_build_cluster.crt在控制台中找到配置捆绑包的 secret,然后选择 Actions
Edit Secret 并添加适当的构建程序配置: FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - <superusername> FEATURE_USER_CREATION: false FEATURE_QUOTA_MANAGEMENT: true FEATURE_BUILD_SUPPORT: True BUILDMAN_HOSTNAME: <sample_build_route>1 BUILD_MANAGER: - ephemeral - ALLOWED_WORKER_COUNT: 1 ORCHESTRATOR_PREFIX: buildman/production/ JOB_REGISTRATION_TIMEOUT: 36002 ORCHESTRATOR: REDIS_HOST: <sample_redis_hostname>3 REDIS_PASSWORD: "" REDIS_SSL: false REDIS_SKIP_KEYSPACE_EVENT_SETUP: false EXECUTORS: - EXECUTOR: kubernetesPodman NAME: openshift BUILDER_NAMESPACE: <sample_builder_namespace>4 SETUP_TIME: 180 MINIMUM_RETRY_THRESHOLD: 0 BUILDER_CONTAINER_IMAGE: <sample_builder_container_image>5 # Kubernetes resource options K8S_API_SERVER: <sample_k8s_api_server>6 K8S_API_TLS_CA: <sample_crt_file>7 VOLUME_SIZE: 8G KUBERNETES_DISTRIBUTION: openshift CONTAINER_MEMORY_LIMITS: 300m8 CONTAINER_CPU_LIMITS: 1G9 CONTAINER_MEMORY_REQUEST: 300m10 CONTAINER_CPU_REQUEST: 1G11 NODE_SELECTOR_LABEL_KEY: "" NODE_SELECTOR_LABEL_VALUE: "" SERVICE_ACCOUNT_NAME: <sample_service_account_name> SERVICE_ACCOUNT_TOKEN: <sample_account_token>12 - 1
- 构建路由通过运行
oc get route -n及 OpenShift Operator 的命名空间的名称来获取。路由末尾必须提供一个端口,它应使用以下格式:[quayregistry-cr-name]-quay-builder-[ocp-namespace].[ocp-domain-name]:443。 - 2
- 如果设置了
JOB_REGISTRATION_TIMEOUT参数,您可能会收到以下错误:failed to register job to build manager: rpc error: code = Unauthenticated desc = Invalid build token: Signature has expired.建议将此参数设置为至少 240。 - 3
- 如果您的 Redis 主机有密码或 SSL/TLS 证书,您必须相应地更新。
- 4
- 设置,以匹配虚拟构建器命名空间的名称,如
virtual-builders。 - 5
- 对于早期访问,
BUILDER_CONTAINER_IMAGE目前是quay.io/projectquay/quay-builder:3.7.0-rc.2。请注意,这可能会在早期访问窗口中更改。如果出现这种情况,则会警告客户。 - 6
K8S_API_SERVER通过运行oc cluster-info获取。- 7
- 您必须手动创建并添加自定义 CA 证书,例如
K8S_API_TLS_CA: /conf/stack/extra_ca_certs/build_cluster.crt。 - 8
- 如果未指定,则默认为
5120Mi。 - 9
- 对于虚拟构建,您必须确保集群中有足够的资源。如果未指定,则默认为
1000m。 - 10
- 如果未指定,则默认为
3968Mi。 - 11
- 如果未指定,则默认为
500m。 - 12
- 在运行
oc create sa时获得。配置示例
FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false FEATURE_QUOTA_MANAGEMENT: true FEATURE_BUILD_SUPPORT: True BUILDMAN_HOSTNAME: example-registry-quay-builder-quay-enterprise.apps.docs.quayteam.org:443 BUILD_MANAGER: - ephemeral - ALLOWED_WORKER_COUNT: 1 ORCHESTRATOR_PREFIX: buildman/production/ JOB_REGISTRATION_TIMEOUT: 3600 ORCHESTRATOR: REDIS_HOST: example-registry-quay-redis REDIS_PASSWORD: "" REDIS_SSL: false REDIS_SKIP_KEYSPACE_EVENT_SETUP: false EXECUTORS: - EXECUTOR: kubernetesPodman NAME: openshift BUILDER_NAMESPACE: virtual-builders SETUP_TIME: 180 MINIMUM_RETRY_THRESHOLD: 0 BUILDER_CONTAINER_IMAGE: quay.io/projectquay/quay-builder:3.7.0-rc.2 # Kubernetes resource options K8S_API_SERVER: api.docs.quayteam.org:6443 K8S_API_TLS_CA: /conf/stack/extra_ca_certs/build_cluster.crt VOLUME_SIZE: 8G KUBERNETES_DISTRIBUTION: openshift CONTAINER_MEMORY_LIMITS: 1G CONTAINER_CPU_LIMITS: 1080m CONTAINER_MEMORY_REQUEST: 1G CONTAINER_CPU_REQUEST: 580m NODE_SELECTOR_LABEL_KEY: "" NODE_SELECTOR_LABEL_VALUE: "" SERVICE_ACCOUNT_NAME: quay-builder SERVICE_ACCOUNT_TOKEN: "eyJhbGciOiJSUzI1NiIsImtpZCI6IldfQUJkaDVmb3ltTHZ0dGZMYjhIWnYxZTQzN2dJVEJxcDJscldSdEUtYWsifQ"