kubernetes-specialist について
kubernetes-specialistは、Kubernetesワークロードの設計、デプロイ、トラブルシューティングを支援するスキルです。開発者や運用担当者向けに、宣言的マニフェスト、セキュリティ制御、デプロイ検証を案内します。
主な機能
- 01ワークロードとアーキテクチャの計画
- 02宣言的なYAMLマニフェストのガイダンス
- 03ネットワーク、設定、ストレージ管理
- 04RBACとセキュリティの実践
- 05デプロイの健全性確認
活用シーン
- 01ヘルスチェック付きワークロードのデプロイ
- 02クラスターネットワークとストレージの設定
- 03最小権限のアクセス制御の適用
- 04ワークロードやロールアウトの問題調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill kubernetes-specialistインストール後、Claude Code で/kubernetes-specialistを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/configuration.mdcost-optimization.mdcustom-operators.mdgitops.mdhelm-charts.mdmulti-cluster.mdnetworking.mdservice-mesh.mdstorage.mdtroubleshooting.mdworkloads.md詳細
Kubernetes スペシャリスト
このスキルを使用するタイミング
- ワークロード(Deployments、StatefulSets、DaemonSets、Jobs)をデプロイするとき
- ネットワーク(Services、Ingress、NetworkPolicies)を設定するとき
- 設定(ConfigMaps、Secrets、環境変数)を管理するとき
- 永続ストレージ(PV、PVC、StorageClasses)を設定するとき
- アプリケーションのパッケージ化に Helm チャートを作成するとき
- クラスターやワークロードの問題をトラブルシューティングするとき
- セキュリティのベストプラクティスを実装するとき
基本的なワークフロー
- 要件を分析する — ワークロードの特性、スケーリングのニーズ、セキュリティ要件を把握します
- アーキテクチャを設計する — ワークロードの種類、ネットワークパターン、ストレージソリューションを選択します
- マニフェストを実装する — 適切なリソース制限とヘルスチェックを設定した宣言型 YAML を作成します
- セキュリティを確保する — RBAC、NetworkPolicies、Pod Security Standards、最小権限を適用します
- 検証する —
kubectl rollout status、kubectl get pods -w、kubectl describe pod <name>を実行して正常性を確認します。必要に応じてkubectl rollout undoでロールバックします
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| ワークロード | references/workloads.md | Deployments、StatefulSets、DaemonSets、Jobs、CronJobs |
| ネットワーク | references/networking.md | Services、Ingress、NetworkPolicies、DNS |
| 設定 | references/configuration.md | ConfigMaps、Secrets、環境変数 |
| ストレージ | references/storage.md | PV、PVC、StorageClasses、CSI ドライバー |
| Helm チャート | references/helm-charts.md | チャートの構造、値、テンプレート、フック、テスト、リポジトリ |
| トラブルシューティング | references/troubleshooting.md | kubectl debug、ログ、イベント、一般的な問題 |
| カスタムオペレーター | references/custom-operators.md | CRD、Operator SDK、controller-runtime、調整 |
| サービスメッシュ | references/service-mesh.md | Istio、Linkerd、トラフィック管理、mTLS、カナリア |
| GitOps | references/gitops.md | ArgoCD、Flux、段階的デリバリー、Sealed Secrets |
| コスト最適化 | references/cost-optimization.md | VPA、HPA の調整、スポットインスタンス、クォータ、適正サイジング |
| マルチクラスター | references/multi-cluster.md | Cluster 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 リソースを実装する際は、次の内容を提示してください。
- 適切な構造の完全な YAML マニフェスト
- 必要に応じた RBAC 設定(ServiceAccount、Role、RoleBinding)
- ネットワーク分離用の NetworkPolicy
- 設計上の決定事項とセキュリティ上の考慮事項の簡潔な説明
@jeffallan(Synergetic Solutions のプリンシパルコンサルタント)がメンテナンスしています。
コメント
Markdown 対応