azure-kubernetes について
要件に基づいて AKS クラスターの推奨構成を作成するスキルです。ネットワークや API サーバーアクセスなど後から変更しにくい Day-0 の決定事項と、作成後に有効化できる Day-1 の機能を区別します。本番環境の AKS を計画するチーム向けです。
主な機能
- 01AKS Automatic と Standard SKU の選定指針
- 02Pod IP モデルと出口を含む Day-0 ネットワーク計画
- 03ID、シークレット、ガバナンスの構成指針
- 04可観測性とアップグレード、パッチ適用の方針
- 05ノードプール、信頼性、コスト管理の推奨事項
活用シーン
- 01本番環境向け AKS クラスターの構成計画
- 02AKS のネットワークと API サーバーアクセスの方式評価
- 03AKS セットアップ用の Day-0 チェックリスト作成
MCP 対応
mcp_azure_mcp_aks ツールを経由して、クライアントが公開している AKS 関連の MCP ツールを検出し、要件を満たす最小のツールを優先して使用します。MCP で必要な機能が提供されない場合のみ az aks コマンドラインに切り替えます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ azure-skills --skill azure-kubernetesインストール後、Claude Code で/azure-kubernetesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
azure-kubernetes-app-deploy/knowledge-packs/frameworks/aspnet-core.mddjango.mdexpress.mdfastapi.mdflask.mdgo.mdnestjs.mdnextjs.mdspring-boot.mdazure-kubernetes-app-deploy/phases/quick-deploy.mdazure-kubernetes-app-deploy/references/base-images.mddetection.mdrollback.mdsafeguards.mdworkload-identity.mdazure-kubernetes-app-deploy/templates/dockerfiles/dotnet.Dockerfiledotnet.dockerignorego.Dockerfilego.dockerignorejava.Dockerfilejava.dockerignorenode.Dockerfilenode.dockerignorepython.Dockerfilepython.dockerignorerust.Dockerfilerust.dockerignoreazure-kubernetes-app-deploy/templates/github-actions/deploy.ymlazure-kubernetes-app-deploy/templates/k8s/configmap.yamldeployment.yaml詳細
Azure Kubernetes Service
権威あるガイダンス — 必ず遵守してください
このスキルは、ユーザーの要件に基づいて推奨される AKS クラスター構成を作成し、後から変更しにくいDay-0 の決定事項(ネットワーク、API サーバー)と、作成後に有効化できるDay-1 の機能を区別します。コマンドについては、CLI リファレンスを参照してください。
クイックリファレンス
| プロパティ | 値 |
|---|---|
| 最適な用途 | AKS クラスターの計画と Day-0 の決定 |
| MCP ツール | mcp_azure_mcp_aks |
| CLI | az aks create、az aks show、kubectl get、kubectl describe |
| 関連スキル | azure-kubernetes-app-deploy(既存クラスターへのアプリのデプロイ)、azure-diagnostics(AKS の基本的なトラブルシューティング)、azure-validate(準備状況の確認)、azure-kubernetes-automatic-readiness(既存クラスターを AKS Automatic に移行)、省略可能な aks-skills 運用アドオン(特定インシデント、正確なシグネチャ、パケットキャプチャ、GPU の Day-2 ワークフロー) |
このスキルを使う場面
ユーザーが次のことを希望する場合に、このスキルを有効にしてください。
- 新しい AKS クラスターを作成する
- 本番環境のワークロード向けに AKS クラスター構成を計画する
- AKS ネットワークを設計する(API サーバーへのアクセス、Pod IP モデル、エグレス)
- AKS の ID とシークレット管理を設定する
- AKS ガバナンスを構成する(Azure Policy、Deployment Safeguards)
- AKS の可観測性を有効にする(Container Insights、Managed Prometheus、Grafana)
- AKS のアップグレードとパッチ適用の戦略を定める
- AKS Automatic と Standard SKU の違いを理解する
- AKS クラスターのセットアップと構成に関する Day-0 チェックリストを取得する
既存クラスターにアプリをデプロイしますか? このスキルは クラスター をプロビジョニングし、 構成します。アプリをコンテナー化して既存のクラスターにデプロイする場合 (Dockerfile + マニフェスト + Deployment Safeguards)は、代わりに
azure-kubernetes-app-deployサブスキルを使用してください。
より詳細な運用タスクですか? Day-0 の計画と基本操作は、この ベーススキルで行います。特定の省略可能な AKS 運用スキルが現在の タスクに役立つ場合にのみ、optional-aks-operations.md を読み込んでください。
ルール
- コンピューティング、ネットワーク、セキュリティ、その他の設定をプロビジョニングするためのユーザー要件から始めます。
azureMCP サーバーを使用し、まずmcp_azure_mcp_aksを選択して、クライアントに提示されている AKS 固有の MCP ツールを正確に確認します。タスクに適したもののうち、確認できた AKS ツールで最小のものを選び、必要な機能が AKS MCP の範囲で公開されていない場合に限り、Azure CLI(az aks)にフォールバックします。- ユーザーが制御と利便性のどちらを必要としているかに基づいて、AKS Automatic と Standard SKU のどちらが適切かを判断します。特定のカスタマイズが必要な場合を除き、AKS Automatic を既定とします。
- クラスター構成の決定事項とその理由を記録します。特に、後から変更しにくい Day-0 の決定事項(ネットワーク、API サーバーへのアクセス)を明記します。
必要な入力(必要なものだけを確認)
ユーザーが判断に迷う場合は、安全な既定値を使用してください。
- AKS 環境の種類:開発/テストまたは本番
- リージョン、可用性ゾーン、希望するノード VM サイズ
- 想定規模(ノード数/クラスター数、ワークロードの規模)
- ネットワーク要件(API サーバーへのアクセス、Pod IP モデル、イングレス/エグレス制御)
- イメージレジストリを含むセキュリティおよび ID の要件
- アップグレードと可観測性に関する希望
- コストの制約
ワークフロー
1. クラスターの種類
- AKS Automatic(既定):ほとんどの本番環境のワークロードに最適で、セキュリティ、信頼性、パフォーマンスに関するベストプラクティスが事前構成された、厳選されたエクスペリエンスを提供します。Node Auto-Provisioning(NAP)でサポートされていないネットワーク、自動スケーリング、ノードプール構成について、特定のカスタム要件がある場合を除き、こちらを使用してください。
- AKS Standard:環境構成を完全に制御する必要がある場合に使用します。ただし、セットアップと管理に追加の負担が伴います。
2. ネットワーク(Pod IP、エグレス、イングレス、データプレーン)
Pod IP モデル(Day-0 の重要な決定事項):
- Azure CNI Overlay(推奨):プライベートなオーバーレイ範囲から Pod IP を割り当てます。VNet からルーティングできませんが、大規模な環境に対応でき、ほとんどのワークロードに適しています。
- Azure CNI(VNet ルーティング可能):Pod IP を VNet(Pod サブネットまたはノードサブネット)から直接割り当てます。Pod を VNet またはオンプレミスから直接アドレス指定する必要がある場合に使用します。
データプレーンとネットワークポリシー:
- Cilium を利用した Azure CNI(推奨):高性能なパケット処理、ネットワークポリシー、可観測性を実現する eBPF ベースの方式です。
エグレス:
- 安定した予測可能なアウトバウンド IP には Static Egress Gateway を使用します。
- エグレスを制限する場合は、UDR と Azure Firewall または NVA を使用します。
イングレス:
- Gateway API を備えた App Routing アドオン — HTTP/HTTPS ワークロードに推奨されるデフォルトです。
- Gateway API を備えた Istio サービスメッシュ - 高度なトラフィック管理、mTLS、カナリアリリースに使用します。
- Application Gateway for Containers — WAF 統合を備えた L7 負荷分散に使用します。
DNS:
- 信頼性とパフォーマンスに優れた DNS 解決を実現するため、すべてのノードプールで LocalDNS を有効にします。
3. セキュリティ
- すべての領域(コントロールプレーン、Pod の Workload Identity、ノードアクセス)で Microsoft Entra ID を使用します。静的な認証情報は避けてください。
- シークレットには、Secrets Store CSI Driver 経由で Azure Key Vault を使用します。
- Azure Policy と Deployment Safeguards を有効にします。
- etcd/API サーバーの 保存時の暗号化 と、ノード間の 転送中の暗号化 を有効にします。
- 署名済みで、ポリシーによって承認されたイメージのみを許可します(Azure Policy + Ratify)。Azure Container Registry の使用を推奨します。
- 分離:名前空間、ネットワークポリシー、スコープを限定したログ記録を使用します。
4. 可観測性
- AKS の可観測性(ログ + メトリック)には、Grafana とともに Managed Prometheus と Container Insights を使用します。
- セキュリティ監視とトラブルシューティングのため、Diagnostic Settings を有効にし、コントロールプレーンログと監査ログを Log Analytics ワークスペースに収集します。
- その他の監視およびトラブルシューティングツールには、Agentic CLI for AKS、Application Insights、Resource Health Center、AppLens detectors、Azure Advisors などの機能を使用します。
5. アップグレードとパッチ適用
- アップグレードのタイミングを管理するため、Maintenance Windows を構成します。
- セキュリティパッチと Kubernetes バージョンを最新の状態に保つため、コントロールプレーンとノード OS の 自動アップグレード を有効にします。
- エンタープライズ環境での安定性(2 年間のサポート)のため、AKS 環境を Premium ティアにアップグレードして LTS バージョン を検討します。
- Fleet アップグレード:AKS Fleet Manager を使用して、テスト環境から本番環境まで段階的にロールアウトします。
6. パフォーマンス
- ノードの起動を高速化するため、Ephemeral OS ディスク(
--node-osdisk-type Ephemeral)を使用します。 - ノード OS として Azure Linux を選択します(フットプリントが小さく、起動が高速です)。
- HPA によるスケーリングに加え、イベント駆動型の自動スケーリングには KEDA を有効にします。
7. ノードプールとコンピューティング
- 専用のシステムノードプール:2 ノード以上を配置し、システムワークロード専用のテイント(
CriticalAddonsOnly)を設定します。 - コスト削減と迅速なスケーリングのため、すべてのプールで Node Auto Provisioning(NAP) を有効にします。
- ホストレベルでの最適化には、最新世代の SKU(v5/v6) を使用します。
- B シリーズ VM は避けてください — バースト可能な SKU はパフォーマンスや信頼性の問題を引き起こします。
- 本番ワークロードには、4 vCPU 以上 の SKU を使用します。
- SLO に応じて Pod をホスト/ゾーン間に分散するため、トポロジー分散制約を設定します。
8. 信頼性
- 3 つの Availability Zone(
--zones 1 2 3)にまたがってデプロイします。 - ゾーン冗長のコントロールプレーンと、API サーバーの可用性に対する 99.95% の SLA を実現するため、Standard ティアを使用します。
- ランタイム保護のため、Microsoft Defender for Containers を有効にします。
- すべての本番ワークロードで PodDisruptionBudgets を構成します。
- 障害ドメイン間で Pod を確実に分散するため、トポロジー分散制約を使用します。
9. コスト管理
- バッチ/中断可能なワークロードには Spot ノードプールを使用します(最大 90%のコスト削減)。
- 開発/テスト用クラスターを停止/起動します:
az aks stop/start - 安定したワークロードには、予約インスタンスまたはSavings Plansを検討します。
詳細シナリオ — 関連するリファレンスファイルのみを読み込みます。
| シナリオ | トリガーキーワード | リファレンス |
|---|---|---|
| Pod の適正化 | 過剰にプロビジョニングされた Pod、CPU リクエスト、メモリーリクエスト、ワークロードの適正化 | azure-aks-rightsizing.md |
| VPA の設定 | 垂直 Pod オートスケーラー、VPA の推奨事項、VPA の有効化 | azure-aks-vpa.md |
| クラスターオートスケーラー | アイドル状態のノード、CAS がオフ、オートスケーラーの有効化、スケールダウンプロファイル、ノードの使用率 | azure-aks-autoscaler.md |
| Spot ノードプール | Spot VM、Spot ノード、バッチワークロード、低価格のノード | azure-aks-spot.md |
曖昧さの解消: プロンプトが複数の行に該当する場合(例:「低価格のノード」は Spot とオートスケーラーの両方を示す可能性があります)、最も具体的なものを優先します。判断が難しい場合は、リファレンスファイルを読み込む前に、ユーザーに意図を確認してください。
ガードレール/安全性
- シークレット(トークン、キー)を要求したり、出力したりしないでください。
- サブスクリプション ID を貼り付けるようユーザーに求めないでください。MCP ツール(サブスクリプションやリソースグループの一覧表示など)または
az account show/az account listを使ってサブスクリプションとリソースのスコープを特定し、識別子を公開せずにエージェントがコンテキストを解決できるようにしてください。 - Day 0 の重要な決定について要件が曖昧な場合は、ユーザーに確認の質問をしてください。Day 1 で有効にする機能については、トレードオフを含む安全な選択肢を 2~3 個提案し、保守的なデフォルトを選択してください。
- ダウンタイムがゼロになると約束しないでください。信頼性とパフォーマンスのベストプラクティスに沿って、ワークロードの保護策(PDB、プローブ、レプリカ)と段階的なアップグレードを推奨してください。
MCP ツール
| ツール | 目的 | 主なパラメーター |
|---|---|---|
mcp_azure_mcp_aks | クライアントが公開する AKS 固有のツールを特定するための、AKS MCP エントリーポイント | 呼び出し可能な AKS ツールを最初に特定し、そのツールのパラメーターを使用します |
エラー処理
| エラー/症状 | 想定される原因 | 対処方法 |
|---|---|---|
| MCP ツール呼び出しが失敗する、またはタイムアウトする | 認証情報、サブスクリプション、または AKS コンテキストが無効 | az login を確認し、az account show でアクティブなサブスクリプションコンテキストを確認します。サブスクリプション識別子をユーザーに伝えずに、対象のリソースグループを確認してください |
| クォータ超過 | リージョンの vCPU またはリソースの上限 | クォータの引き上げを申請するか、別のリージョン/VM SKU を選択します |
| ネットワークの競合(IP アドレスの枯渇) | オーバーレイ/CNI に対して Pod サブネットが小さすぎる | IP 範囲を再計画します。クラスターの再作成が必要な場合があります(Day 0) |
| Workload Identity が機能しない | OIDC 発行者またはフェデレーション資格情報が不足している | --enable-oidc-issuer --enable-workload-identity を有効にし、フェデレーション ID を設定します |