mcpField
K
kubernetes-specialist

kubernetes-specialist

github.com/jeffallanクラウド・DevOps12.1k14.2k 回インストール今日更新
リポジトリ

kubernetes-specialist について

kubernetes-specialistは、Kubernetesワークロードの設計、デプロイ、トラブルシューティングを支援するスキルです。開発者や運用担当者向けに、宣言的マニフェスト、セキュリティ制御、デプロイ検証を案内します。

主な機能

  1. 01ワークロードとアーキテクチャの計画
  2. 02宣言的なYAMLマニフェストのガイダンス
  3. 03ネットワーク、設定、ストレージ管理
  4. 04RBACとセキュリティの実践
  5. 05デプロイの健全性確認

活用シーン

  1. 01ヘルスチェック付きワークロードのデプロイ
  2. 02クラスターネットワークとストレージの設定
  3. 03最小権限のアクセス制御の適用
  4. 04ワークロードやロールアウトの問題調査

インストール

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

$npx skills add https://github.com/jeffallan/claude-skills --skill kubernetes-specialist

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
configuration.md
cost-optimization.md
custom-operators.md
gitops.md
helm-charts.md
multi-cluster.md
networking.md
service-mesh.md
storage.md
troubleshooting.md
workloads.md

詳細

Kubernetes スペシャリスト

このスキルを使用するタイミング

  • ワークロード(Deployments、StatefulSets、DaemonSets、Jobs)をデプロイするとき
  • ネットワーク(Services、Ingress、NetworkPolicies)を設定するとき
  • 設定(ConfigMaps、Secrets、環境変数)を管理するとき
  • 永続ストレージ(PV、PVC、StorageClasses)を設定するとき
  • アプリケーションのパッケージ化に Helm チャートを作成するとき
  • クラスターやワークロードの問題をトラブルシューティングするとき
  • セキュリティのベストプラクティスを実装するとき

基本的なワークフロー

  1. 要件を分析する — ワークロードの特性、スケーリングのニーズ、セキュリティ要件を把握します
  2. アーキテクチャを設計する — ワークロードの種類、ネットワークパターン、ストレージソリューションを選択します
  3. マニフェストを実装する — 適切なリソース制限とヘルスチェックを設定した宣言型 YAML を作成します
  4. セキュリティを確保する — RBAC、NetworkPolicies、Pod Security Standards、最小権限を適用します
  5. 検証する — kubectl rollout status、kubectl get pods -w、kubectl describe pod <name> を実行して正常性を確認します。必要に応じて kubectl rollout undo でロールバックします

リファレンスガイド

状況に応じて詳細なガイダンスを読み込みます。

トピックリファレンス読み込むタイミング
ワークロードreferences/workloads.mdDeployments、StatefulSets、DaemonSets、Jobs、CronJobs
ネットワークreferences/networking.mdServices、Ingress、NetworkPolicies、DNS
設定references/configuration.mdConfigMaps、Secrets、環境変数
ストレージreferences/storage.mdPV、PVC、StorageClasses、CSI ドライバー
Helm チャートreferences/helm-charts.mdチャートの構造、値、テンプレート、フック、テスト、リポジトリ
トラブルシューティングreferences/troubleshooting.mdkubectl debug、ログ、イベント、一般的な問題
カスタムオペレーターreferences/custom-operators.mdCRD、Operator SDK、controller-runtime、調整
サービスメッシュreferences/service-mesh.mdIstio、Linkerd、トラフィック管理、mTLS、カナリア
GitOpsreferences/gitops.mdArgoCD、Flux、段階的デリバリー、Sealed Secrets
コスト最適化references/cost-optimization.mdVPA、HPA の調整、スポットインスタンス、クォータ、適正サイジング
マルチクラスターreferences/multi-cluster.mdCluster API、フェデレーション、クラスター間ネットワーク、DR

制約事項

必ず行うこと
  • 宣言型 YAML マニフェストを使用します(命令型の kubectl コマンドは避けます)
  • すべてのコンテナにリソースのリクエストと制限を設定します
  • liveness プローブと readiness プローブを含めます
  • 機密データには Secrets を使用します(認証情報をハードコードしないでください)
  • 最小権限の RBAC 権限を適用します
  • ネットワークを分離するために NetworkPolicies を実装します
  • 論理的に分離するために名前空間を使用します
  • リソースを一貫したラベルで整理します
  • 設定に関する決定をアノテーションに記録します
必ず避けること
  • リソース制限を設定せずに本番環境へデプロイする
  • Secrets を ConfigMaps に保存したり、プレーンな環境変数として保存したりする
  • アプリケーション Pod にデフォルトの ServiceAccount を使用する
  • 制限のないネットワークアクセス(すべてを許可するデフォルト設定)を許可する
  • 正当な理由なくコンテナを root として実行する
  • ヘルスチェック(liveness/readiness プローブ)を省略する
  • 本番環境のイメージに latest タグを使用する
  • 不要なポートやサービスを公開する

一般的な YAML パターン

リソース制限、プローブ、セキュリティコンテキストを設定した Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: my-namespace
  labels:
    app: my-app
    version: "1.2.3"
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
        version: "1.2.3"
    spec:
      serviceAccountName: my-app-sa   # never use default SA
      securityContext:
        runAsNonRoot: true
        runAsUser: 1000
        fsGroup: 2000
      containers:
        - name: my-app
          image: my-registry/my-app:1.2.3   # never use latest
          ports:
            - containerPort: 8080
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            httpGet:
              path: /ready
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 10
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop: ["ALL"]
          envFrom:
            - secretRef:
                name: my-app-secret   # pull credentials from Secret, not ConfigMap
最小限の RBAC(最小権限)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-app-sa
  namespace: my-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-app-role
  namespace: my-namespace
rules:
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get", "list"]   # grant only what is needed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-app-rolebinding
  namespace: my-namespace
subjects:
  - kind: ServiceAccount
    name: my-app-sa
    namespace: my-namespace
roleRef:
  kind: Role
  name: my-app-role
  apiGroup: rbac.authorization.k8s.io
NetworkPolicy(デフォルトで拒否し、明示的に許可)
# Deny all ingress and egress by default
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: my-namespace
spec:
  podSelector: {}
  policyTypes: ["Ingress", "Egress"]
---
# Allow only specific traffic
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-my-app
  namespace: my-namespace
spec:
  podSelector:
    matchLabels:
      app: my-app
  policyTypes: ["Ingress"]
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: frontend
      ports:
        - protocol: TCP
          port: 8080

検証コマンド

デプロイ後、正常性とセキュリティ態勢を確認します。

# Watch rollout complete
kubectl rollout status deployment/my-app -n my-namespace

# Stream pod events to catch crash loops or image pull errors
kubectl get pods -n my-namespace -w

# Inspect a specific pod for failures
kubectl describe pod <pod-name> -n my-namespace

# Check container logs
kubectl logs <pod-name> -n my-namespace --previous   # use --previous for crashed containers

# Verify resource usage vs. limits
kubectl top pods -n my-namespace

# Audit RBAC permissions for a service account
kubectl auth can-i --list --as=system:serviceaccount:my-namespace:my-app-sa

# Roll back a failed deployment
kubectl rollout undo deployment/my-app -n my-namespace

出力テンプレート

Kubernetes リソースを実装する際は、次の内容を提示してください。

  1. 適切な構造の完全な YAML マニフェスト
  2. 必要に応じた RBAC 設定(ServiceAccount、Role、RoleBinding)
  3. ネットワーク分離用の NetworkPolicy
  4. 設計上の決定事項とセキュリティ上の考慮事項の簡潔な説明

@jeffallan(Synergetic Solutions のプリンシパルコンサルタント)がメンテナンスしています。

ドキュメント

コメント