mcpField

deployment-automation

github.com/eddiebe147云与 DevOps35 次安装
代码仓库

关于 deployment-automation

用于规划跨开发、预发布和生产环境的自动化部署技能,涵盖 Kubernetes、基础设施配置、发布策略与回滚实践。

主要功能

  1. 01多环境部署流水线
  2. 02Kubernetes 与基础设施部署
  3. 03蓝绿发布与金丝雀发布
  4. 04自动回滚流程
  5. 05部署健康检查与审批

适用场景

  1. 01将变更从预发布环境推向生产
  2. 02规划金丝雀或蓝绿切换
  3. 03自动化基础设施配置
  4. 04准备回滚方案与部署检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/eddiebe147/claude-settings --skill deployment-automation

安装后在 Claude Code 中输入/deployment-automation确认已加载。

详细介绍

部署自动化

概述

建立自动化部署流水线,以尽量减少人工干预和风险的方式,安全可靠地将应用程序部署到开发、预发布和生产环境。

适用场景

  • 持续部署到 Kubernetes
  • 基础设施即代码部署
  • 多环境晋级
  • 蓝绿部署策略
  • 金丝雀发布管理
  • 基础设施配置
  • 自动回滚流程

实现示例

1. Helm 部署 Chart
# helm/Chart.yaml
apiVersion: v2
name: myapp
description: My awesome application
type: application
version: 1.0.0

# helm/values.yaml
replicaCount: 3
image:
  repository: ghcr.io/myorg/myapp
  pullPolicy: IfNotPresent
  tag: "1.0.0"
service:
  type: ClusterIP
  port: 80
  targetPort: 3000
resources:
  requests:
    memory: "256Mi"
    cpu: "250m"
  limits:
    memory: "512Mi"
    cpu: "500m"
autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
2. GitHub Actions 部署工作流
# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]
  workflow_dispatch:
    inputs:
      environment:
        description: 'Environment to deploy to'
        required: true
        default: 'staging'
        type: choice
        options:
          - staging
          - production

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment:
      name: ${{ github.event.inputs.environment || 'staging' }}
    permissions:
      contents: read
      packages: read

    steps:
      - uses: actions/checkout@v3

      - name: Determine target environment
        id: env
        run: |
          if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
            echo "environment=staging" >> $GITHUB_OUTPUT
          else
            echo "environment=staging" >> $GITHUB_OUTPUT
          fi

      - name: Setup kubectl
        uses: azure/setup-kubectl@v3
        with:
          version: 'latest'

      - name: Configure kubectl
        run: |
          mkdir -p $HOME/.kube
          echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > $HOME/.kube/config
          chmod 600 $HOME/.kube/config

      - name: Deploy with Helm
        run: |
          helm repo add myrepo ${{ secrets.HELM_REPO_URL }}
          helm repo update

          helm upgrade --install myapp myrepo/myapp \
            --namespace ${{ steps.env.outputs.environment }} \
            --create-namespace \
            --values helm/values-${{ steps.env.outputs.environment }}.yaml \
            --set image.tag=${{ github.sha }} \
            --wait \
            --timeout 5m

      - name: Verify deployment
        run: |
          kubectl rollout status deployment/myapp \
            -n ${{ steps.env.outputs.environment }} \
            --timeout=5m
3. ArgoCD 部署
# argocd/myapp-app.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
  namespace: argocd
spec:
  project: default

  source:
    repoURL: https://github.com/myorg/helm-charts
    targetRevision: HEAD
    path: myapp
    helm:
      releaseName: myapp
      values: |
        image:
          tag: v1.0.0

  destination:
    server: https://kubernetes.default.svc
    namespace: production

  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
    retry:
      limit: 5
      backoff:
        duration: 5s
        factor: 2
        maxDuration: 3m
5. 蓝绿部署
#!/bin/bash
# Deploy green, run tests, switch traffic
helm upgrade --install myapp-green ./chart --set version=v2.0.0 --wait
kubectl run smoke-test --image=postman/newman --rm -- run tests/smoke.json

if [ $? -eq 0 ]; then
  kubectl patch service myapp -p '{"spec":{"selector":{"version":"v2.0.0"}}}'
  echo "✅ Traffic switched to green"
else
  helm uninstall myapp-green
  exit 1
fi

最佳实践

✅ 应该
  • 使用基础设施即代码(Terraform、Helm)
  • 实施 GitOps 工作流
  • 使用蓝绿部署
  • 实施金丝雀发布
  • 自动执行回滚流程
  • 首先在预发布环境中测试部署
  • 使用功能开关逐步推出
  • 监控部署状态
  • 记录部署流程
  • 为生产环境设置审批关卡
  • 对基础设施代码进行版本管理
  • 保持环境一致
❌ 不应该
  • 直接部署到生产环境
  • 跳过预发布环境测试
  • 使用手动部署脚本
  • 部署时不准备回滚方案
  • 忽略健康检查
  • 使用硬编码配置
  • 在关键时段部署
  • 跳过部署前验证
  • 忘记在部署前备份
  • 从本地计算机部署

部署清单

# Pre-deployment verification
- [ ] Run tests in staging
- [ ] Verify database migrations
- [ ] Check infrastructure capacity
- [ ] Review changelog
- [ ] Verify rollback plan
- [ ] Notify stakeholders
- [ ] Monitor error rates
- [ ] Prepare rollback script

资源

评论

支持 Markdown