关于 deployment-automation
用于规划跨开发、预发布和生产环境的自动化部署技能,涵盖 Kubernetes、基础设施配置、发布策略与回滚实践。
主要功能
- 01多环境部署流水线
- 02Kubernetes 与基础设施部署
- 03蓝绿发布与金丝雀发布
- 04自动回滚流程
- 05部署健康检查与审批
适用场景
- 01将变更从预发布环境推向生产
- 02规划金丝雀或蓝绿切换
- 03自动化基础设施配置
- 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