16.3.2. 使用 OpenShift Container Platform for Red Hat Quay 构建器
构建器需要 SSL/TLS 证书。有关 SSL/TLS 证书的更多信息,请参阅使用 SSL/TLS 证书的概念验证部署。
如果使用 Amazon Web Service (AWS) S3 存储,则必须在运行构建器前在 AWS 控制台中修改存储桶。有关所需参数,请参阅以下部分"修改 AWS S3 存储桶"。
16.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注意当令牌过期时,您需要请求新令牌。另外,您还可以添加自定义过期。例如,使用
specify-duration 20160m来保留令牌两周。输出示例
<example_token>
输入以下命令确定构建器路由:
$ 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: 1G8 CONTAINER_CPU_LIMITS: 300m9 CONTAINER_MEMORY_REQUEST: 1G10 CONTAINER_CPU_REQUEST: 300m11 NODE_SELECTOR_LABEL_KEY: "" NODE_SELECTOR_LABEL_VALUE: "" SERVICE_ACCOUNT_NAME: <sample_service_account_name> SERVICE_ACCOUNT_TOKEN: <sample_account_token>12 HTTP_PROXY: <http://10.0.0.1:80> HTTPS_PROXY: <http://10.0.0.1:80> NO_PROXY: <hostname.example.com>- 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: 300m CONTAINER_MEMORY_REQUEST: 1G CONTAINER_CPU_REQUEST: 300m NODE_SELECTOR_LABEL_KEY: "" NODE_SELECTOR_LABEL_VALUE: "" SERVICE_ACCOUNT_NAME: quay-builder SERVICE_ACCOUNT_TOKEN: "<example_token>" HTTP_PROXY: <http://10.0.0.1:80> HTTPS_PROXY: <http://10.0.0.1:80> NO_PROXY: <hostname.example.com>