Visual Studio CodeでACRをAKSにAttachする方法|AKS拡張機能の更新ポイント

Visual Studio Code の AKS 拡張機能で Azure Container Registry(ACR)を AKS クラスターに Attach する機能は、コンテナーイメージを AKS から安全に取得できるようにするための実務向け手順です。結論から言うと、2026年7月3日相当の更新で確認すべき中心は「新しい操作手順」ではなく、ドキュメント上の分類メタデータ更新と、ACR 連携時の権限設計を正しく理解することです。GitHub の公式履歴では、該当ドキュメントに ms.subservice: aks-developer が追加され、本文は変更されていないことが示されています。(GitHub)

この記事では、Visual Studio と表現されることがあるこの話題を、実際の対象である Visual Studio Code の Azure Kubernetes Service(AKS)拡張機能として整理します。ACR を Attach すると何が変わるのか、どの権限が必要なのか、管理者が確認すべき影響範囲、移行期限の有無、失敗しやすいポイントまで、実務で確認できる形で解説します。

目次

Visual Studio Code の AKS 拡張機能で ACR を Attach する機能の概要

この機能は、Visual Studio Code から AKS クラスターと Azure Container Registry を関連付け、AKS 側が ACR 上のコンテナーイメージを取得できるようにするための手順です。Microsoft Learn の該当ページでは、ACR、AKS クラスター、Visual Studio Code 用 AKS 拡張機能が前提条件として示されています。(Microsoft Learn)

注意したいのは、ここでいう Attach は「アプリケーションを自動でデプロイする」「Docker イメージをビルドする」「ACR に push する」という意味ではないことです。主な目的は、AKS が ACR からイメージを pull できる認証・認可の関係を作ることです。AKS と ACR の統合では、通常、AKS のエージェントプールに関連付く Microsoft Entra 管理 ID に AcrPull ロールを割り当てる形で権限が構成されます。(Microsoft Learn)

たとえば、Kubernetes の Deployment で次のようなイメージを指定している場合を考えます。

image: myregistry.azurecr.io/webapi:v1

このとき AKS 側に ACR への pull 権限がなければ、Pod は ImagePullBackOff や ErrImagePull になりやすくなります。Visual Studio Code の AKS 拡張機能から Attach する目的は、この「AKS が ACR からイメージを取得できない」という典型的なつまずきを減らすことにあります。

2026年7月3日更新ポイントの読み方

2026年7月3日相当の更新ポイントは、機能そのものの大幅変更ではなく、公式ドキュメントの分類情報の更新として見るのが適切です。GitHub の履歴では、2026年7月2日 15:26:09 -0700 にコミットが行われており、日本時間では2026年7月3日に相当します。このコミットでは、AKS 関連ドキュメントの所有者情報や機能タグ、サブサービス分類が整理され、該当ファイルには ms.subservice: aks-developer が追加されています。(GitHub)

一方で、Microsoft Learn の表示上は該当ページの Last updated が 2024年8月1日となっているため、記事化する際は「2026年7月3日に本文手順が刷新された」と断定しない方が安全です。公式リポジトリ上の更新内容では「front-matter only; no article body content changed」とされており、本文手順そのものは変わっていません。(Microsoft Learn)

確認項目今回の読み取り実務での対応
機能変更本文手順の変更は確認できない既存の Attach 手順を継続してよい
ドキュメント分類ms.subservice: aks-developer が追加開発者向け AKS 機能として整理されたと見る
設定変更ACR・AKS・VS Code 拡張機能の前提は継続既存環境の構成変更は原則不要
移行期限この更新に伴う移行期限は確認できないただし ACR の権限方式や ID 変更時は個別確認が必要
管理者の重点権限、ID、ABAC、ネットワーク、検証GUI 操作だけで完了と判断しない

Attach で実際に入力する情報

Visual Studio Code の AKS 拡張機能では、ACR を AKS クラスターに Attach する画面へ、コマンドパレットまたは Kubernetes ビューからアクセスできます。コマンドパレットでは Ctrl+Shift+P を押し、サブスクリプション、ACR のリソースグループ、コンテナーレジストリ、AKS クラスターのリソースグループ、クラスターを選択して Attach を実行します。成功すると緑のチェックマークが表示される流れです。(Microsoft Learn)

Kubernetes ビューから実行する場合は、Clouds > Azure > サブスクリプション > Automated Deployments 配下で対象クラスターを右クリックし、Attach ACR to Cluster を選択します。入力する項目はコマンドパレット経由と同じです。(Microsoft Learn)

入力項目確認すべきポイントよくあるミス
SubscriptionACR と AKS が存在するサブスクリプションを選ぶ開発・本番サブスクリプションを取り違える
ACR Resource GroupACR が配置されているリソースグループを選ぶAKS のリソースグループと混同する
Container RegistryAKS から pull させたい ACR を選ぶ旧環境や検証用 ACR を選んでしまう
Cluster Resource GroupAKS クラスターのリソースグループを選ぶノードリソースグループと混同する
ClusterAttach 対象の AKS クラスターを選ぶ同名に近いクラスターを誤選択する

グローバル展開している組織では、リージョン名よりも「サブスクリプション」「リソースグループ」「ACR 名」「AKS クラスター名」の組み合わせで確認する運用にした方が安全です。特に本番・検証・ステージングを複数国で分けている場合、見た目が似たリソース名の誤選択が起きやすくなります。

管理者が押さえるべき権限の考え方

ACR を AKS に Attach する本質は、AKS が ACR からイメージを pull できるようにする権限設定です。Azure CLI の --attach-acr を使う場合、既存の ACR を認可し、管理 IDに適切な AcrPull ロールを構成する流れになります。既存 AKS クラスターに対しては az aks update --attach-acr で Attach できます。(Microsoft Learn)

ただし、すべての ACR で AcrPull だけを見ればよいわけではありません。ABAC が有効な ACR で、ロール割り当てのアクセス許可モードが「RBAC Registry + ABAC Repository Permissions」の場合、az aks --attach-acr による AKS-ACR 統合はサポートされず、AcrPull ではなく Container Registry Repository Reader ロールを手動で割り当てる必要があります。(Microsoft Learn)

ACR の状態必要な考え方管理者の確認
通常の RBAC ベースAKS の kubelet ID に AcrPull を付与ACR スコープでロールが付いているか確認
ABAC 有効Container Registry Repository Reader を検討--attach-acr 前提にしない
既存クラスターaz aks update --attach-acr 相当の設定を確認既存 ID にロールが付いているか確認
Terraform 管理ロール割り当てを IaC に明記手動 Attach と IaC の差分をなくす
本番環境必要最小限のスコープで付与リソースグループ全体ではなく ACR スコープを優先

本番環境では、AcrPull を広いリソースグループスコープで付けるより、ACR スコープで割り当てる方が権限を絞りやすくなります。Microsoft Learn でも、本番シナリオではリソースグループではなく Azure Container Registry スコープで AcrPull を割り当てることが示されています。(Microsoft Learn)

事前に確認すべき前提条件

Visual Studio Code から Attach を実行する前に、最低限、ACR、AKS クラスター、AKS 拡張機能がそろっている必要があります。加えて、操作ユーザーにはロール割り当てを作成できる権限が必要です。Microsoft Learn の ACR 統合手順では、サブスクリプションに対する Owner、Azure account administrator、Azure co-administrator、またはロール割り当てに必要な権限が前提として示されています。(Microsoft Learn)

実務では、次の順番で確認すると手戻りを減らせます。

確認順確認内容判断基準
1Visual Studio Code に AKS 拡張機能が入っているかAzure の Kubernetes ビューで AKS を参照できる
2Azure にサインインしているか対象サブスクリプションが表示される
3ACR が存在するか対象レジストリ名が選択肢に出る
4AKS クラスターが存在するか対象クラスターが選択肢に出る
5操作ユーザーに権限があるかAttach 後にロール割り当てが作成される
6ACR の権限方式が ABAC かABAC の場合は手動ロール割り当てを検討
7ネットワーク制限があるかPrivate Link、Firewall、Proxy、DNS を確認

Visual Studio Code の AKS 拡張機能は、AKS クラスターの表示・管理、kubeconfig のマージや保存、AKS Diagnostics、AKS Periscope、Azure Service Operator のインストール、クラスターの開始・停止など、複数の管理機能を提供します。ACR Attach はその中でも、開発環境から AKS と ACR の接続準備を進めるための実用的な導線として位置付けられます。(Microsoft Learn)

Attach 後に必ず確認したい検証ポイント

Attach が成功したように見えても、実際に Pod がイメージを pull できるとは限りません。特に、ABAC、Private Link、Firewall、HTTP Proxy、古いサービスプリンシパル、ノード OS とイメージアーキテクチャの不一致がある環境では、Attach 後の検証が重要です。

まず、ACR が AKS クラスターからアクセス可能かを az aks check-acr で確認します。Microsoft Learn のトラブルシューティング手順でも、ACR の健全性確認と AKS からの到達性確認が初期対応として示されています。(Microsoft Learn)

az aks check-acr \
  --resource-group <AKSのリソースグループ> \
  --name <AKSクラスター名> \
  --acr <ACR名>.azurecr.io

次に、テスト用の Deployment を作成し、ACR 上のイメージを指定して Pod が正常に起動するか確認します。もし Pod の状態が ImagePullBackOff や ErrImagePull になった場合は、kubectl describe pod で Events を確認します。Microsoft Learn では、イメージ pull エラー時に kubectl describe pod <podname> -n <namespace> で詳細を確認する手順が示されています。(Microsoft Learn)

kubectl describe pod <pod名> -n <namespace>

ロール割り当てを確認する場合は、ACR のスコープでロールが付いているかを見ます。トラブルシューティング手順では、Azure portal の ACR > Access control(IAM)> Role assignments、または az role assignment list で確認する方法が案内されています。(Microsoft Learn)

az role assignment list \
  --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ContainerRegistry/registries/<acrName> \
  -o table

失敗しやすいポイントと対処法

ACR Attach で失敗する原因は、Visual Studio Code の操作ミスよりも、Azure 側の ID・権限・ネットワーク設定にあることが多いです。よくある失敗を事前に把握しておくと、開発者と管理者の切り分けがしやすくなります。

症状主な原因対処
Attach は成功したが Pod が起動しないACR への pull 権限が不足kubelet ID に正しいロールがあるか確認
401 Unauthorized が出る認可設定、ID、イメージ名の誤りロール割り当て、サービスプリンシパル、イメージ名を確認
403 Forbidden が出るACR のネットワーク制限や Private DNS 設定Private DNS、Firewall、許可 IP を確認
i/o timeout が出るPrivate Link や VNet 間接続の問題VNet Peering、DNS、Firewall ルールを確認
ABAC 環境で pull できないAcrPull 前提で設定しているContainer Registry Repository Reader を手動付与
IaC と実環境に差分が出るVS Code で手動 Attach したTerraform/Bicep/ARM にロール割り当てを反映

特に ABAC 有効な ACR は注意が必要です。通常の AcrPull ではなく、リポジトリ単位の権限モデルに合わせたロール割り当てが必要になるため、従来の「Attach すれば完了」という運用では不十分な場合があります。(Microsoft Learn)

移行期限や設定変更はあるのか

今回確認できる公式情報からは、この Visual Studio Code AKS 拡張機能による ACR Attach に関して、特定日までの移行期限や破壊的変更は確認できません。2026年7月3日相当の更新は、該当ドキュメントに ms.subservice: aks-developer を追加するメタデータ更新であり、本文手順は変更されていないと明記されています。(GitHub)

ただし、次のような環境変更を行った場合は、ACR 連携を再確認する必要があります。

  • AKS の kubelet managed identity を変更した
  • AKS クラスターをサービスプリンシパルから managed identity に移行した
  • ACR の権限方式を ABAC 対応に変更した
  • ACR を Private Link 化した
  • サブスクリプションやリソースグループを整理した
  • Terraform など IaC 管理に移行した
  • 本番・検証環境で ACR を分離した

AKS で kubelet managed identity を更新した場合、ACR から pull するために az aks update --attach-acr を再実行して、新しい kubelet に ACR pull 権限を付与する必要があるケースがあります。Microsoft Learn でも、--attach-acr を使っていたクラスターで kubelet managed identity が新しくなる場合、更新後に az aks update --attach-acr を実行する必要があると説明されています。(Microsoft Learn)

グローバル運用での管理者チェックリスト

複数リージョン・複数サブスクリプションで AKS と ACR を運用している場合、Visual Studio Code からの Attach は便利な一方で、ガバナンス上の確認が重要です。特に、開発者がローカルの VS Code から本番リソースを操作できる状態になっている場合、Attach 先を誤ると意図しない AKS クラスターに ACR pull 権限を付与する可能性があります。

チェック項目確認内容
命名規則ACR と AKS の環境名、国、リージョン、用途が名前で判別できるか
権限設計開発者に Owner 相当の権限を常時付与していないか
スコープAcrPull を必要以上に広いスコープで付与していないか
ABACACR の権限方式が従来 RBAC か ABAC か
監査ロール割り当ての変更が Activity Log や監査ログで追えるか
IaC 管理手動 Attach の結果が Terraform/Bicep に反映されているか
検証az aks check-acr とテスト Pod で確認しているか
障害対応ImagePullBackOff 時の切り分け手順があるか

管理者としては、Visual Studio Code から Attach すること自体を禁止するよりも、どの環境で許可するかを分ける方が現実的です。たとえば、開発環境では開発者に Attach を許可し、本番環境では Pull 権限を IaC または承認付きの運用手順で付与する、といった分離が有効です。

実務でおすすめの運用パターン

小規模な検証環境では、Visual Studio Code の AKS 拡張機能から Attach するだけでも十分です。開発者が AKS と ACR の関係をすばやく作れるため、コンテナーアプリの検証を進めやすくなります。

一方で、本番環境や複数チームで使う共通基盤では、Attach 操作を「一度きりの GUI 設定」で終わらせないことが重要です。最終的には、ACR スコープのロール割り当て、対象 kubelet ID、ABAC の有無、Private Link や Firewall の設定を構成管理に含めるべきです。

利用シーン推奨パターン
個人検証VS Code から Attach して動作確認
チーム開発VS Code Attach 後、ロール割り当てをドキュメント化
本番環境Terraform/Bicep で ACR pull 権限を管理
ABAC 有効 ACR手動または IaC で Repository Reader 系ロールを設計
高セキュリティ環境Private Link、DNS、Firewall、監査ログまで含めて設計

特に CI/CD パイプラインを使う環境では、開発者の VS Code で Attach した結果と、パイプラインが参照する IaC の定義がずれると、再構築時に権限が消えることがあります。Attach 後に本番へ反映する場合は、必ず IaC へロール割り当てを取り込む運用にしておくと安全です。

まず何を確認すべきか

Visual Studio Code の AKS 拡張機能で ACR を AKS に Attach する機能は、AKS が ACR からコンテナーイメージを取得するための重要な接続手順です。2026年7月3日相当の公式更新では本文手順の変更は確認できず、実務上の焦点は「新機能対応」ではなく「ACR pull 権限を正しく設計・検証できているか」にあります。(GitHub)

まずは、対象の AKS クラスターと ACR が正しいか、kubelet ID に適切なロールが付いているか、ABAC 有効 ACR ではないかを確認してください。そのうえで、az aks check-acr とテスト Pod による pull 検証を行えば、GUI 上の成功表示だけに頼らない安全な運用にできます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次