mcpField
K
kubernetes-specialist

kubernetes-specialist

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

kubernetes-specialist について

Kubernetes のワークロード設計、デプロイ、セキュリティ、トラブルシューティングを支援するスキルです。宣言的なマニフェストの指針に加え、分野別リファレンスと検証手順を備えています。

主な機能

  1. 01ワークロードとアーキテクチャの計画
  2. 02宣言的な YAML マニフェストの指針
  3. 03ネットワーク、ストレージ、Helm の資料
  4. 04セキュリティと最小権限の実践
  5. 05デプロイの健全性検証

活用シーン

  1. 01Kubernetes ワークロードのデプロイ計画
  2. 02安全なマニフェストや Helm チャートの作成
  3. 03クラスターやワークロードの障害調査

インストール

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

$npx skills add https://github.com/pedronauck/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 プローブを含める
  • 機密データにはシークレットを使用する(認証情報をハードコードしない)
  • 最小権限の RBAC 権限を適用する
  • ネットワーク分離のために NetworkPolicies を実装する
  • 論理的な分離のために名前空間を使用する
  • リソースに一貫性のあるラベルを付けて整理する
  • 構成上の判断をアノテーションに記録する
必ず避けること
  • リソース制限を設定せずに本番環境へデプロイする
  • シークレットを ConfigMaps や平文の環境変数に保存する
  • アプリケーションポッドにデフォルトの 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. 設計上の判断とセキュリティ上の考慮事項の簡単な説明

コメント