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 への継続的デプロイ
- Infrastructure as Code によるデプロイ
- 複数環境へのプロモーション
- ブルーグリーンデプロイ戦略
- カナリアリリースの管理
- インフラストラクチャのプロビジョニング
- ロールバック手順の自動化
実装例
1. Helm デプロイチャート
# 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
ベストプラクティス
✅ 推奨事項
- Infrastructure as Code(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 対応