菜单

基础设施和编排

相关源文件

本文档介绍了用于部署和管理 Gumroad 应用程序的容器化和编排基础设施。它概述了基于 Docker 的容器化策略以及为部署管道提供支持的 HashiCorp Nomad 编排系统。

有关各个环境的详细配置,请参阅配置管理。有关利用此基础设施的完整 CI/CD 管道,请参阅CI/CD 管道

概述

Gumroad 基础设施采用容器化部署模型,使用 Docker 进行应用程序打包,使用 HashiCorp Nomad 进行容器编排。此设置可实现跨多个环境的一致部署,同时提供可扩展性和资源管理功能。

基础设施架构

下图展示了核心基础设施组件及其关系

来源:.buildkite/scripts/install_nomad.sh1-24

容器构建过程

容器化过程采用多阶段方法,为特定目的构建不同类型的镜像

来源:.dockerignore1-13

Docker 集成

Docker 配置使用全面的忽略模式,以从容器构建中排除开发工件和临时文件。主要排除项包括

目录/模式目的
.bundle, vendor/cache/, vendor/bundle/Ruby gem 依赖项
tmp/, log/运行时临时文件和日志文件
ci_scripts/, .githooks/开发工具
docker/tmp/Docker 构建工件
.env* 文件环境特定配置

容器化策略支持多种镜像类型,适用于不同的部署场景,从而可以根据特定的运行时要求优化容器。

Nomad 编排

HashiCorp Nomad 作为容器编排平台,管理着基础设施中的容器部署、扩展和资源分配。

Nomad 安装过程

Nomad 安装通过install_nomad.sh 脚本自动完成,该脚本

  1. 检查现有 Nomad 安装
  2. 如果不存在,则下载 Nomad 0.8.3 版本
  3. 安装到/usr/local/bin/nomad
  4. 验证安装成功

来源:.buildkite/scripts/install_nomad.sh10-23

编排功能

Nomad 编排层提供

  • 容器生命周期管理:自动化的容器部署和管理
  • 资源分配:跨节点的 CPU 和内存资源分配
  • 服务发现:容器网络和服务注册
  • 滚动部署:零停机时间应用程序更新
  • 多环境支持:为预发布和生产环境提供独立的编排

与 CI/CD 集成

基础设施组件与更广泛的 CI/CD 管道无缝集成。编排系统从构建过程中接收容器镜像,并根据环境特定的配置管理它们的部署。

有关 Docker 容器配置的详细信息,请参阅Docker 配置。有关 Nomad 作业定义和集群管理,请参阅Nomad 编排