首页 › tutorials › Claude Code云原生基础设施实战:Terraform到K8s交付

Claude Code云原生基础设施实战:Terraform到K8s交付全链路

概述

本教程面向DevOps工程师和云架构师,系统讲解如何利用Claude Code构建完整的云原生基础设施开发工作流。从Terraform模块设计到Kubernetes Helm Chart交付,从安全审查到成本优化,覆盖IaC开发全链路。适合有基本云服务经验的工程师,预计学习时间4-6小时。

前置条件


一、项目架构总览

云原生基础设施的核心思路是"一切皆代码"——网络、计算、存储、安全策略全部用声明式代码定义。Claude Code在这一流程中扮演三个角色:代码生成器、审查员和运维助手。

flowchart TB
    subgraph "Claude Code驱动的基础设施工作流"
        A[CLAUDE.md项目配置] --> B[Terraform模块开发]
        B --> C[terraform validate/plan]
        C --> D{Plan通过?}
        D -->|是| E[安全扫描 Checkov]
        D -->|否| F[Claude Code修复错误]
        F --> C
        E --> G[Docker镜像构建]
        G --> H[K8s清单/Helm Chart]
        H --> I[kubectl apply / helm install]
        I --> J[监控与成本追踪]

        K[Git Commit] --> L[CI/CD Pipeline]
        L --> B
    end

    style A fill:#f9f,stroke:#333
    style F fill:#ff9,stroke:#333
    style J fill:#9f9,stroke:#333

整个工作流分为五个阶段:规划→编码→验证→交付→运维。Claude Code在每个阶段都有明确的介入点。


二、项目初始化与CLAUDE.md配置

2.1 创建项目结构

mkdir cloud-infra-project && cd cloud-infra-project
mkdir -p terraform/{modules,environments/{dev,staging,prod}}
mkdir -p k8s/{base,overlays/{dev,staging,prod}}
mkdir -p helm-charts/myapp
mkdir -p docker
mkdir -p scripts

预期项目结构:

cloud-infra-project/
├── CLAUDE.md                    # Claude Code项目指令
├── terraform/
│   ├── modules/
│   │   ├── vpc/
│   │   ├── eks/
│   │   ├── rds/
│   │   └── s3/
│   └── environments/
│       ├── dev/
│       ├── staging/
│       └── prod/
├── k8s/
│   ├── base/
│   └── overlays/
├── helm-charts/
├── docker/
└── scripts/

2.2 编写CLAUDE.md

CLAUDE.md是Claude Code理解项目上下文的核心文件。对于基础设施项目,需要明确编码规范、安全基线和工作流约束。

# Cloud Infrastructure Project

## Project Overview
云原生基础设施项目,使用Terraform管理AWS资源,Kubernetes编排容器,Helm交付应用。

## Tech Stack
- Infrastructure: Terraform 1.7+ / OpenTofu
- Container Orchestration: Kubernetes (EKS 1.29)
- Container Runtime: Docker with multi-stage builds
- Package Management: Helm 3.x
- Cloud Provider: AWS (primary), with GCP support planned

## Terraform Conventions
- 所有资源必须添加 `tags` 块,包含 Environment、Project、ManagedBy 字段
- 变量定义在 `variables.tf`,输出在 `outputs.tf`,资源按模块拆分
- 使用 `locals` 进行命名约定:`${local.project}-${local.environment}-${resource}`
- State存储在S3后端,启用DynamoDB锁定
- 禁止硬编码AWS Account ID或Region,使用 `data "aws_caller_identity"` 和变量
- 模块版本必须锁定:`source = "...?ref=v1.2.3"`
- 敏感变量必须标记 `sensitive = true`
- 始终运行 `terraform fmt` 和 `terraform validate` 后再提交

## Kubernetes Conventions
- 使用Kustomize管理多环境配置(base + overlay模式)
- 所有Deployment必须设置 `resources.requests` 和 `resources.limits`
- 必须配置 `livenessProbe` 和 `readinessProbe`
- 使用NetworkPolicy限制Pod间通信
- 镜像标签禁止使用 `latest`,必须指定具体版本

## Docker Conventions
- 多阶段构建,最终镜像基于distroless或alpine
- 禁止以root用户运行应用
- 使用 `.dockerignore` 排除不必要文件

## Security Requirements
- 安全组遵循最小权限原则
- 所有S3桶启用版本控制和加密
- RDS启用加密和自动备份
- 定期运行 `checkov` 扫描Terraform代码
- IAM策略遵循最小权限

## Commands
- 格式化: `terraform fmt -recursive`
- 验证: `terraform validate`
- 计划: `terraform plan -out=tfplan`
- 安全扫描: `checkov -d terraform/ --framework terraform`
- K8s验证: `kubectl apply --dry-run=client -f k8s/`

关键点:CLAUDE.md中的约束条件直接影响Claude Code的生成行为。明确的"禁止"和"必须"规则能将安全合规要求嵌入日常开发流程。

2.3 验证配置生效

claude "请描述当前项目的目录结构和规范要求"

Claude Code应正确读取CLAUDE.md并复述项目结构、命名约定和安全要求。


三、Terraform模块开发

3.1 VPC模块——网络基础设施基石

用自然语言描述需求,让Claude Code生成符合规范的HCL代码:

claude "在 terraform/modules/vpc/ 下创建一个生产级VPC模块,要求:
1. 支持多AZ部署(3个可用区)
2. 公有子网、私有子网、数据库子网分离
3. 启用NAT Gateway(每个AZ一个)
4. VPC Flow Log发送到CloudWatch
5. 使用locals进行命名约定
6. 所有资源添加标准tags"

Claude Code生成的核心文件:

terraform/modules/vpc/variables.tf:

variable "vpc_cidr" {
  description = "VPC CIDR block"
  type        = string
  default     = "10.0.0.0/16"
}

variable "environment" {
  description = "Environment name"
  type        = string
}

variable "project" {
  description = "Project name"
  type        = string
}

variable "availability_zones" {
  description = "List of availability zones"
  type        = list(string)
  default     = ["us-east-1a", "us-east-1b", "us-east-1c"]
}

variable "public_subnets" {
  description = "CIDR blocks for public subnets"
  type        = list(string)
  default     = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
}

variable "private_subnets" {
  description = "CIDR blocks for private subnets"
  type        = list(string)
  default     = ["10.0.10.0/24", "10.0.20.0/24", "10.0.30.0/24"]
}

variable "database_subnets" {
  description = "CIDR blocks for database subnets"
  type        = list(string)
  default     = ["10.0.100.0/24", "10.0.200.0/24", "10.0.300.0/24"]
}

terraform/modules/vpc/main.tf(关键部分):

locals {
  name_prefix = "${var.project}-${var.environment}"
  common_tags = {
    Environment = var.environment
    Project     = var.project
    ManagedBy   = "terraform"
  }
}

resource "aws_vpc" "main" {
  cidr_block           = var.vpc_cidr
  enable_dns_hostnames = true
  enable_dns_support   = true

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-vpc"
  })
}

# 公有子网
resource "aws_subnet" "public" {
  count                   = length(var.public_subnets)
  vpc_id                  = aws_vpc.main.id
  cidr_block              = var.public_subnets[count.index]
  availability_zone       = var.availability_zones[count.index]
  map_public_ip_on_launch = true

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-public-${count.index + 1}"
    Tier = "public"
  })
}

# 私有子网
resource "aws_subnet" "private" {
  count             = length(var.private_subnets)
  vpc_id            = aws_vpc.main.id
  cidr_block        = var.private_subnets[count.index]
  availability_zone = var.availability_zones[count.index]

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-private-${count.index + 1}"
    Tier = "private"
  })
}

# NAT Gateway(每AZ一个)
resource "aws_eip" "nat" {
  count  = length(var.public_subnets)
  domain = "vpc"

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-nat-eip-${count.index + 1}"
  })
}

resource "aws_nat_gateway" "main" {
  count         = length(var.public_subnets)
  allocation_id = aws_eip.nat[count.index].id
  subnet_id     = aws_subnet.public[count.index].id

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-nat-${count.index + 1}"
  })

  depends_on = [aws_internet_gateway.main]
}

# VPC Flow Logs
resource "aws_flow_log" "main" {
  vpc_id          = aws_vpc.main.id
  traffic_type    = "ALL"
  iam_role_arn    = aws_iam_role.flow_log.arn
  log_destination = aws_cloudwatch_log_group.flow_log.arn

  tags = merge(local.common_tags, {
    Name = "${local.name_prefix}-flow-log"
  })
}

3.2 环境配置——dev环境实例

claude "在 terraform/environments/dev/ 下创建dev环境配置:
1. 引用上述VPC模块
2. 使用 dev-test 的CIDR范围(10.1.0.0/16)
3. 只用2个AZ(节省成本)
4. 配置S3后端存储state
5. 创建provider配置,region从变量读取"

Claude Code会自动按照CLAUDE.md中的命名约定和tag规范生成配置。

3.3 Terraform工作流验证

# Claude Code可以直接在终端执行terraform命令
claude "在dev环境下运行 terraform init、fmt、validate,报告所有错误和警告"

Claude Code会自动: 1. 切换到正确目录 2. 运行 terraform init -backend=false 3. 运行 terraform fmt -recursive 检查格式 4. 运行 terraform validate 检查语法 5. 解释发现的错误并提供修复建议

常见问题与解决:

问题 原因 Claude Code修复方式
Invalid value for module source 模块路径错误 自动修正相对路径引用
Missing required argument 变量未传值 添加默认值或在tfvars中补充
Provider configuration not present provider块缺失 自动添加provider配置
Cycle detected 资源循环依赖 重构资源依赖关系图

四、安全审查与合规检查

4.1 Checkov集成

claude "在项目根目录创建 scripts/security-scan.sh 脚本:
1. 运行 checkov 扫描 terraform/ 目录
2. 运行 trivy 扫描 docker/ 目录
3. 输出报告到 security-reports/ 目录
4. 退出码表示是否有高危漏洞"

生成的扫描脚本:

#!/bin/bash
set -euo pipefail

REPORT_DIR="security-reports/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$REPORT_DIR"

echo "=== Terraform Security Scan ==="
checkov -d terraform/ \
  --framework terraform \
  --output cli \
  --output junitxml \
  --output-file-plan "${REPORT_DIR}/terraform-checkov.xml" \
  --soft-fail-on LOW \
  --hard-fail-on CRITICAL,HIGH

echo "=== Docker Security Scan ==="
for dockerfile in docker/*/Dockerfile; do
  trivy config "$dockerfile" --format json > "${REPORT_DIR}/trivy-$(basename $(dirname $dockerfile)).json"
done

echo "Reports saved to ${REPORT_DIR}"

4.2 Claude Code辅助修复安全问题

当Checkov发现安全问题时,直接让Claude Code修复:

claude "Checkov报告了以下问题,请逐一修复:
1. CKV_AWS_79: S3桶未启用加密
2. CKV_AWS_18: S3桶未配置访问日志
3. CKV_AWS_23: 安全组规则过于宽松(0.0.0.0/0)
4. CKV_AWS_35: RDS未启用加密"

Claude Code会为每个检查项生成修复代码,并解释修复原因。例如修复CKV_AWS_23:

# Before (不安全)
resource "aws_security_group_rule" "ingress" {
  type        = "ingress"
  from_port   = 443
  to_port     = 443
  protocol    = "tcp"
  cidr_blocks = ["0.0.0.0/0"]  # Checkov: CKV_AWS_23
}

# After (修复后)
resource "aws_security_group_rule" "ingress" {
  type        = "ingress"
  from_port   = 443
  to_port     = 443
  protocol    = "tcp"
  cidr_blocks = [var.allowed_cidr_blocks]  # 限制为已知IP范围
  description = "HTTPS access from known networks"
}

4.3 Terraform安全审查Skill

安装社区维护的Terraform安全审查Skill,提升Claude Code在IaC安全方面的专业能力:

# 安装antonbabenko的terraform-skill
mkdir -p ~/.claude/skills
git clone https://github.com/antonbabenko/terraform-skill ~/.claude/skills/terraform

该Skill内置了Terraform最佳实践、模块结构建议、安全策略检查规则等知识库,使Claude Code能更专业地处理IaC任务。


五、Docker容器化

5.1 多阶段构建

claude "在 docker/app/ 下为Node.js应用创建生产级Dockerfile:
1. 多阶段构建(build → production)
2. 最终镜像基于node:20-alpine
3. 创建非root用户运行应用
4. 使用.dockerignore排除node_modules等
5. 添加健康检查
6. 遵循CLAUDE.md中的容器规范"

Claude Code生成:

# Stage 1: Build
FROM node:20-alpine AS builder

WORKDIR /app

# 先复制依赖文件,利用Docker缓存
COPY package.json package-lock.json ./
RUN npm ci --only=production && \
    npm cache clean --force

# 复制源码并构建
COPY . .
RUN npm run build

# Stage 2: Production
FROM node:20-alpine AS production

# 安装dumb-init作为PID 1
RUN apk add --no-cache dumb-init

# 创建非root用户
RUN addgroup -g 1001 -S appgroup && \
    adduser -S appuser -u 1001 -G appgroup

WORKDIR /app

# 只复制构建产物和必要依赖
COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules
COPY --from=builder --chown=appuser:appgroup /app/package.json ./

USER appuser

EXPOSE 3000

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

ENTRYPOINT ["dumb-init", "--"]
CMD ["node", "dist/server.js"]

5.2 容器安全扫描

claude "使用trivy扫描刚才构建的Docker镜像,检查是否有高危CVE漏洞"

Claude Code会执行 trivy image 命令,解析输出,并根据严重程度给出修复建议——如升级基础镜像版本、替换不安全的依赖包。


六、Kubernetes清单与Kustomize

6.1 Base清单生成

claude "在 k8s/base/ 下为上述应用创建K8s清单:
1. Deployment(2 replicas,含resources限制)
2. Service(ClusterIP类型)
3. HorizontalPodAutoscaler
4. NetworkPolicy(只允许同namespace流量)
5. PodDisruptionBudget
6. 必须配置liveness和readiness探针
7. 使用kustomization.yaml组织"

Claude Code生成的 k8s/base/deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 1001
        fsGroup: 1001
      containers:
        - name: myapp
          image: myapp:latest  # kustomize会替换tag
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop:
                - ALL

6.2 环境Overlay配置

claude "创建 k8s/overlays/prod/ 的Kustomize overlay:
1. 副本数增加到5
2. 资源限制提高到 1 CPU / 1Gi 内存
3. 添加HPA(目标CPU 70%)
4. 配置生产环境ConfigMap和Secret引用
5. 添加PodDisruptionBudget(minAvailable: 3)"

七、Helm Chart开发

7.1 Chart骨架

claude "在 helm-charts/myapp/ 下创建完整的Helm Chart:
1. Chart.yaml 和 values.yaml
2. templates/ 包含 deployment、service、ingress、hpa、networkpolicy
3. _helpers.tpl 定义通用标签模板
4. values.yaml 提供合理的默认值和注释说明
5. 支持通过values覆盖所有关键参数"

Claude Code生成的 helm-charts/myapp/values.yaml:

# -- 部署副本数
replicaCount: 2

image:
  # -- 镜像仓库地址
  repository: 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp
  # -- 镜像拉取策略
  pullPolicy: IfNotPresent
  # -- 镜像标签(禁止使用latest)
  tag: ""

# -- 镜像拉取Secret(ECR私有仓库需要)
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""

service:
  type: ClusterIP
  port: 80
  targetPort: 3000

ingress:
  enabled: false
  className: alb
  annotations: {}
  hosts: []
  tls: []

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi

autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

# -- 安全上下文
securityContext:
  runAsNonRoot: true
  runAsUser: 1001
  fsGroup: 1001

# -- 网络策略
networkPolicy:
  enabled: true
  ingressFrom: []

7.2 模板验证

claude "验证Helm Chart:
1. helm lint helm-charts/myapp/
2. helm template 渲染并检查输出
3. 确保所有模板都能正确渲染"

Claude Code会执行helm命令并分析输出,确保: - 模板语法正确 - 默认values能正常渲染 - 必需字段没有遗漏 - 资源限制和安全上下文已设置


八、GitOps与CI/CD集成

8.1 GitHub Actions工作流

claude "创建 .github/workflows/infrastructure.yml:
1. PR触发时运行 terraform plan + checkov 扫描
2. main分支合并时运行 terraform apply
3. 包含terraform fmt检查
4. plan结果作为PR评论输出
5. 使用OIDC认证(不使用长期AK/SK)"

核心工作流片段:

name: Infrastructure Pipeline

on:
  pull_request:
    paths:
      - 'terraform/**'
  push:
    branches: [main]
    paths:
      - 'terraform/**'

permissions:
  id-token: write
  contents: read
  pull-requests: write

jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          aws-region: us-east-1

      - name: Terraform Format Check
        run: terraform fmt -recursive -check terraform/

      - name: Security Scan
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          soft_fail_on: LOW
          hard_fail_on: CRITICAL,HIGH

      - name: Terraform Plan
        run: |
          cd terraform/environments/${{ github.ref_name == 'main' && 'prod' || 'dev' }}
          terraform init
          terraform plan -out=tfplan

      - name: Terraform Apply
        if: github.ref == 'refs/heads/main'
        run: |
          cd terraform/environments/prod
          terraform apply -auto-approve tfplan

8.2 OIDC认证配置

claude "创建Terraform模块来配置GitHub Actions OIDC认证:
1. IAM Identity Provider(GitHub OIDC)
2. IAM Role with Web Identity
3. 最小权限策略(仅允许需要的terraform操作)
4. Trust policy限制为特定仓库和分支"

九、完整实战案例:微服务应用基础设施

9.1 需求场景

一个三层微服务应用(API Gateway → Order Service → Inventory Service),需要: - EKS集群运行容器化服务 - RDS PostgreSQL作为持久层 - ElastiCache Redis作为缓存层 - ALB作为入口流量分发 - CloudWatch监控和告警

9.2 一键生成

claude "基于项目CLAUDE.md规范,生成完整的微服务基础设施代码:
1. terraform/modules/eks/ — EKS集群模块(托管节点组)
2. terraform/modules/rds/ — PostgreSQL模块(Multi-AZ)
3. terraform/modules/elasticache/ — Redis模块
4. terraform/environments/prod/ — 组合所有模块
5. helm-charts/order-service/ 和 helm-charts/inventory-service/
6. k8s/overlays/prod/ — 包含HPA和NetworkPolicy

架构约束:
- EKS节点组使用Spot实例降低成本
- RDS使用Graviton实例
- 所有跨服务通信通过Service Mesh
- 启用X-Ray分布式追踪"

9.3 架构验证流程

sequenceDiagram
    participant Dev as 开发者
    participant CC as Claude Code
    participant TF as Terraform
    participant CK as Checkov
    participant K8s as Kubernetes

    Dev->>CC: 描述基础设施需求
    CC->>CC: 读取CLAUDE.md规范
    CC->>TF: 生成Terraform代码
    CC->>TF: terraform fmt + validate
    TF-->>CC: 验证结果

    alt 验证失败
        CC->>CC: 自动修复错误
        CC->>TF: 重新验证
    end

    CC->>CK: 运行安全扫描
    CK-->>CC: 安全报告

    alt 发现高危问题
        CC->>CC: 生成修复补丁
        CC->>Dev: 展示修复建议
    end

    CC->>TF: terraform plan
    TF-->>CC: 变更计划
    CC->>Dev: 展示计划摘要

    Dev->>CC: 确认应用
    CC->>TF: terraform apply

    CC->>K8s: 部署Helm Charts
    K8s-->>CC: 部署状态
    CC->>Dev: 完整交付报告

9.4 成本优化提示

在基础设施开发中,Claude Code可以帮助识别成本优化机会:

claude "分析 terraform/environments/prod/ 的配置,识别以下成本优化机会:
1. 是否有可使用Spot实例的工作负载
2. RDS实例类型是否right-sized
3. NAT Gateway数量是否合理(每个$32/月)
4. 是否有不必要的Elastic IP
5. S3生命周期策略是否完善
6. 给出预估月度成本"

Claude Code会逐项分析并给出具体建议,例如: - "建议将开发环境的NAT Gateway从3个减少到1个,月省约$64" - "RDS db.r6g.large 在非高峰期可以使用 db.r6g.xlarge + 自动扩缩" - "建议添加 aws_instance 的 spot_instance 配置,降低计算成本60-70%"


十、高级技巧与最佳实践

10.1 Terraform模块测试

claude "使用terratest为VPC模块编写集成测试:
1. 测试VPC创建成功
2. 验证子网数量和CIDR
3. 验证NAT Gateway数量
4. 验证Flow Log配置
5. 测试放在 terraform/modules/vpc/test/ 下"

10.2 Drift检测

claude "创建 scripts/drift-detect.sh 脚本:
1. 对每个环境运行 terraform plan -detailed-exitcode
2. 如果检测到drift(exit code 2),发送告警
3. 生成drift报告:哪些资源被手动修改
4. 可以与cron或GitHub Actions定时任务集成"

10.3 多云抽象

claude "创建 terraform/modules/abstract-database/ 模块:
1. 使用terraform条件表达式选择AWS RDS或GCP Cloud SQL
2. 统一的变量接口(engine, version, size)
3. 统一的输出接口(endpoint, port, connection_string)
4. 具体实现在 modules/rds/ 和 modules/cloud-sql/ 中"

10.4 状态管理自动化

claude "创建Terraform状态管理脚本:
1. scripts/state-bootstrap.sh — 初始化S3后端和DynamoDB锁表
2. scripts/state-import.sh — 导入现有资源到state
3. scripts/state-mv.sh — 安全的资源移动(模块重构用)
4. 所有操作前先备份state文件"

10.5 Prompt模式总结

场景 Prompt模式 示例
新模块创建 需求描述 + 规范约束 "创建VPC模块,要求多AZ、Flow Log、标准tags"
问题修复 错误信息 + 上下文 "terraform plan报错xxx,请修复"
安全审查 工具输出 + 修复要求 "Checkov发现CKV_AWS_23,请修复所有安全组"
成本优化 配置分析 + 目标 "分析prod环境,识别月度成本可优化项"
代码审查 变更范围 + 审查标准 "审查PR #42的terraform变更,关注安全合规"

工作流程总览

graph LR
    subgraph "开发阶段"
        A1[编写CLAUDE.md] --> A2[生成Terraform模块]
        A2 --> A3[生成Dockerfile]
        A3 --> A4[生成K8s清单/Helm]
    end

    subgraph "验证阶段"
        B1[terraform fmt] --> B2[terraform validate]
        B2 --> B3[checkov安全扫描]
        B3 --> B4[trivy镜像扫描]
        B4 --> B5[helm lint]
    end

    subgraph "交付阶段"
        C1[terraform plan] --> C2[人工审核]
        C2 --> C3[terraform apply]
        C3 --> C4[helm install/upgrade]
        C4 --> C5[监控验证]
    end

    A4 --> B1
    B5 --> C1

延伸阅读

训练营适用性评估

维度 评估
目标受众 DevOps工程师、云架构师、SRE
前置知识 Terraform基础、K8s基础、AWS/GCP经验
教学时长 4-6小时(含动手实操)
训练营类型 DevOps训练营、云原生实战营
难度级别 中高级(★★★☆☆)
实验环境需求 AWS沙箱账号 + kubectl集群
产出物 完整的Terraform模块库 + Helm Chart + CI/CD Pipeline

参考来源

  1. Deploy Infrastructure with Claude Code and Terraform — Claude Code Terraform部署实战指南,包含完整demo
  2. Claude Code Best Practices - 官方文档 — Anthropic官方Claude Code最佳实践,涵盖CLAUDE.md编写规范
  3. Terraform & OpenTofu Skill for Claude Code — antonbabenko维护的Terraform Skill,包含最佳实践知识库
  4. Claude Code for AWS Infrastructure: Agentic DevOps Workflow — AWS基础设施Agentic DevOps完整工作流
  5. Infrastructure as Code with AI Assistants — AI驱动的Terraform/CloudFormation开发模式

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入