EKS Pod Operations

EKSクラスター上でPodのログ確認、検索、コンテナへのexec、デプロイメントの再起動などを行う再利用可能なAIエージェントスキルです。

EKS Pod Operations とは?

このスキルは、EKS(Amazon Elastic Kubernetes Service)環境におけるPod運用を効率化するためのAIエージェント向けツールです。kubectlやAWS CLIと連携し、Podのログ取得、一覧表示、デバッグ用のコンテナ内コマンド実行、Deploymentのローリング再起動(restart)といった操作をコマンドラインから実行できます。 スキルは`.kube/config_<env>`形式のkubeconfigとAWS SSOプロファイルを利用し、初回実行時に自動設定を生成します。特に`exec`と`restart`操作はユーザーの明示的な承認を必須とし、誤操作を防止します。出力は自動的に機密情報(シークレット、トークン、キー)を`[REDACTED]`に置き換え、セキュリティを確保します。 また、複数Podが存在するサービスでは`--service`オプションで最初の稼働中Podを選択し、ユーザーが特定のレプリカを指定したい場合は`pods`コマンドで一覧を確認後、`--pod`オプションで直接指定できます。本番環境のログ調査はGrafanaやSplunkを優先し、このスキルは補助的に使用することを推奨しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add sagy101/DotSkills

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

EKS Pod Operations は何をしますか?

EKSクラスター環境でPodのログ閲覧、Podの検索、コンテナへのexec、デプロイメントの再起動を行います。

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

ユーザーが以下を求めるときに使用します:

  • Podやサービスのログを表示する
  • EKS環境内のPodを一覧表示または検索する
  • 稼働中のPod内でコマンドを実行する
  • デプロイメントを再起動(ロールアウト再起動)する
  • Podをデバッグする(describe、ステータス確認、前回のログ表示)
  • 特定の環境でサービスが稼働しているか確認する

前提条件

  1. kubectl: インストールされ、PATHに含まれていること
  2. AWS CLI: インストールされ、環境ごとにSSOプロファイルが設定されていること
  3. Kubeconfig: ~/.kube/config_<env> に環境ごとに生成されていること
  4. Config: ~/.eks-config.json — 初回実行時にkubeconfigとAWSプロファイルをスキャンして自動生成されます。手動セットアップについては CONFIG.md を参照してください。

事前チェック

会話内の最初の操作の前に、事前チェックスクリプトを実行します:

python3 <skill_dir>/scripts/eks_preflight.py

特定の環境(kubeconfig + SSO)も検証する場合:

python3 <skill_dir>/scripts/eks_preflight.py --env stg

SSOの有効期限が切れている場合、ユーザーに aws sso login --sso-session <セッション> を伝えてください(セッション名は事前チェックの出力に表示されます)。

操作

pods — Podの一覧表示または詳細表示

# サービスのPodを検索
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service

# 環境内のすべてのPodを一覧表示
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --all

# Podの詳細表示(イベント、状態、マウント)
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service --describe

logs — Podログの読み取り

# 最新100行(デフォルト)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service

# カスタムのtailサイズと時間範囲
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --tail 500 --since 1h

# 前回のコンテナ(クラッシュ/再起動後)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --previous

# すべてのレプリカを一度に(sternがインストールされている場合)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --all-pods

# ログをリアルタイムでストリーム
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --follow

# Pod名を直接指定(サービス解決をスキップ)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --pod my-service-abc123-xyz --tail 200

exec — Pod内でコマンドを実行

実行前に正確なコマンドをユーザーに表示し、承認を得てください。

python3 <skill_dir>/scripts/eks_ops.py exec --env dev --service my-service -- ls /app/conf
python3 <skill_dir>/scripts/eks_ops.py exec --env dev --service my-service -- cat /app/conf/application.conf
python3 <skill_dir>/scripts/eks_ops.py exec --env stg --service my-service -- env | grep -i heap
python3 <skill_dir>/scripts/eks_ops.py exec --env stg --service my-service -- df -h

restart — デプロイメントのロールアウト再起動

実行前に再起動コマンドをユーザーに表示し、承認を得てください。

python3 <skill_dir>/scripts/eks_ops.py restart --env dev --service my-service
python3 <skill_dir>/scripts/eks_ops.py restart --env dev --service my-service --watch

重要なルール

  1. exec と restart はユーザーの明示的な承認が必要です。 正確なコマンドを表示し、確認を待ってから実行してください。
  2. pods と logs は読み取り専用です。 承認なしで直接実行できます。
  3. すべての出力は自動的に秘匿化されます — シークレット、トークン、キー、認証情報は [REDACTED] に置き換えられます。references/REDACTION.md を参照してください。
  4. 単独の env、printenv、set コマンドは exec 内でブロックされます。代わりに env | grep -i <キーワード> を使用してください。
  5. /secrets/、/vault/、または認証情報パス以下のファイルの読み取りは exec 内でブロックされます。
  6. 出力に [REDACTED] が含まれている場合、元の値を取得しようとしないでください。
  7. スクリプトはマルチコンテナPod内のアプリコンテナを自動選択します(statsite、istio-proxyなどのサイドカーはスキップ)。
  8. 複数レプリカ: サービスに複数のPodがある場合、--service は最初に稼働しているPodを選択します。ユーザーが特定のレプリカを指定したい場合は、最初に pods --env <env> --service <名前> を実行してすべてのレプリカを一覧表示し、ユーザーにどれかを尋ねた上で、--service の代わりに --pod <Pod名> を使用してください。
  9. 本番環境のログ調査にはGrafanaやSplunkを優先し、このスキルは補助的に使用してください。
  10. 開発者は通常、EKSへの読み取り専用アクセス権を持ちます — restart は本番環境のクラスターで失敗する可能性があります。

エラーハンドリング

エラー原因対処方法
SSOセッションの有効期限切れの可能性AWS SSOトークンの有効期限切れaws sso login --sso-session <セッション>
Kubeconfigが見つかりませんkubeconfigファイルがないaws eks update-kubeconfig --profile <env> --name <cluster> --kubeconfig ~/.kube/config_<env>
サービスにPodが見つかりませんサービス名が間違っている、または稼働中のPodがないpods --env <env> --all で利用可能なPodを確認
ブロックされました: すべての環境変数をダンプしますExecブロックリストがトリガーされたenv | grep -i <キーワード> を使用
localhost:8080への接続が拒否されましたRancher Desktopのkubectlとの競合スクリプトが自動検出します。解決しない場合は which kubectl を確認

トラブルシューティング

問題対処方法
kubectl: コマンドが見つかりませんbrew install kubectl
aws: コマンドが見つかりませんbrew install awscli
設定ファイルがない~/.eks-config.json を作成 — 前提条件を参照
名前空間が間違っている環境設定で namespace を設定
ログが空クラッシュしたコンテナの場合は --previous を試すか、--since を延長
stern が見つからないbrew install stern(オプション — 代替として順次kubectlを使用)

関連スキル