6.5. OpenShift 路由限制
本节只有在 OpenShift 中使用带有受管 路由
组件的 Quay Operator 时才适用。
由于 OpenShift 路由
的限制只能为单个端口提供流量,需要额外的步骤来设置构建。确保 kubectl
或 oc
CLI 工具被配置为与安装 Quay Operator 的集群以及您的 QuayRegistry
存在的集群一起使用(不一定与运行构建器的裸机集群相同)。
- 按照以下步骤,确保 OpenShift 集群上启用了 HTTP/2 ingress。
Quay Operator 将创建一个路由,它将 gRPC 流量定向到在现有 Quay pod 内运行的构建管理器服务器。
如果要使用自定义主机名(如
builder.registry.example.com
),请确保创建一个带有 DNS 供应商的 CNAME 记录,指向所创建路由的status.ingress[0].host
:$ kubectl get -n <namespace> route <quayregistry-name>-quay-builder -o jsonpath={.status.ingress[0].host}
通过 OpenShift UI 或 CLI,使用构建集群 CA 证书(密钥
extra_ca_cert_build_cluster.cert
)更新QuayRegistry
的spec.configBundleSecret
引用的Secret
, 使用上面的构建程序配置(取决于您的构建 executor))中引用的正确的值以及BUILDMAN_HOSTNAME
字段更新config.yaml
条目:BUILDMAN_HOSTNAME: <build-manager-hostname> BUILD_MANAGER: - ephemeral - ALLOWED_WORKER_COUNT: 1 ORCHESTRATOR_PREFIX: buildman/production/ JOB_REGISTRATION_TIMEOUT: 600 ORCHESTRATOR: REDIS_HOST: quay-redis-host REDIS_PASSWORD: quay-redis-password REDIS_SSL: true REDIS_SKIP_KEYSPACE_EVENT_SETUP: false EXECUTORS: - EXECUTOR: kubernetes BUILDER_NAMESPACE: builder ...
下面解释了额外的配置字段:
- BUILDMAN_HOSTNAME
-
构建任务用来与构建管理器通信的外部可访问服务器主机名。默认与
SERVER_HOSTNAME
相同。对于 OpenShiftRoute
,如果使用自定义主机名,它是status.ingress[0].host
或 CNAME 条目。BUILDMAN_HOSTNAME
需要包含 端口号,如 Openshift Route 的somehost:443
,因为用于与构建管理器通信的 gRPC 客户端不会推断任何端口(如果省略)。