マネージド ID 認証を使用してAzure Container Registryからイメージをプルできない
この記事では、マネージド ID を使用してAzure Container Registry (ACR) から Azure Container Instances (ACI) にデプロイするときのイメージ プル エラーのトラブルシューティング方法について説明します。
現象
マネージド ID を使用してプライベート エンドポイントの背後で実行される Azure コンテナー レジストリからコンテナー グループをデプロイし、イメージをプルしようとすると、イメージのプルは失敗します。
原因
イメージ プルエラーの原因を次に示します。
ACI 側から:
- コンテナー グループのデプロイ時に使用される ACI API バージョンに基づいて、 コンテナー グループ ARM テンプレート で指定された資格情報の形式が無効である可能性があります。
- コンテナー グループでマネージド ID を使用すると、ACI の制限に違反する可能性があります。
- ARM テンプレート内のコンテナー グループ定義の形式が正しくない可能性があります。
ACR 側から:
- 以前の API バージョンを使用している可能性があります。
- コンテナー レジストリにプライベート DNS ゾーンを使用している可能性があります。
ACI 側からのトラブルシューティング
2021-07-01 より前の ACI API バージョンを使用しているかどうかを確認します。
その場合は、"InvalidImageRegistryCredentialType" エラーが表示されることがあります。
$ az deployment group create -g <resourcegroupname> --template-file containergroup_trusted.json Deployment failed. Correlation ID: <Correlation ID>. { "error": { "code": "InvalidImageRegistryCredentialType", "message": "Identity in 'imageRegistryCredentials' of container group 'acrtestcontainergroup' is not supported." } }
この問題を解決するには、ACI API バージョン 2021-07-01 以降を使用します。
ACI の制限に違反しているかどうかを確認します。
制限事項は次のとおりです。
- 仮想ネットワークによって挿入されたコンテナー グループ。
- コンテナー グループをWindows Server 2016します。
- ACR のプライベート DNS ゾーンを解決しようとしています。
この問題を解決するには、これらの制限に違反していないことを確認します。
コンテナー グループ定義が正しく形成されているかどうかを確認します。
そうでない場合は、次のエラーが表示される場合があります。
エラー コード "AmbiguousImageResitryCredentialType":
Deployment failed. Correlation ID: <Correlation ID>. { "error": { "code": "AmbiguousImageResitryCredentialType", "message": "The registry credential type in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' cannot be detected. Please set exactly one of username or identity" } }
エラー コード "InvalidImageRegistryIdentity":
Deployment failed. Correlation ID: <Correlation ID>. { "error": { "code": "InvalidImageRegistryIdentity", "message": "The identity in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' not found in container group identity list." } }
エラー コード "InvalidRequestContent":
Deployment failed. Correlation ID: <Correlation ID>. { "error": { "code": "InvalidRequestContent", "message": "The request content was invalid and could not be deserialized: 'Required property 'server' not found in JSON. Path 'properties.imageRegistryCredentials[0]', line 1, position 586.'." } }
この問題を解決するには、ARM テンプレートに次のプロパティを指定する必要があります。
-
server
ImageRegistryCredential の プロパティとidentity
プロパティ。 -
type
ContainerGroupIdentity の プロパティとuserAssignedIdentity
プロパティ。
ACR 側からのトラブルシューティング
マネージド ID にロールが割り当てられているかどうかを確認します
AcrPull
。そうでない場合は、"InaccessibleImage" エラーが表示されることがあります。
Deployment failed. Correlation ID: <Correlation ID>. { "error": { "code": "InaccessibleImage", "message": "The image 'myacr.azurecr.io/pythonworker:v1' in container group 'acrtestcontainergroup' is not accessible. Please check the image and registry credential." } }
この問題を解決するには、マネージド ID に
AcrPull
ロールを付与します。 詳細については、「 他の Azure リソースにアクセスするための ID アクセス許可を付与する」を参照してください。ACR で 信頼されたサービス が有効になっているかどうかを確認します。 そうでない場合は、信頼されたサービスを有効にします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。