eks-build 用于在构建 EKS 集群时生成完整、生产就绪的 Terraform 项目,生成的代码可直接 terraform apply,无需手工修补。它遵循 terraform-skill 的约定(资源块顺序、变量约定、文件组织、版本约束)。
主要用途:从需求生成 EKS Terraform 代码;搭建带气隙、代理或合规约束的 EKS 基础设施;为 EKS 附加组件管理创建 ArgoCD GitOps 集成;实现 eks-blueprints-addons 的两阶段 webhook 排序;为 EKS 工作负载配置 IRSA 或 Pod Identity;生成附加组件生命周期的 ArgoCD ApplicationSet;添加自定义附加组件(Kyverno、Prisma、New Relic);比较部署模式(全 Terraform、ArgoCD+Terraform、ArgoCD+ACK/KRO)。
三种模式:模式1 全 Terraform(集群、附加组件、AWS 资源均由 Terraform 管理);模式2a ArgoCD + Terraform AWS(K8s 附加组件由 ArgoCD 管理,AWS 资源仍由 Terraform 创建);模式2b ArgoCD + K8s 原生 AWS(AWS 资源由 ACK、Crossplane 等控制器创建)。所有模式均用 Terraform 管理 EKS 集群与 VPC。
使用方式:先收集需求(交互问卷或 requirements YAML),选择模式,创建 projects/<project-name>/ 结构,生成根 Terraform 文件与模块(eks-cluster、custom-addons、kyverno-policies、eks-tenants、eks-gitops-bridge),按需应用气隙、代理、私有镜像仓库、合规等定制补丁,模式2 额外生成 gitops/ 目录,最后运行 scripts/validate_project.sh 校验。部署命令:terraform init -backend-config=configs/backend.hcl,terraform plan && terraform apply;模式2 还需 aws eks update-kubeconfig 并 kubectl apply GitOps 清单。
关键限制:生成前必须联网搜索所有附加组件、Helm chart 和 Terraform 模块的最新版本,不得使用缓存版本;vpc-cni 与 eks-pod-identity-agent 必须设 before_compute: true;模式1 必须采用两阶段模块架构;Multus 必须禁用;需使用 HashiCorp Terraform v1.14.5+(OpenTofu 存在 depends_on 性能退化);ArgoCD 目标服务器使用集群 ARN;OCI Helm chart 的 repoURL 不加 oci:// 前缀。不适用于 EKS 架构设计、通用 Terraform 模块开发、EKS 侦察或 ECS 构建。