この記事では、マネージド 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 テンプレートで次のプロパティを指定する必要があります。
- ImageRegistryCredentialの
server
プロパティとidentity
プロパティ。 - ContainerGroupIdentityの
type
プロパティと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 フィードバック コミュニティに製品フィードバックを送信することもできます。