4.2. 在 OpenShift Container Platform 上为 Red Hat Quay 配置虚拟构建


要使用 {product-title} 为 Red Hat Quay 配置虚拟构建,您可以创建一个构建项目、配置服务帐户并更新您的配置文件。

注意
  • 如果使用 Amazon Web Service (AWS) S3 存储,则必须在运行构建器前在 AWS 控制台中修改存储桶。有关所需参数,请参阅以下部分"修改 AWS S3 存储桶"。
  • 如果使用 Google Cloud Platform (GCP)对象存储桶,您必须配置跨原始资源共享(CORS)以启用 虚拟构建

先决条件

  • 您已在运行 Red Hat Quay Operator 时置备了 OpenShift Container Platform 集群。
  • 您已将 tls 组件设置为 非受管 组件,并将自定义 SSL/TLS 证书上传到 Red Hat Quay Operator。如需更多信息,请参阅 Red Hat Quay 的 SSL 和 TLS
  • 您已为构建配置了 OpenShift Container Platform TLS 组件。
  • 以集群管理员身份登录 OpenShift Container Platform。

流程

  1. 运行以下命令,创建一个运行虚拟构建器的新项目,如 virtual-builders

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

    $ oc create sa -n virtual-builders quay-builder

    输出示例

    serviceaccount/quay-builder created

  3. 为创建的服务帐户提供编辑权限,使其可以 运行构建

    $ oc adm policy -n virtual-builders add-role-to-user edit system:serviceaccount:virtual-builders:quay-builder

    输出示例

    clusterrole.rbac.authorization.k8s.io/edit added: "system:serviceaccount:virtual-builders:quay-builder"

  4. 输入以下命令,授予 构建器 worker anyuid scc 权限。这要求集群管理员特权,因为 构建器 必须以 Podman 用户身份运行,才能使非特权或无根构建正常工作。

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

    输出示例

    clusterrole.rbac.authorization.k8s.io/system:openshift:scc:anyuid added: "quay-builder"

  5. 输入以下命令来获取 builder 服务帐户的令牌:

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

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

    输出示例

    eyJhbGciOiJSUzI1NiIsImtpZCI6IldfQUJkaDVmb3ltTHZ0dGZMYjhIWnYxZTQzN2dJVEJxcDJscldSdEUtYWsifQ...

  6. 输入以下命令确定 构建器 路由:

    $ oc get route -n quay-enterprise

    输出示例

    NAME: example-registry-quay-builder
    HOST/PORT: example-registry-quay-builder-quay-enterprise.apps.stevsmit-cluster-new.gcp.quaydev.org
    PATH:
    SERVICES: example-registry-quay-app
    PORT: grpc
    TERMINATION: passthrough/Redirect
    WILDCARD: None

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

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

    输出示例

    ca.crt

  8. 输入以下命令将 ca.crt 文件重命名为 build-cluster.crt

    $ mv ca.crt build-cluster.crt
  9. 使用 OpenShift Container Platform Web 控制台更新 OpenShift Container Platform 部署上的 Red Hat Quay 的 config.yaml 文件,使其包含适当的 虚拟 构建配置。

    1. Operators Installed Operators Red Hat Quay Quay Registry
    2. 点 registry 的名称,如 example-registry
    3. Config Bundle Secret 下,单击配置捆绑包的名称,如 extra-ca-certificate-config-bundle-secret
    4. Actions Edit Secret
    5. 使用以下内容 添加适当的虚拟 构建配置作为参考:

      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>
      BUILD_MANAGER:
        - ephemeral
        - ALLOWED_WORKER_COUNT: 1
          ORCHESTRATOR_PREFIX: buildman/production/
          JOB_REGISTRATION_TIMEOUT: 3600
          ORCHESTRATOR:
            REDIS_HOST: <sample_redis_hostname>
            REDIS_PASSWORD: ""
            REDIS_SSL: false
            REDIS_SKIP_KEYSPACE_EVENT_SETUP: false
          EXECUTORS:
            - EXECUTOR: kubernetesPodman
              NAME: openshift
              BUILDER_NAMESPACE: <sample_builder_namespace>
              SETUP_TIME: 180
              MINIMUM_RETRY_THRESHOLD: 0
              BUILDER_CONTAINER_IMAGE: quay.io/projectquay/quay-builder:{producty}
              # Kubernetes resource options
              K8S_API_SERVER: <sample_k8s_api_server>
              K8S_API_TLS_CA: <sample_crt_file>
              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: <sample_service_account_name>
              SERVICE_ACCOUNT_TOKEN: <sample_account_token>
              HTTP_PROXY: <http://10.0.0.1:80>
              HTTPS_PROXY: <http://10.0.0.1:80>
              NO_PROXY: <hostname.example.com>

      其中:

      BUILDMAN_HOSTNAME:: 指定 Red Hat Quay registry 的主机名。运行以下命令 :$ oc get route quayregistry-quay-builder -n ${QUAY_PROJECT} -o jsonpath='{.spec.host}'.

      REDIS_HOST:: 指定 Redis 服务的主机名。

      BUILDER_NAMESPACE:: 指定 裸机构建 命名空间的名称。本例使用 bare-metal-builder

      K8S_API_SERVER:: 通过运行 $ oc cluster-info 来指定 K8S_API_SERVER 获取。

      K8S_API_TLS_CA:: 指定自定义 CA 证书的名称,例如 K8S_API_TLS_CA: /conf/stack/extra_ca_certs/build-cluster.crt

      CONTAINER_MEMORY_LIMITS:: 指定容器的内存限值。如果未指定,则默认为 5120Mi

      CONTAINER_CPU_LIMITS:: 指定容器的 CPU 限值。如果未指定,则默认为 1000m

      CONTAINER_MEMORY_REQUEST:: 指定容器的内存请求。如果未指定,则默认为 3968Mi

      CONTAINER_CPU_REQUEST:: 指定容器的 CPU 请求。如果未指定,则默认为 500m

      service_account_TOKEN:: 指定服务帐户的令牌。运行 $ oc create sa 来获得此目的。

      SSH_AUTHORIZED_KEYS:: 指定构建环境的 SSH 授权密钥。此密钥或密钥应当与管理员或开发人员用来 SSH 到构建工作程序的私钥对应,用于调试目的。此密钥可以通过使用特定的 SSH 密钥和端口建立与远程主机的 SSH 连接来获取。例如 :$ ssh -i /path/to/ssh/key/set/in/ssh_authorized_keys -p 9999 core@localhost.

      虚拟构建配置 示例

      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:{producty}
              # 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: "eyJhbGciOiJSUzI1NiIsImtpZCI6IldfQUJkaDVmb3ltTHZ0dGZMYjhIWnYxZTQzN2dJVEJxcDJscldSdEUtYWsifQ"
              HTTP_PROXY: <http://10.0.0.1:80>
              HTTPS_PROXY: <http://10.0.0.1:80>
              NO_PROXY: <hostname.example.com>

    6. Edit Secret 页面上点 Save
  10. 使用新配置重启 OpenShift Container Platform registry 上的 Red Hat Quay。

4.2.1. 修改 AWS S3 存储桶

要在 {product-title} 中使用 AWS S3 存储启用构建,您可以在 S3 存储桶中配置跨原始资源共享(CORS)设置。这允许构建 worker 访问和存储 S3 存储桶中的构建工件。

流程

  1. 登录到位于 s3.console.aws.com 的 AWS 控制台。
  2. 在搜索栏中,搜索 S3,然后单击 S3
  3. 单击存储桶的名称,如 myawsbucket
  4. 单击权限选项卡。
  5. Cross-origin 资源共享(CORS) 下,包括以下参数:

      [
          {
              "AllowedHeaders": [
                  "Authorization"
              ],
              "AllowedMethods": [
                  "GET"
              ],
              "AllowedOrigins": [
                  "*"
              ],
              "ExposeHeaders": [],
              "MaxAgeSeconds": 3000
          },
          {
              "AllowedHeaders": [
                  "Content-Type",
                  "x-amz-acl",
                  "origin"
              ],
              "AllowedMethods": [
                  "PUT"
              ],
              "AllowedOrigins": [
                  "*"
              ],
              "ExposeHeaders": [],
              "MaxAgeSeconds": 3000
          }
      ]
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部