- Claude Codeを使えばKubernetesマニフェストの生成・修正・デバッグを自然言語で実行可能
- Helm Chart作成やkustomize設定もプロンプト一つで自動生成できる
- GitHub Actions連携でCI/CDパイプラインの構築まで一貫して自動化できる
「Kubernetesのマニフェストファイルが複雑すぎて手が止まる」「Helm Chartの作り方がわからない」「本番環境へのデプロイパイプラインを効率化したい」
Claude Codeは、Kubernetesのデプロイ作業を自然言語で自動化できるAIコーディングエージェントです。YAMLマニフェストの生成からHelm Chart管理、CI/CDパイプライン構築まで、K8sに関するあらゆる作業を劇的に効率化します。
この記事では、Claude Code完全攻略シリーズEp.40として、Kubernetes環境でのClaude Code活用術を体系的に解説します。

なぜClaude Code × Kubernetesなのか
Kubernetesは強力なコンテナオーケストレーションプラットフォームですが、学習コストの高さが課題です。SES案件でK8s環境を扱うエンジニアにとって、以下の悩みは日常的でしょう。
| 課題 | 従来のアプローチ | Claude Codeを使った場合 |
|---|---|---|
| マニフェスト作成 | 公式ドキュメントを参照しながら手書き | 自然言語で要件を伝えるだけ |
| 設定ミスの検出 | kubectl apply --dry-run で手動確認 | AIが設定値の整合性を自動チェック |
| Helm Chart作成 | テンプレートの構文を覚える必要 | ディレクトリ構造ごと自動生成 |
| トラブルシューティング | ログを読みながら原因を推測 | エラーメッセージを貼り付けるだけ |
Claude Codeの強みは、コードベース全体を理解した上で最適なK8s設定を提案できる点です。アプリケーションのDockerfile、環境変数、依存サービスを考慮した上で、実戦的なマニフェストを生成します。
Kubernetesマニフェストの自動生成
基本的なDeployment + Service
まずは最もシンプルなパターンから始めましょう。Claude Codeに以下のようにプロンプトを投げるだけで、本番品質のマニフェストが生成されます。
claude "このプロジェクトのDockerfileを見て、Kubernetes用のDeploymentとServiceマニフェストを作成して。レプリカ数3、ヘルスチェック付きで"
Claude Codeが生成するマニフェストの例:
# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ses-api-server
labels:
app: ses-api
environment: production
spec:
replicas: 3
selector:
matchLabels:
app: ses-api
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: ses-api
spec:
containers:
- name: ses-api
image: gcr.io/ses-base/api-server:latest
ports:
- containerPort: 3000
protocol: TCP
env:
- name: NODE_ENV
value: "production"
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: ses-db-credentials
key: url
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
startupProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 30
---
# k8s/service.yaml
apiVersion: v1
kind: Service
metadata:
name: ses-api-service
labels:
app: ses-api
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 3000
protocol: TCP
selector:
app: ses-api
注目すべきポイントは以下の通りです。
- 3種類のProbe設定: liveness・readiness・startupの全てが適切に設定されている
- リソース制限: requests/limitsが実践的な値で設定されている
- RollingUpdate戦略:
maxUnavailable: 0でダウンタイムゼロのデプロイを保証 - Secret参照: データベースURLをSecretから安全に読み込む設計
Namespace・ConfigMap・Secretの一括生成
実際のプロジェクトでは、名前空間の分離や設定管理も必要です。
claude "本番環境用のnamespace、ConfigMap、Secretのマニフェストも追加して。環境変数は.envファイルから読み取って適切に分類して"
Claude Codeはプロジェクトの.envファイルを読み取り、機密情報(APIキー、DB接続文字列など)はSecret、それ以外はConfigMapに自動分類します。
# k8s/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: ses-production
labels:
environment: production
team: ses-base
---
# k8s/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: ses-api-config
namespace: ses-production
data:
LOG_LEVEL: "info"
API_TIMEOUT: "30000"
CACHE_TTL: "3600"
CORS_ORIGIN: "https://ses-base.com"
---
# k8s/secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ses-api-secrets
namespace: ses-production
type: Opaque
stringData:
DATABASE_URL: "${DATABASE_URL}"
REDIS_URL: "${REDIS_URL}"
JWT_SECRET: "${JWT_SECRET}"
Helm Chart自動生成と管理
既存マニフェストからのHelm Chart変換
すでにKubernetesマニフェストがある場合、Claude Codeで一括変換できます。
claude "k8sディレクトリの既存マニフェストをHelm Chartに変換して。values.yamlで環境ごとに設定を切り替えられるようにして"
Claude Codeは以下のようなHelm Chart構造を自動生成します。
ses-api-chart/
├── Chart.yaml
├── values.yaml
├── values-staging.yaml
├── values-production.yaml
├── templates/
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ └── NOTES.txt
└── .helmignore
values.yamlのテンプレート例:
# values.yaml
replicaCount: 2
image:
repository: gcr.io/ses-base/api-server
tag: "latest"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
targetPort: 3000
ingress:
enabled: true
className: nginx
hosts:
- host: api.ses-base.com
paths:
- path: /
pathType: Prefix
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
targetMemoryUtilizationPercentage: 80
env:
LOG_LEVEL: "info"
API_TIMEOUT: "30000"
values.yamlの環境別オーバーライド
claude "ステージング環境用のvaluesファイルを作成して。レプリカ数1、リソースは本番の半分、オートスケーリングは無効で"
# values-staging.yaml
replicaCount: 1
image:
tag: "staging"
resources:
requests:
cpu: "125m"
memory: "128Mi"
limits:
cpu: "250m"
memory: "256Mi"
autoscaling:
enabled: false
ingress:
hosts:
- host: staging-api.ses-base.com
paths:
- path: /
pathType: Prefix
kustomizeによる環境管理
Helmの代替として人気の高いkustomizeも、Claude Codeで簡単に構築できます。
claude "k8sマニフェストにkustomize構成を追加して。base/overlays構成で、dev・staging・productionの3環境を管理できるようにして"
k8s/
├── base/
│ ├── kustomization.yaml
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
├── overlays/
│ ├── dev/
│ │ ├── kustomization.yaml
│ │ └── patches/
│ │ └── replica-count.yaml
│ ├── staging/
│ │ ├── kustomization.yaml
│ │ └── patches/
│ │ ├── replica-count.yaml
│ │ └── resource-limits.yaml
│ └── production/
│ ├── kustomization.yaml
│ └── patches/
│ ├── replica-count.yaml
│ ├── resource-limits.yaml
│ └── hpa.yaml
base/kustomization.yamlの例:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- configmap.yaml
commonLabels:
app: ses-api
managed-by: kustomize
production/kustomization.yamlの例:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ses-production
resources:
- ../../base
patches:
- path: patches/replica-count.yaml
- path: patches/resource-limits.yaml
- path: patches/hpa.yaml
configMapGenerator:
- name: ses-api-config
behavior: merge
literals:
- LOG_LEVEL=warn
- CACHE_TTL=7200
CI/CDパイプラインの構築
GitHub Actions × kubectl
Claude Codeを使って、GitHub Actionsのワークフローファイルも自動生成できます。
claude "GitHub Actionsでこのプロジェクトのビルド→Docker push→K8sデプロイの一連のCI/CDパイプラインを作成して。GKE環境向けで"
# .github/workflows/deploy.yaml
name: Build and Deploy to GKE
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
PROJECT_ID: ses-base-prod
GKE_CLUSTER: ses-cluster
GKE_ZONE: asia-northeast1-a
IMAGE: gcr.io/ses-base-prod/api-server
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install and Test
run: |
npm ci
npm run test
npm run lint
build-image:
needs: build-and-test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
outputs:
image-tag: ${{ steps.meta.outputs.tags }}
steps:
- uses: actions/checkout@v4
- name: Auth to Google Cloud
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Setup Cloud SDK
uses: google-github-actions/setup-gcloud@v2
- name: Configure Docker
run: gcloud auth configure-docker
- name: Build and Push
id: meta
run: |
IMAGE_TAG="${IMAGE}:${{ github.sha }}"
docker build -t ${IMAGE_TAG} -t ${IMAGE}:latest .
docker push ${IMAGE_TAG}
docker push ${IMAGE}:latest
echo "tags=${IMAGE_TAG}" >> $GITHUB_OUTPUT
deploy:
needs: build-image
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- name: Auth to Google Cloud
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Get GKE Credentials
uses: google-github-actions/get-gke-credentials@v2
with:
cluster_name: ${{ env.GKE_CLUSTER }}
location: ${{ env.GKE_ZONE }}
- name: Deploy to GKE
run: |
kubectl set image deployment/ses-api-server \
ses-api=${IMAGE}:${{ github.sha }} \
-n ses-production
kubectl rollout status deployment/ses-api-server \
-n ses-production --timeout=300s
ArgoCD連携
GitOps方式のデプロイを採用している場合、ArgoCD用のApplication定義もClaude Codeで生成できます。
claude "ArgoCDのApplication CRDを作成して。Helmチャートを参照する形で、production namespaceへの自動同期を有効にして"
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ses-api-production
namespace: argocd
spec:
project: ses-base
source:
repoURL: https://github.com/youx/ses-base.git
targetRevision: main
path: ses-api-chart
helm:
valueFiles:
- values-production.yaml
destination:
server: https://kubernetes.default.svc
namespace: ses-production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- PruneLast=true
retry:
limit: 5
backoff:
duration: 5s
factor: 2
maxDuration: 3m
トラブルシューティング
Podのデバッグ
K8s運用で最も時間を取られるのがトラブルシューティングです。Claude Codeを使えば、エラーメッセージをそのまま貼り付けるだけで原因と解決策を得られます。
# Pod状態の確認結果をClaude Codeに渡す
kubectl describe pod ses-api-server-7d9f8c6b5-x2k4l | claude "このPodがCrashLoopBackOffになっている原因と解決策を教えて"
よくあるK8sトラブルとClaude Codeでの解決例:
| 症状 | よくある原因 | Claude Codeへの聞き方 |
|---|---|---|
| CrashLoopBackOff | 起動時エラー、ヘルスチェック失敗 | kubectl logs <pod> | claude "クラッシュ原因を特定して" |
| ImagePullBackOff | レジストリ認証エラー、タグ不一致 | kubectl describe pod <pod> | claude "イメージ取得失敗の原因は?" |
| Pending状態が続く | リソース不足、ノードセレクタ不一致 | kubectl describe pod <pod> | claude "スケジューリングできない原因は?" |
| OOMKilled | メモリリミット超過 | claude "メモリ使用量が512Miを超えている。最適なlimitは?" |
マニフェストのセキュリティ監査
claude "k8sディレクトリのすべてのマニフェストをセキュリティ観点で監査して。Pod Security Standards準拠かどうかもチェックして"
Claude Codeは以下のような観点で自動チェックを実行します。
- 特権コンテナの使用有無:
securityContext.privilegedがtrueでないか - root実行の禁止:
runAsNonRootが設定されているか - 読み取り専用ファイルシステム:
readOnlyRootFilesystemの設定 - Capability制限: 不要なLinux Capabilityが追加されていないか
- ネットワークポリシー: 適切なNetworkPolicyが定義されているか
SES案件で活きるK8sスキルセット
Kubernetes関連のSES案件は年々増加しており、2026年現在では以下のスキルが高単価案件に直結します。
| スキルレベル | 要求される技術 | 想定月額単価 |
|---|---|---|
| 初級 | kubectl操作、Pod管理、ログ確認 | 55〜65万円 |
| 中級 | Helm/kustomize、CI/CD構築、監視設計 | 65〜80万円 |
| 上級 | クラスタ設計、マルチテナント、Operator開発 | 80〜100万円 |
Claude Codeを使うことで、初級から中級レベルのK8s作業を効率的にこなしながら、上級スキルの学習に時間を割けるのが最大のメリットです。
実践Tips:Claude Code × K8sの効率的な使い方
1. CLAUDE.mdにK8s固有のルールを記載
# CLAUDE.md
## Kubernetes設定ルール
- 全てのDeploymentにresource requests/limitsを設定すること
- livenessProbeとreadinessProbeは必ず設定
- Secretは外部Secret管理(External Secrets Operator)を使用
- コンテナイメージは必ずSHAダイジェストで指定
- PodDisruptionBudgetを本番Deploymentに設定すること
2. マルチステージビルドの最適化
claude "このDockerfileをマルチステージビルドに最適化して。最終イメージサイズを最小化し、セキュリティスキャンも通るようにして"
3. HPA(水平Pod自動スケーリング)の設定
claude "API サーバーのHPAを設定して。CPU 70%でスケールアウト、カスタムメトリクス(リクエスト数/秒)にも対応させて"
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: ses-api-hpa
namespace: ses-production
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: ses-api-server
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Pods
value: 2
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Pods
value: 1
periodSeconds: 120
まとめ:Claude CodeでKubernetesデプロイを効率化しよう
Claude Codeは、Kubernetesの複雑なマニフェスト管理を劇的に効率化するパートナーです。自然言語でDeployment・Service・Ingress・HPA・NetworkPolicyを生成し、Helm Chartやkustomizeのテンプレートもプロジェクトのコンテキストを理解した上で最適化してくれます。
SESエンジニアとして、K8sスキルは今後ますます重要になります。Claude Codeを活用して日常的なK8s作業を効率化しながら、設計・運用の知見を深めていきましょう。
Claude Codeの基本はClaude Code完全ガイドを、CI/CD連携はCI/CDインテグレーションをご覧ください。Docker関連はDocker活用ガイド、マイクロサービス設計はマイクロサービスガイドが参考になります。