关于 infra-engineer
infra-engineer 是面向基础设施工程师的实践指南,涵盖多云平台、DevOps、安全与成本管理。它通过主题参考文档、操作示例和工作流支持常见基础设施任务。
主要功能
- 01多云平台部署指南
- 02Kubernetes 与 Docker 指南
- 03CI/CD 与 GitOps 工作流
- 04FinOps 成本优化参考
- 05DevSecOps 与 IaC 资料
- 06监控与可观测性实践
适用场景
- 01规划 AWS、Azure 或 GCP 部署
- 02构建 Kubernetes 集群与容器应用
- 03设置 CI/CD 或 GitOps 流水线
- 04审查云成本与安全实践
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ samhvw8/ dotfiles --skill infra-engineer安装后在 Claude Code 中输入/infra-engineer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.examplereferences/aws-overview.mdbrowser-rendering.mdcicd-github-actions.mdcloudflare-d1-kv.mdcloudflare-platform.mdcloudflare-r2-storage.mdcloudflare-workers-advanced.mdcloudflare-workers-apis.mdcloudflare-workers-basics.mddevsecops-basics.mddocker-basics.mddocker-compose.mdfinops-basics.mdgcloud-platform.mdgcloud-services.mdkubernetes-basics.mdscripts/cloudflare_deploy.pydocker_optimize.pyrequirements.txtscripts/tests/requirements.txttest_cloudflare_deploy.pytest_docker_optimize.py详细介绍
基础设施工程技能
全面的现代基础设施工程指南,涵盖 DevOps 实践、多云平台(AWS、Azure、GCP、Cloudflare)、FinOps 成本优化和 DevSecOps 安全实践。
何时使用此技能
在以下情况使用此技能:
- DevOps:搭建 CI/CD 流水线(GitHub Actions、GitLab CI、Jenkins),实施 GitOps 工作流(ArgoCD、Flux)
- AWS:部署到 EC2、Lambda、ECS、EKS,管理 S3、RDS,使用 CloudFormation/CDK
- Azure:使用 Azure VM、App Service、AKS、Azure Functions、Storage Accounts
- GCP:管理 Compute Engine、GKE、Cloud Run、Cloud Storage、App Engine
- Cloudflare:部署 Workers、R2 存储、D1 数据库、Pages 应用
- Kubernetes:管理集群、部署、服务、入口、Helm chart、运算符
- Docker:将应用容器化、使用多阶段构建、Docker Compose、镜像仓库
- FinOps:分析云成本、优化支出、预留实例、竞价实例、调整资源规格
- DevSecOps:安全扫描(SAST/DAST)、漏洞管理、密钥管理、合规
- IaC:Terraform、CloudFormation、Pulumi、配置管理
- 监控:搭建可观测性、日志、指标、告警、分布式追踪
平台选择指南
何时使用 AWS
最适合:
- 大规模通用云计算
- 拥有 200 多项服务的成熟生态系统
- 有合规要求的企业工作负载
- 借助 AWS Outposts 实现混合云
- 广泛的第三方集成
- 高级网络和安全控制
主要服务:
- EC2(虚拟机、灵活计算)
- Lambda(无服务器函数、事件驱动)
- ECS/EKS(容器编排)
- S3(对象存储、行业标准)
- RDS(托管式关系数据库)
- DynamoDB(NoSQL、全局表)
- CloudFormation/CDK(基础设施即代码)
- IAM(身份和访问管理)
- VPC(虚拟私有云网络)
成本概况: 按需付费、预留实例(最高可享 72% 折扣)、节省计划、竞价实例(最高可享 90% 折扣)
何时使用 Azure
最适合:
- 以 Microsoft 技术为核心的组织(.NET、Active Directory)
- 混合云场景(Azure Arc、Stack)
- 与 Microsoft 签订企业协议的组织
- Windows Server 和 SQL Server 工作负载
- 与 Microsoft 365 和 Dynamics 集成
- 完备的合规认证(90 多项认证)
主要服务:
- Virtual Machines(Windows/Linux 计算)
- App Service(用于 Web 应用的 PaaS)
- AKS(托管式 Kubernetes)
- Azure Functions(无服务器计算)
- Storage Accounts(Blob、File、Queue、Table)
- SQL Database(托管式 SQL Server)
- Active Directory(身份管理)
- ARM Templates/Bicep(基础设施即代码)
成本概况: 按需付费、预留实例,Windows/SQL Server 许可证可享 Azure Hybrid Benefit
何时使用 Cloudflare
最适合:
- 面向边缘、全球分发的应用
- 超低延迟要求(<50ms)
- 配备无服务器函数的静态站点
- 无出口流量费用场景(R2 存储)
- WebSocket/实时应用(Durable Objects)
- 边缘 AI/ML(Workers AI)
主要产品:
- Workers(无服务器函数)
- R2(对象存储,兼容 S3)
- D1(支持全球复制的 SQLite 数据库)
- KV(键值存储)
- Pages(静态托管 + 函数)
- Durable Objects(有状态计算)
- Browser Rendering(无头浏览器自动化)
成本概况: 按请求付费、宽裕的免费套餐、零出口流量费用
何时使用 Kubernetes
适用场景:
- 大规模容器编排
- 拥有 10 个以上服务的微服务架构
- 多云和混合部署
- 具备自我修复和自动扩缩容能力的工作负载
- 复杂的部署策略(蓝绿部署、金丝雀发布)
- 服务网格架构(Istio、Linkerd)
- 配备 Operator 的有状态应用
主要功能:
- 声明式配置(YAML 清单)
- 自动滚动更新和回滚
- 服务发现和负载均衡
- 自我修复(重启失败的容器)
- Pod 水平自动扩缩容
- 密钥和配置管理
- 存储编排
- 批处理任务执行
托管选项: EKS(AWS)、AKS(Azure)、GKE(GCP)、托管 k8s 服务提供商
成本概况: 集群管理费用 + 节点成本(可通过使用竞价实例和集群自动扩缩容进行优化)
何时使用 Docker
适用场景:
- 保持本地开发环境一致
- 微服务架构
- 多语言技术栈应用
- 传统 VPS/VM 部署
- 作为 Kubernetes 工作负载的基础
- CI/CD 构建环境
- 数据库容器化(开发/测试)
主要功能:
- 应用隔离和可移植性
- 通过多阶段构建进行优化
- 使用 Docker Compose 管理多容器应用
- 使用卷管理实现数据持久化
- 网络配置和服务发现
- 跨平台兼容性(amd64、arm64)
- 使用 BuildKit 提升构建性能
成本概况: 仅需基础设施成本(计算 + 存储),无编排开销
何时使用 Google Cloud
适用场景:
- 企业级应用
- 数据分析和 ML 流水线(BigQuery、Vertex AI)
- 混合/多云部署
- 大规模 Kubernetes(GKE)
- 托管数据库(Cloud SQL、Firestore、Spanner)
- 复杂的 IAM 和合规要求
主要服务:
- Compute Engine(VM)
- GKE(托管 Kubernetes)
- Cloud Run(容器化无服务器服务)
- App Engine(PaaS)
- Cloud Storage(对象存储)
- Cloud SQL(托管数据库)
成本概况: 定价方式多样,提供持续使用折扣和承诺使用合约
快速入门
AWS Lambda 函数
# Install AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip && sudo ./aws/install
# Configure credentials
aws configure
# Create Lambda function with SAM
sam init --runtime python3.11
sam build && sam deploy --guided
参见:references/aws-lambda.md
AWS EKS Kubernetes 集群
# Install eksctl
brew install eksctl # or curl download
# Create cluster
eksctl create cluster \
--name my-cluster \
--region us-west-2 \
--nodegroup-name standard-workers \
--node-type t3.medium \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4
参见:references/kubernetes-basics.md
Azure 部署
# Install Azure CLI
curl -L https://aka.ms/InstallAzureCli | bash
# Login and create resources
az login
az group create --name myResourceGroup --location eastus
az webapp create --resource-group myResourceGroup \
--name myapp --runtime "NODE:18-lts"
参见:references/azure-basics.md
Cloudflare Workers
# Install Wrangler CLI
npm install -g wrangler
# Create and deploy Worker
wrangler init my-worker
cd my-worker
wrangler deploy
参见:references/cloudflare-workers-basics.md
Kubernetes 部署
# Create deployment
kubectl create deployment nginx --image=nginx:latest
kubectl expose deployment nginx --port=80 --type=LoadBalancer
# Apply from manifest
kubectl apply -f deployment.yaml
# Check status
kubectl get pods,services,deployments
参见:references/kubernetes-basics.md
Docker 容器
# Create Dockerfile
cat > Dockerfile <<EOF
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
EOF
# Build and run
docker build -t myapp .
docker run -p 3000:3000 myapp
参见:references/docker-basics.md
参考导航
AWS(Amazon Web Services)
aws-overview.md- AWS 基础知识、账户设置、IAM 基础aws-ec2.md- EC2 实例、AMI、安全组、自动扩缩容aws-lambda.md- 无服务器函数、SAM、事件源、层aws-ecs-eks.md- 容器编排、ECS 与 EKS 对比、Fargateaws-s3-rds.md- S3 存储、RDS 数据库、备份策略aws-cloudformation.md- 基础设施即代码、CDK、最佳实践aws-networking.md- VPC、子网、安全组、负载均衡器
Azure(Microsoft Azure)
azure-basics.md- Azure 基础知识、订阅、资源组azure-compute.md- VM、App Service、AKS、Azure Functionsazure-storage.md- Storage Accounts、Blob、Files、托管磁盘
Cloudflare 平台
cloudflare-platform.md- 边缘计算概览、核心组件cloudflare-workers-basics.md- 入门指南、处理程序类型、基本模式cloudflare-workers-advanced.md- 高级模式、性能、优化cloudflare-workers-apis.md- 运行时 API、绑定、集成cloudflare-r2-storage.md- R2 对象存储、S3 兼容性、最佳实践cloudflare-d1-kv.md- D1 SQLite 数据库、KV 存储、使用场景browser-rendering.md- 在 Cloudflare 上使用 Puppeteer/Playwright 进行自动化
Kubernetes 与容器编排
kubernetes-basics.md- 核心概念、Pod、部署、服务kubernetes-advanced.md- StatefulSet、运算符、自定义资源kubernetes-networking.md- Ingress、服务网格、网络策略helm-charts.md- 包管理、Chart、仓库
Docker 容器化
docker-basics.md- 核心概念、Dockerfile、镜像、容器docker-compose.md- 多容器应用、网络、卷docker-security.md- 镜像扫描、密钥、最佳实践
Google Cloud Platform
gcloud-platform.md- GCP 概览、gcloud CLI、身份验证gcloud-services.md- Compute Engine、GKE、Cloud Run、App Engine
CI/CD 与 GitOps
cicd-github-actions.md- GitHub Actions 工作流、运行器、密钥cicd-gitlab.md- GitLab CI/CD 流水线、制品、缓存gitops-argocd.md- ArgoCD 设置、应用套应用模式、同步策略gitops-flux.md- Flux 控制器、GitOps 工具包、多租户
FinOps(成本优化)
finops-basics.md- 成本优化原则、FinOps 生命周期finops-aws.md- AWS 成本优化、RI、Savings Plans、Spotfinops-azure.md- Azure 成本管理、预留实例、混合权益finops-gcp.md- GCP 成本优化、承诺使用、持续使用finops-tools.md- 成本分析工具、Kubecost、CloudHealth、Infracost
DevSecOps(安全)
devsecops-basics.md- 安全最佳实践、安全左移devsecops-scanning.md- SAST、DAST、SCA、容器扫描secrets-management.md- Vault、AWS Secrets Manager、密封密钥compliance.md- SOC2、HIPAA、PCI-DSS、审计日志
基础设施即代码
terraform-basics.md- Terraform 基础知识、提供程序、状态terraform-advanced.md- 模块、工作区、远程状态cloudformation-basics.md- CloudFormation 模板、堆栈、更改集
实用工具与脚本
scripts/cloudflare-deploy.py- 自动部署 Cloudflare Workerscripts/docker-optimize.py- 分析并优化 Dockerfilescripts/cost-analyzer.py- 云成本分析与报告scripts/security-scanner.py- 自动化安全扫描
常见工作流
多云架构
# Edge Layer: Cloudflare Workers (global routing, caching)
# Compute Layer: AWS ECS/Lambda or Azure App Service (application logic)
# Data Layer: AWS RDS or Azure SQL (persistent storage)
# CDN/Storage: Cloudflare R2 or AWS S3 (static assets)
Benefits:
- Best-of-breed services per layer
- Geographic redundancy
- Cost optimization across providers
使用 CI/CD 部署 AWS ECS
# GitHub Actions workflow
name: Deploy to ECS
on: push
jobs:
deploy:
- Build Docker image
- Push to ECR
- Update ECS task definition
- Deploy to ECS service
- Wait for deployment stabilization
使用 ArgoCD 实现 Kubernetes GitOps
# Git repository structure
/apps
/production
- deployment.yaml
- service.yaml
- ingress.yaml
/staging
- deployment.yaml
# ArgoCD syncs cluster state from Git
# Changes: Git commit → ArgoCD detects → Auto-sync to cluster
多阶段 Docker 构建
# Build stage
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production stage
FROM node:20-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
USER node
CMD ["node", "dist/server.js"]
FinOps 成本优化工作流
# 1. Discovery: Identify untagged resources
# 2. Analysis: Right-size instances (CPU/memory utilization)
# 3. Optimization:
# - Convert to reserved instances (predictable workloads)
# - Use spot instances (fault-tolerant workloads)
# - Schedule start/stop (dev environments)
# 4. Monitoring: Set budget alerts, track savings
# 5. Governance: Enforce tagging policies
DevSecOps 安全流水线
# 1. Code Commit
# 2. SAST Scan: SonarQube, Semgrep (static code analysis)
# 3. Dependency Check: Snyk, Trivy (vulnerability scanning)
# 4. Build: Docker image
# 5. Container Scan: Trivy, Grype (image vulnerabilities)
# 6. DAST Scan: OWASP ZAP (runtime security testing)
# 7. Deploy: Only if all scans pass
# 8. Runtime Protection: Falco, AWS GuardDuty
Terraform 基础设施部署
# 1. Write: Define infrastructure in .tf files
# 2. Init: terraform init (download providers)
# 3. Plan: terraform plan (preview changes)
# 4. Apply: terraform apply (create/update resources)
# 5. State: Store state in S3 with DynamoDB locking
# 6. Modules: Reuse common patterns across environments
最佳实践
DevOps
- CI/CD:自动化测试和部署,使用功能开关逐步发布
- GitOps:声明式基础设施、将 Git 作为唯一事实来源、自动同步
- 监控:实现可观测性(日志、指标、追踪),设置告警
- 事件管理:运行手册、事后复盘、无责文化
- 自动化:基础设施即代码、配置管理、自助服务平台
安全(DevSecOps)
- 安全左移:在流水线早期进行安全扫描(SAST、依赖项检查)
- 密钥管理:使用 Vault、AWS Secrets Manager 或密封密钥(绝不存放在代码或 Git 中)
- 容器安全:以非 root 用户运行、使用精简基础镜像、定期扫描
- 网络安全:零信任架构、服务网格、网络策略
- 访问控制:遵循最小权限原则的 IAM、MFA、临时凭证
- 合规性:审计日志、静态与传输加密、定期安全审查
- 运行时防护:安全监控、入侵检测、自动响应
成本优化(FinOps)
- 标记:强制为资源添加标记,以便分摊和跟踪成本
- 调整规格:分析资源利用率,缩减配置过高的资源
- 预留容量:为工作负载可预测的场景购买 RI/Savings Plans(最高可享 72% 折扣)
- Spot/可抢占实例:用于容错工作负载(最高可享 90% 折扣)
- 计划调度:非工作时间自动停止开发/测试环境
- 存储优化:设置生命周期策略,将数据归档到成本更低的存储层,并删除孤立资源
- 监控:预算警报、成本异常检测、成本分摊/展示
- 治理:为高成本资源设置审批工作流,管理配额
Kubernetes
- 资源管理:设置请求和限制,使用水平 Pod 自动扩缩
- 高可用性:多可用区集群、Pod 中断预算、反亲和规则
- 安全性:RBAC、Pod 安全策略、网络策略、准入控制器
- 可观测性:Prometheus 指标、分布式跟踪、集中式日志记录
- GitOps:使用 ArgoCD/Flux 进行声明式部署,自动纠正配置偏差
性能
- 计算:自动扩缩、负载均衡、使用多区域以降低延迟
- 缓存:CDN、内存缓存(Redis/Memcached)、边缘计算
- 存储:选择合适的存储层(SSD 或 HDD)、启用缓存,并使用 CDN 提供静态资源
- 容器:多阶段构建、精简镜像、层缓存
- 数据库:连接池、只读副本、查询优化、索引
开发
- 本地开发:使用 Docker Compose 确保环境一致,并使用开发容器
- 测试:在 CI/CD 流水线中运行单元、集成和端到端测试
- 基础设施即代码:使用 Terraform/CloudFormation 确保可重复性
- 文档:架构图、运行手册、API 文档
- 版本控制:使用 Git 管理代码和基础设施,并采用语义化版本
决策矩阵
| 需求 | 选择 |
|---|---|
| 计算 | |
| 全球延迟低于 50ms | Cloudflare Workers |
| 无服务器函数(AWS 生态系统) | AWS Lambda |
| 无服务器函数(Azure 生态系统) | Azure Functions |
| 容器化工作负载(托管式) | AWS ECS/Fargate、Azure AKS、GCP Cloud Run |
| 大规模 Kubernetes | AWS EKS、Azure AKS、GCP GKE |
| 完全掌控的虚拟机 | AWS EC2、Azure VMs、GCP Compute Engine |
| 存储 | |
| 对象存储(兼容 S3) | AWS S3、Cloudflare R2(零出口流量费用)、Azure Blob |
| 虚拟机块存储 | AWS EBS、Azure Managed Disks、GCP Persistent Disk |
| 文件存储(NFS/SMB) | AWS EFS、Azure Files、GCP Filestore |
| 数据库 | |
| 托管 SQL(AWS) | AWS RDS(PostgreSQL、MySQL、SQL Server) |
| 托管 SQL(Azure) | Azure SQL Database |
| 托管 SQL(GCP) | Cloud SQL |
| NoSQL 键值存储 | AWS DynamoDB、Azure Cosmos DB、Cloudflare KV |
| 全球 SQL(边缘读取) | Cloudflare D1、AWS Aurora Global |
| CI/CD 与 GitOps | |
| 与 GitHub 集成的 CI/CD | GitHub Actions |
| 自托管 CI/CD | GitLab CI/CD、Jenkins |
| Kubernetes GitOps | ArgoCD、Flux |
| 成本优化 | |
| 工作负载可预测 | Reserved Instances、Savings Plans |
| 容错工作负载 | Spot Instances(AWS)、Preemptible VMs(GCP) |
| 开发/测试环境 | 自动调度、预算警报 |
| 安全性 | |
| 密钥管理 | HashiCorp Vault、AWS Secrets Manager、Azure Key Vault |
| 容器扫描 | Trivy、Snyk、AWS ECR scanning |
| SAST/DAST | SonarQube、Semgrep、OWASP ZAP |
| 特殊用例 | |
| 静态站点 + 边缘函数 | Cloudflare Pages、AWS Amplify |
| WebSocket/实时通信 | Cloudflare Durable Objects、AWS API Gateway WebSocket |
| ML/AI 流水线 | AWS SageMaker、GCP Vertex AI、Azure ML |
| 浏览器自动化 | Cloudflare Browser Rendering、AWS Lambda + Puppeteer |
资源
云服务提供商
- AWS 文档: https://docs.aws.amazon.com
- Azure 文档: https://docs.microsoft.com/azure
- GCP 文档: https://cloud.google.com/docs
- Cloudflare 文档: https://developers.cloudflare.com
容器与编排
- Docker 文档: https://docs.docker.com
- Kubernetes 文档: https://kubernetes.io/docs
- Helm: https://helm.sh/docs
CI/CD 与 GitOps
- GitHub Actions: https://docs.github.com/actions
- GitLab CI: https://docs.gitlab.com/ee/ci/
- ArgoCD: https://argo-cd.readthedocs.io
- Flux: https://fluxcd.io/docs
基础设施即代码
- Terraform: https://developer.hashicorp.com/terraform
- AWS CDK: https://docs.aws.amazon.com/cdk
- Pulumi: https://www.pulumi.com/docs
安全与合规
- OWASP: https://owasp.org
- CIS 基准: https://www.cisecurity.org/cis-benchmarks
- HashiCorp Vault: https://developer.hashicorp.com/vault
FinOps 与成本优化
- FinOps Foundation: https://www.finops.org
- AWS 成本优化: https://aws.amazon.com/pricing/cost-optimization
- Kubecost: https://www.kubecost.com
实施清单
AWS Lambda 部署
- 安装 AWS CLI 和 SAM CLI
- 配置 AWS 凭证(访问密钥、秘密密钥)
- 使用 SAM 模板创建 Lambda 函数
- 配置 IAM 角色和策略
- 使用
sam local invoke在本地测试 - 使用
sam deploy部署 - 设置 CloudWatch 监控和警报
AWS EKS Kubernetes 集群
- 安装 kubectl、eksctl、aws-cli
- 配置 AWS 凭证
- 使用 eksctl 创建 EKS 集群
- 配置 kubectl 上下文
- 安装集群自动扩缩器
- 设置 Helm 进行包管理
- 使用 kubectl/Helm 部署应用
- 配置入口控制器(ALB/NGINX)
Azure 部署
- 安装 Azure CLI
- 使用
az login登录 - 创建资源组
- 部署 App Service 或 AKS
- 配置持续部署
- 使用 Application Insights 设置监控
在任意云平台上运行 Kubernetes
- 安装 kubectl 和 helm
- 连接到集群(更新 kubeconfig)
- 为各环境创建命名空间
- 应用 RBAC 策略
- 部署应用(部署、服务)
- 配置入口以供外部访问
- 设置监控(Prometheus、Grafana)
- 使用 ArgoCD/Flux 实施 GitOps
CI/CD 流水线(GitHub Actions)
- 创建 .github/workflows/deploy.yml
- 配置机密(云凭证、API 密钥)
- 添加构建和测试作业
- 添加容器构建并推送到镜像仓库
- 添加部署到云平台的作业
- 设置分支保护规则
- 启用状态检查和通知
FinOps 成本优化
- 实施资源标记策略
- 启用成本分配标签
- 设置预算警报
- 分析资源利用率(CloudWatch、Azure Monitor)
- 找出调整资源规格的机会
- 为负载可预测的工作负载购买预留实例
- 配置自动扩缩和调度
- 定期进行成本审查和优化
DevSecOps 安全
- 在 CI/CD 中添加 SAST 扫描(SonarQube、Semgrep)
- 添加依赖项扫描(Snyk、Trivy)
- 实施容器镜像扫描
- 设置机密管理(Vault、云服务提供商)
- 配置安全组和网络策略
- 启用审计日志记录
- 实施安全监控和警报
- 定期进行漏洞评估
Cloudflare Workers
- 安装 Wrangler CLI
- 创建 Worker 项目
- 配置 wrangler.toml(绑定、路由)
- 使用
wrangler dev在本地测试 - 使用
wrangler deploy部署
Docker
- 编写采用多阶段构建的 Dockerfile
- 创建 .dockerignore 文件
- 在本地测试构建
- 推送到镜像仓库(ECR、ACR、GCR、Docker Hub)
- 部署到目标平台