はじめに
Azure Container Registryには設定項目に「アクセスキー」というものがあり、ここの管理者ユーザーを有効化することでIDやパスワードを取得することができます。
ただ、管理者アカウントは権限が強すぎるため、あまり有効化はしたくないものです。ここで、管理者アカウントを有効にしないままイメージをpullする方法を試しましたのでここで記します。
サービスプリンシパルを作成する
まずは、Azure Container Registryにアクセスするためのサービスプリンシパルを作成します。具体的には以下のコマンドを実行します。
$ az ad sp create-for-rbac --name サービスプリンシパル名 --scopes $(az acr show --name Azure Container Registryの名前 --query id --output tsv) --role acrpull
私の場合、CloudShell(bash)上で実行しました。
結果として以下の情報が得られるので、メモしておきます。
{ "appId": "appIdの値", "displayName": "サービスプリンシパル名", "password": "パスワードの値", "tenant": "テナントのID" }
変数に値を格納しておきます。
$ appId=上記のappIdの値 $ appPassword=上記のパスワードの値
Azure Container Instanceを作成する
次にAzure Container Instanceを作成します。具体的には以下のコマンドを作成します。
$ az container create --name Azure Container Instanceの名前 --resource-group リソースグループ名 --ports 8080 --image イメージ名 --registry-login-server Azure Container RegistryのURL --registry-username $appID --registry-password $appPassword --ip-address Public
コマンドの詳細は以下を参照。
数分待つと、無事Azure Container Instanceが作成できました。
ちなみに、Azure Portal上でAzure Container Instanceを作成しようとすると管理者ユーザーを有効にすることが求められます。