第 6 章 使用构建 worker 自动构建 Dockerfile


Red Hat Quay 支持使用 OpenShift 或 Kubernetes 上的一组 worker 节点构建 Dockerfile。构建触发器(如 GitHub Webhook)可以配置为在新代码提交时自动构建新版本的存储库。本文档将指导您使用 Red Hat Quay 安装启用构建,并设置一个或多个 OpenShift/K8s 集群,以接受来自 Red Hat Quay 的构建。使用 Red Hat Quay 3.4 时,底层构建管理器已作为 Red Hat Quay 2 从 Python 2 迁移到 Python 3 的一部分进行了彻底重写。现在,构建程序节点会动态创建为 Kubernetes 作业与在 Red Hat Quay 3.3 及更早版本中持续运行的构建器节点。这大大简化了 Red Hat Quay 如何管理构建,并提供相同的机制 quay.io,用于每天处理数千个容器镜像构建。目前在 Red Hat Quay 3.3 下运行静态("企业"构建器的客户,则需要迁移到基于 Kubernetes 的构建机制。

6.1. 架构概述

Red Hat Quay 构建系统专为可扩展性而设计(因为它用于在 quay.io 上托管所有构建)。Red Hat Quay 的 Build Manager 组件提供了一个编配层,用于跟踪构建请求,并确保 Build Executor (OpenShift/K8s 集群)将执行每个请求。每个构建都由 Kubernetes 作业处理,它启动一个小虚拟机来完全隔离和包含镜像构建过程。这样可确保容器构建不会相互或底层构建系统的影响。可以配置多个可执行文件,以确保在基础架构失败时执行构建。Red Hat Quay 将自动将构建发送到不同的执行者(如果其检测到一个执行者有困难)。

注意

Red Hat Quay 的上游版本提供了如何配置基于 AWS/EC2 的可执行文件的说明。Red Hat Quay 客户不支持此配置。

6.1.1. 构建管理器

构建管理器负责调度的构建的生命周期。需要更新构建队列、构建阶段和运行作业状态的操作由构建管理器处理。

6.1.2. 构建 worker 的 control plane

构建作业在不同的 worker 节点上运行,并调度到单独的 control plane (executor)上。目前,Red Hat Quay 支持在 AWS 和 Kubernetes 上运行作业。使用 quay.io/quay/quay-builder 执行构建。在 AWS 上,构建调度到 EC2 实例。在 k8s 上,构建被调度为作业资源。

6.1.3. Orchestrator

编配器用于存储当前运行的构建作业的状态,并发布构建管理器要使用的事件。例如,到期事件。目前,支持的编配器后端是 Redis。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.