第 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。