菜单

配置管理

相关源文件

本文档涵盖了 Gumroad 平台使用的配置管理系统,包括环境变量、秘密处理和多环境配置策略。该系统支持开发、测试和生产环境,并具备安全的凭证管理和自动化部署流程。

有关特定环境变量配置的详细信息,请参阅环境变量。有关安全凭证处理和部署流程,请参阅秘密管理

配置架构概述

Gumroad 平台采用多层配置管理方法,将公共配置模板与敏感凭证分离,支持多个部署环境,并与 CI/CD 管道集成以实现自动化秘密供应。

配置源

配置系统采用基于模板的方法,其中.env.example1-237将所有必需的环境变量定义为文档,而实际值则存储在一个单独的私有仓库中,通过copy_secrets.sh脚本进行访问。

来源: .env.example, .buildkite/scripts/copy_secrets.sh

配置类别

系统将配置组织成逻辑服务类别

类别目的关键变量
AWS/S3云存储和 CDNAWS_ACCESS_KEY_ID, S3_BASE_URL_TEMPLATE
支付处理Stripe 和 PayPal 集成STRIPE_API_KEY, PAYPAL_CLIENT_ID
邮件服务SendGrid 和 Resend APISENDGRID_GR_CREATORS_API_KEY, RESEND_CREATORS_API_KEY
社交认证OAuth 提供商GOOGLE_CLIENT_ID, FACEBOOK_APP_ID
安全加密和 HMAC 密钥MAILER_HEADERS_ENCRYPTION_KEY_V1, CLOUDFLARE_HMAC_KEY
外部服务第三方集成ZOOM_CLIENT_ID, BUGSNAG_API_KEY

来源: .env.example

秘密管理流程

秘密管理系统使用专用脚本,与 CI/CD 管道集成,以安全地在不同环境中提供凭证。

该脚本执行以下几个关键操作

  1. 仓库克隆:使用git clone --depth 1仅获取最新凭证.buildkite/scripts/copy_secrets.sh19
  2. 文件过滤:删除非必要文件,例如.git.gitignore和文档.buildkite/scripts/copy_secrets.sh25-28
  3. 安全复制:对buildkite-agent用户使用sudo操作并设置适当的所有权.buildkite/scripts/copy_secrets.sh39-40
  4. 目录创建:根据需要自动创建目标目录.buildkite/scripts/copy_secrets.sh34-37

来源: .buildkite/scripts/copy_secrets.sh

环境特定配置

该平台支持多个部署环境,并具有环境特定的配置值,特别是针对 URL、API 端点和服务标识符。

环境变量模式

常见的环境特定模式包括

  • URL 端点:如CLOUDFRONT_DOWNLOAD_DISTRIBUTION_URL_DEVCLOUDFRONT_DOWNLOAD_DISTRIBUTION_URL_PROD等变量.env.example16-17
  • 服务标识符:环境特定的 ID,例如HLS_PIPELINE_ID_DEVHLS_PIPELINE_ID_PROD.env.example31-32
  • 域名配置:针对开发和生产环境分离邮件域名.env.example120-125
  • 环境检测ENV_IDENTIFIER_DEVENV_IDENTIFIER_PROD用于运行时环境检测.env.example173-174

来源: .env.example

与部署管道集成

配置管理系统与 Buildkite CI/CD 管道紧密集成,在部署过程中提供自动化的秘密供应。

管道集成点

管道阶段配置操作脚本/流程
预命令钩子秘密供应copy_secrets.sh执行
构建流程环境变量注入Docker 构建上下文
部署环境特定配置选择Nomad 作业模板
运行时配置验证应用程序启动

copy_secrets函数包含全面的错误处理和日志记录,使用彩色输出以提高构建可见性.buildkite/scripts/copy_secrets.sh4-8,以及环境变量验证.buildkite/scripts/copy_secrets.sh11-14

来源: .buildkite/scripts/copy_secrets.sh

安全考量

配置管理系统实施了多项安全实践

来源: .buildkite/scripts/copy_secrets.sh