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 存储桶"。

使用以下步骤为 Red Hat Quay 虚拟构建器准备 OpenShift Container Platform。

注意
  • 此流程假设您已置备集群并运行 Quay Operator。
  • 此流程是在 OpenShift Container Platform 上设置虚拟命名空间。

流程

  1. 使用集群管理员帐户登录到 Red Hat Quay 集群。
  2. 运行以下命令,创建一个运行您的虚拟构建器(如 virtual-builders )的新项目:

    $ oc new-project virtual-builders
  3. 输入以下命令在项目中创建一个 ServiceAccount,它将用于运行构建:

    $ oc create sa -n virtual-builders quay-builder
  4. 为创建的服务帐户提供编辑权限,以便它可以运行构建:

    $ oc adm policy -n virtual-builders add-role-to-user edit system:serviceaccount:virtual-builders:quay-builder
  5. 输入以下命令授予 Quay builder anyuid scc 权限:

    $ oc adm policy -n virtual-builders add-scc-to-user anyuid -z quay-builder
    注意

    此操作需要集群管理员特权。这是必要的,因为构建器必须以 Podman 用户身份运行,才能使非特权或无根构建正常工作。

  6. 获取 Quay builder 服务帐户的令牌。

    1. 如果使用 OpenShift Container Platform 4.10 或更早的版本,请输入以下命令:

      oc sa get-token -n virtual-builders quay-builder
    2. 如果使用 OpenShift Container Platform 4.11 或更高版本,请输入以下命令:

      $ oc create token quay-builder -n virtual-builders
      注意

      当令牌过期时,您需要请求新令牌。另外,您还可以添加自定义过期。例如,指定 --duration 20160m 以保留令牌两周。

      输出示例

      eyJhbGciOiJSUzI1NiIsImtpZCI6IldfQUJkaDVmb3ltTHZ0dGZMYjhIWnYxZTQzN2dJVEJxcDJscldSdEUtYWsifQ...

  7. 输入以下命令确定构建程序路由:

    $ 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
    ...

  8. 输入以下命令使用 .crt 扩展生成自签名 SSL/TlS 证书:

    $ oc extract cm/kube-root-ca.crt -n openshift-apiserver

    输出示例

    ca.crt

  9. 输入以下命令将 ca.crt 文件重命名为 extra_ca_cert_build_cluster.crt

    $ mv ca.crt extra_ca_cert_build_cluster.crt
  10. 控制台中找到配置捆绑包的 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: 3600 
    2
    
        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: 300m 
    8
    
            CONTAINER_CPU_LIMITS: 1G 
    9
    
            CONTAINER_MEMORY_REQUEST: 300m 
    10
    
            CONTAINER_CPU_REQUEST: 1G 
    11
    
            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"

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部