尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Pachyderm CI 基础设施 Pulumi dev1 Stack 实战指南:本地验证 IAC 变更与 AWS 资源编排

Pachyderm CI 基础设施 Pulumi dev1 Stack 实战指南:本地验证 IAC 变更与 AWS 资源编排 数据工程后端云原生任务调度微服务【免费下载链接】pachydermData-Centric Pipelines and Data Versioning项目地址https://gitcode.com/gh_mirrors/pa/pachyderm点击查看免费下载本指南围绕 Pachyderm 仓库中 CI 基础设施的 Pulumi dev1 测试栈Pulumi.dev1.README.md展开说明其定位、环境变量与配置项、资源标签规范并深入对应 Go 源码cluster.go / database.go / app.go / storage.go / main.go讲解它在 AWS 上如何编排 EKS 集群、RDS PostgreSQL、S3 存储桶并部署 Pachyderm Helm Chart。读完本文你将理解如何在本仓库外正确执行pulumi up验证基础设施即代码IAC改动并掌握 dev1 栈中全部可覆写配置与敏感信息注入方式。dev1 栈的定位Pulumi IAC 自身的测试环境Pulumi 目录etc/testing/circle/workloads/pulumi/aws/承载了 Pachyderm 核心core项目在 AWS 上的多套 Pulumi 栈包含 dev1、qa1qa4、LOAD1LOAD4 等。其中dev1Dev 1栈在文档中被明确标注为Used for testing pulumi infra changes for the pulumi core project.它的核心用途是测试 Pulumi IAC 本身——即对etc/testing/circle/workloads/pulumi/aws/下 Go 基础设施代码的改动。与 QA、LOAD 等由 CI 驱动的栈不同dev1 栈的pulumi up通常在本地手动执行而不是由 CI 触发。这样做的价值在于任何针对 IAC 的修改例如新增 AWS 资源、调整 Helm values、修改 EKS 集群参数都可以先在 dev1 上跑通、验证行为正确后再合入并被其他正式栈复用。因此使用 dev1 栈前有一条重要的协作约定文档原文强调ITS A GOOD IDEA TO ASK IF ANYONE ELSE IS USING THIS STACK. You can always create a DEV2 etc if needed.即执行前应先确认当前没有其他成员正在占用 dev1 栈避免相互干扰若占用中可以自行创建 dev2 等新栈。这与 Pulumi 的**栈stack**机制完全一致——Pulumi.yaml声明项目名与运行时Pulumi.yaml 中name: core、runtime: go、description: Houses pachyderm core stacks而每个栈dev1、qa1、LOAD1 等通过各自的Pulumi.stack.yaml与Pulumi.stack.README.md文件区分。基础设施部署流程与入口从源码结构看dev1 栈的完整部署由 main.go 的DeployResources()编排其调用链为DeployCluster(ctx)cluster.go创建 VPC、EKS 集群、Kubernetes Provider、EBS CSI 驱动及 IAM 角色DeployRDS(ctx)database.go创建 RDS PostgreSQL 实例与 dex 数据库DeployBucket(ctx)storage.go创建 S3 存储桶DeployApp(ctx, ...)app.go在集群中部署 Pachyderm Helm Chart 并注入各类配置。此外main.go末尾还有一个与本文档直接相关的细节它会读取与当前栈同名的 README 文件./Pulumi.%s.README.md%s为ctx.Stack()并将其作为readme输出导出。也就是说Pulumi.dev1.README.md这份文档不仅是使用说明还会在pulumi up后作为栈输出暴露给用户查看方便随时核对栈的用途与注意事项。必填环境变量敏感信息只在本地注入dev1 文档指出测试数据库密码必须以 Pulumi secret 方式设置且绝不能提交到代码仓库CI 场景下该值由 CircleCI 的私有环境变量保存。本地执行时需要手动注入pulumi config set --secret rdsPGDBPassword $IAC_CI_DB_PASSWORD--secret标志会将密码以密文形式写入Pulumi.dev1.yaml读取时自动解密避免明文落盘。这一点与源码中的读取方式严格对应在 database.go 中通过cfg.RequireSecret(rdsPGDBPassword)读取用于 RDS 实例的Password字段在 app.go 中同样以cfg.RequireSecret(rdsPGDBPassword)注入 Helm values 的global.postgresql.postgresqlPassword与postgresqlPostgresPassword。RequireSecret表明该配置为强制的 secret 配置——若缺失部署会直接失败。另一个必填的环境变量是ENT_ACT_CODE即测试用的企业版激活码$ENT_ACT_CODE- Test enterprise env variable key needs to be set locally from where ever thepulumi upis called from.它必须在执行pulumi up的本地环境中预先导出。源码印证在 app.go 中enterpriseKey : os.Getenv(ENT_ACT_CODE)若为空会直接返回错误need to supply env var ENT_ACT_CODE部署中止。除文档点名的rdsPGDBPassword与ENT_ACT_CODE外从 app.go 可以看出本地执行 dev1 栈实际上还需要一组环境变量这些变量同样通过os.Getenv读取且缺失即报错AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、BIGQUERY_AUTH_JSON写入 metrics secret、CF_WP_LOADTEST_AWSKEYID、CF_WP_LOADTEST_ENDPOINT_URL、CF_WP_LOADTEST_AWSACCESSKEY、ISSUER_URI、CLIENT_ID、CLIENT_SECRET、TLS_CRT、TLS_KEY用于 workspace 通配符 TLS 证书。测试用例 main_test.go 中正是为每个栈统一 mock 了这些变量可作为本地执行前的环境清单参考。可覆写配置项与默认值dev1 文档列出两个可通过pulumi config set覆写的配置pulumi config set pachdVersion pachdVersion pulumi config set helmChartVersion helmChartVersion pachdVersionPachyderm 主镜像pachd的镜像 tag。源码中cfg.Try(pachdVersion)读取缺省默认2.5.3见 app.go最终写入 Helm values 的pachd.image.tag。helmChartVersionPachyderm Helm Chart 的版本号。读取后为空字符串时helm.NewRelease不指定Version直接安装https://helm.pachyderm.com仓库中pachydermChart 的最新可用版本非空则显式指定版本见 app.go。此外dev1 栈实际的Pulumi.dev1.yaml仅包含一条配置config: aws:region: us-west-2即 AWS 区域固定为us-west-2美西二区这也与 app.go 中 S3 存储 URL 的?regionus-west-2参数一致。除文档明确提及的两个配置外从源码可整理出该栈支持覆写的其他常用配置及其默认值均通过pulumi config set key value设置配置项默认值源码位置rdsAllocatedStorage20GBdatabase.gordsInstanceClassdb.m6g.largedatabase.gordsDiskTypegp2database.gordsDiskIOPs1000仅当rdsDiskType为io1时生效database.gominClusterSize/maxClusterSize/desiredClusterSize1 / 3 / 1cluster.goeksNodeInstanceTypet2.mediumcluster.gonodeRootVolumeSize20GBcluster.govpcNetworkCidr10.0.0.0/16cluster.goenableConsoletrueapp.gopgBouncerMaxConnections1000app.gopgBouncerDefaultPoolSize20app.goetcdStorageClass空使用集群默认存储类app.goetcdResourceLimitsRequestsCPU4app.goetcdResourceLimitsRequestsMemory4Giapp.go这些配置值通过config.Try*系列 API 读取任何一项缺省时都会回落为上表默认值因此本地测试时可以只覆写关心的项。资源标签规范可追踪计费与归属dev1 文档要求为所有资源打上标签以便追踪计费与使用情况。文档给出的 Go 代码片段如下Tags: pulumi.StringMap{ Project: pulumi.String(Feature Testing), Service: pulumi.String(CI), Owner: pulumi.String(pachyderm-ci), Team: pulumi.String(Core), },这份标签并非只存在于文档示例中而是贯穿了整个 Pulumi 代码库的所有 AWS 资源。可以看到cluster.go 中 VPCec2.NewVpc、EKS 集群、IAM 角色、EBS CSI Addon 都带有完全一致的Tagsdatabase.go 的 RDS 实例与 storage.go 的 S3 存储桶同样如此。其中值得注意的一点是dev1 文档示例只列出 4 个标签键而源码中实际实现会在上述基础上额外追加Environment: pulumi.String(ctx.Stack())即用当前栈名如dev1标记环境。这意味着通过 AWS 控制台的标签筛选可以按TeamCore、Environmentdev1等维度快速定位某一套测试栈的全部资源进而核算该栈的云成本与资源占用这正是文档强调track billing and usage的实际落地方式。dev1 栈在 CI 测试体系中的位置为了更准确地理解 dev1 栈的使用场景可以将其与同目录其他栈的 README 对照Pulumi.qa1.README.md 表明 QA 栈用于 sanity aws example release tests即发布前的 AWS 冒烟/示例发布测试dev1 则是用于 testing pulumi infra changes即验证 IAC 代码本身的改动。二者形成互补IAC 改动先在本地 dev1 栈验证 → 合入代码后由 CI 在 QA/LOAD 等栈运行正式测试。测试用例 main_test.go 也会遍历dev1、LOAD1LOAD4、qa1qa4全部栈使用 Pulumi mock 与 terratest 渲染 Helm Chart 并校验部署逻辑其中以project:rdsPGDBPassword: x注入测试密码从侧面印证 dev1 与其他栈共享同一套 IAC 代码、仅通过配置与环境变量区分行为。本地执行 dev1 栈的推荐流程综合文档与源码可总结出在本地执行 dev1 栈验证 IAC 改动的完整流程确认栈空闲与团队确认 dev1 未被他人占用必要时按文档建议新建 dev2。设置必填环境变量在终端导出ENT_ACT_CODE以及 app.go 中校验的 AWS、OIDC、TLS、指标等环境变量。注入数据库密码pulumi config set --secret rdsPGDBPassword $IAC_CI_DB_PASSWORD按需覆写配置可选pulumi config set pachdVersion 2.5.3 pulumi config set helmChartVersion 2.5.3执行部署在etc/testing/circle/workloads/pulumi/aws/下运行pulumi up --stack dev1。部署完成后main.go会将本 README 作为readme输出导出方便核对。需要说明的是dev1 栈是 Pachyderm 团队内部的 CI 基础设施环境其 AWS 凭据、企业激活码等敏感信息由团队内部管理与提供本文仅就仓库内文档与源码说明其配置方法与运行机制供读者理解该 IAC 工程的组织方式。总结dev1 栈是 Pachyderm 核心项目验证 Pulumi IAC 改动的前置环境通过pulumi config set --secret rdsPGDBPassword与ENT_ACT_CODE等环境变量注入敏感信息通过pachdVersion、helmChartVersion等配置控制部署内容通过统一的Project / Service / Owner / Team / Environment标签管理计费与资源归属。其对应的 Go 源码cluster.go、database.go、storage.go、app.go展示了从 EKS 集群、RDS 数据库、S3 存储到 Helm Chart 部署的完整 AWS 基础设施编排是理解 Pachyderm CI 基础设施如何以代码管理基础设施的最佳示例。赞分享数据工程后端云原生任务调度微服务【免费下载链接】pachydermData-Centric Pipelines and Data Versioning项目地址https://gitcode.com/gh_mirrors/pa/pachyderm点击查看免费下载相关推荐pulumi-aws资源版本控制实现基础设施的可追溯性pulumi aws资源版本控制实现基础设施的可追溯性 你是否曾因AWS资源配置漂移而焦头烂额是否在生产环境故障时无法快速定位变更源头本文将带你掌握pul10分钟上手基于Terraform的AWS基础设施即代码(IaC)实战指南10分钟上手基于Terraform的AWS基础设施即代码 IaC 实战指南 为什么你的AWS基础设施还在手动配置 你是否还在经历这些痛点AWS控制台点击到Flexile基础设施IaC基础设施即代码实践Flexile基础设施IaC基础设施即代码实践 痛点传统基础设施管理的挑战 还在为每次部署都要手动配置服务器、数据库和缓存服务而烦恼吗还在因为环境不一致导上一篇Octop API认证指南JWT多用户接口调用完全教程下一篇AssetRipper 实战指南从 .assets 到可打开 Unity 项目的完整流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表