mcpField
K
kubernetes-deploying

kubernetes-deploying

github.com/spencerpaulyクラウド・DevOps868372 回インストール13 週間前に更新
リポジトリ

kubernetes-deploying について

Kubernetes でアプリケーションをデプロイ、管理するためのスキルです。基本リソース、リリース戦略、ヘルスチェック、自動スケーリング、運用上の実践方法を扱います。

主な機能

  1. 01Deployment、Service、Ingress のマニフェスト
  2. 02ConfigMap と Secret の指針
  3. 03ローリング、ブルーグリーン、カナリアリリース
  4. 04Liveness と Readiness プローブ
  5. 05Horizontal Pod Autoscaler の設定
  6. 06リソースと Namespace の運用

活用シーン

  1. 01Kubernetes アプリのマニフェスト作成
  2. 02リリース戦略の選択
  3. 03ワークロードのヘルスチェック設定
  4. 04HPA によるワークロードのスケーリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/spencerpauly/awesome-cursor-skills --skill kubernetes-deploying

インストール後、Claude Code で/kubernetes-deployingを入力して読み込まれたか確認します。

詳細

Kubernetes のデプロイ

Kubernetes でアプリケーションをデプロイおよび管理します。

コアリソース

Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-registry/my-app:v1.2.3
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /healthz
              port: 3000
            initialDelaySeconds: 10
            periodSeconds: 30
          readinessProbe:
            httpGet:
              path: /ready
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
          env:
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: my-app-secrets
                  key: database-url
            - name: NODE_ENV
              value: production
Service
apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 3000
  type: ClusterIP
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts:
        - app.example.com
      secretName: my-app-tls
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app
                port:
                  number: 80
ConfigMap と Secret
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  LOG_LEVEL: info
  FEATURE_FLAGS: '{"darkMode": true}'
---
apiVersion: v1
kind: Secret
metadata:
  name: my-app-secrets
type: Opaque
stringData:
  database-url: postgresql://user:pass@host:5432/db
  api-key: sk-abc123

よく使うコマンド

# Apply manifests
kubectl apply -f k8s/

# Check deployment status
kubectl rollout status deployment/my-app

# View pods
kubectl get pods -l app=my-app

# View logs
kubectl logs -f deployment/my-app

# Execute into a pod
kubectl exec -it <pod-name> -- /bin/sh

# Scale
kubectl scale deployment/my-app --replicas=5

# Rollback
kubectl rollout undo deployment/my-app

# Port forward for local debugging
kubectl port-forward svc/my-app 3000:80

デプロイ戦略

戦略方法使用する場面
ローリングアップデート(デフォルト)Pod を一度に 1 つずつ置き換えますほとんどのデプロイ
再作成すべての古い Pod を停止して、新しい Pod を起動します2 つのバージョンを同時に実行できない場合
ブルーグリーン2 つの完全な環境を実行し、トラフィックを切り替えます即時ロールバックが必要な場合
カナリアトラフィックの一部を新しいバージョンにルーティングしますリスクの高い変更

ローリングアップデートの設定:

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

ヘルスチェック

必ず両方を設定してください:

  • livenessProbe:「プロセスは正常ですか?」— 失敗した場合、Pod を再起動します
  • readinessProbe:「トラフィックを処理できますか?」— 失敗した場合、サービスから除外します

一般的なプローブの種類:

  • httpGet:HTTP エンドポイントにアクセスします(最も一般的)
  • exec:コンテナ内でコマンドを実行します
  • tcpSocket:ポートが開いているか確認します

Horizontal Pod Autoscaler

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

ヒント

  • リソースのリクエストと上限は必ず設定してください
  • 名前空間を使用して環境(dev、staging、prod)を分離してください
  • Git にコミットする YAML にシークレットを平文で記述しないでください — Sealed Secrets、SOPS、または外部のシークレットマネージャーを使用してください
  • イメージには特定のバージョンのタグを付けてください。本番環境では :latest を使用しないでください
  • 高可用性ワークロードには PodDisruptionBudget を設定してください

コメント