クイック スタート: Azure CLI を使用した接続されたレジストリの作成

このクイック スタートでは、Azure CLI を使用して Azure で接続レジストリ リソースを作成します。 Azure Container Registry の接続されたレジストリ機能を使用すると、リモートで、またはオンプレミスにレジストリをデプロイし、イメージや他の成果物をクラウド レジストリと同期できます。

ここでは、クラウド レジストリ用に 2 つの接続されたレジストリ リソースを作成します。1 つの接続されたレジストリでは、読み取りおよび書き込み (成果物のプルとプッシュ) 機能が許可され、1 つは読み取り専用機能を許可します。

接続されたレジストリを作成した後は、他のガイドに従って、オンプレミスまたはリモートのインフラストラクチャにデプロイして使用できます。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • Azure Container registry - コンテナー レジストリがまだない場合は、接続されたレジストリをサポートするリージョン1 つ作成します (Premium レベルが必要)。

クラウド レジストリの専用データ エンドポイントを有効にする

az acr update コマンドを使用して、クラウド内の Azure コンテナー レジストリの専用データ エンドポイントを有効にします。 この手順は、接続されたレジストリがクラウド レジストリと通信するために必要です。

# Set the REGISTRY_NAME environment variable to identify the existing cloud registry
REGISTRY_NAME=<container-registry-name>

az acr update --name $REGISTRY_NAME \
  --data-endpoint-enabled

クラウド レジストリにイメージをインポートする

az acr import コマンドを使用して、次のコンテナー イメージをクラウド レジストリにインポートします。 これらのイメージを既にインポートしている場合は、この手順をスキップします。

接続されたレジストリのイメージ

入れ子になった IoT Edge のシナリオをサポートするには、接続されたレジストリのランタイムのコンテナー イメージがプライベート Azure コンテナー レジストリで使用できる必要があります。 接続されたレジストリのイメージをプライベート レジストリにインポートするには、az acr import コマンドを使用します。

# Use the REGISTRY_NAME variable in the following Azure CLI commands to identify the registry
REGISTRY_NAME=<container-registry-name>

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/acr/connected-registry:0.8.0

IoT Edge と API プロキシのイメージ

入れ子になった IoT Edge で接続されたレジストリをサポートするには、IoT Edge と API プロキシのモジュールをデプロイする必要があります。 これらのイメージをプライベート レジストリにインポートします。

IoT Edge API プロキシ モジュールを使用すると、同じポート (443 など) で HTTPS プロトコルを使用して複数のサービスを公開できます。

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-agent:1.2.4

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-hub:1.2.4

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-api-proxy:1.1.2

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/azureiotedge-diagnostics:1.2.4

Hello-world イメージ

接続されたレジストリをテストするには、hello-world イメージをインポートします。 このリポジトリは、接続されたレジストリに同期され、接続されたレジストリのクライアントによってプルされます。

az acr import \
  --name $REGISTRY_NAME \
  --source mcr.microsoft.com/hello-world:1.1.2

読み取りおよび書き込み機能用の接続されたレジストリ リソースを作成する

az acr connected-registry create コマンドを使用して、接続されたレジストリを作成します。 接続されたレジストリ名は、文字で始まり、英数字のみを使う必要があります。 この Azure container registry の階層では、5 文字から 40 文字の長さで、一意である必要があります。

# Set the CONNECTED_REGISTRY_RW environment variable to provide a name for the connected registry with read/write functionality
CONNECTED_REGISTRY_RW=<connnected-registry-name>

az acr connected-registry create --registry $REGISTRY_NAME \
  --name $CONNECTED_REGISTRY_RW \
  --repository "hello-world" "acr/connected-registry" "azureiotedge-agent" "azureiotedge-hub" "azureiotedge-api-proxy"

このコマンドは、名前が $CONNECTED_REGISTRY_RW の値である接続済みレジストリ リソースを作成し、それを名前が $REGISTRY_NAME の値であるクラウド レジストリにリンクします。 後のクイック スタート ガイドでは、接続されたレジストリをデプロイするためのオプションについて説明します。

  • 指定されたリポジトリは、デプロイされると、クラウド レジストリと接続されたレジストリの間で同期されます。

  • 接続されたレジストリには --mode オプションが指定されていないので、既定の ReadWrite モードで作成されます。

  • この接続されたレジストリに対して同期スケジュールが定義されていないため、中断することなく、クラウド レジストリと接続されたレジストリの間でリポジトリが同期されます。

    重要

    下位レイヤーがインターネットにアクセスできない入れ子になったシナリオをサポートするには、常に acr/connected-registry リポジトリの同期を許可する必要があります。 このリポジトリには、接続されたレジストリのランタイムのイメージが含まれています。

読み取り専用機能用の接続されたレジストリ リソースを作成する

az acr connected-registry create コマンドを使用して、読み取り専用機能を持つ接続されたレジストリを作成することもできます。

# Set the CONNECTED_REGISTRY_READ environment variable to provide a name for the connected registry with read-only functionality
CONNECTED_REGISTRY_RO=<connnected-registry-name>
az acr connected-registry create --registry $REGISTRY_NAME \
  --parent $CONNECTED_REGISTRY_RW \
  --name $CONNECTED_REGISTRY_RO \
  --repository "hello-world" "acr/connected-registry" "azureiotedge-agent" "azureiotedge-hub" "azureiotedge-api-proxy" \
  --mode ReadOnly

このコマンドは、名前が $CONNECTED_REGISTRY_RO の値である接続されたレジストリ リソースを作成し、それを $REGISTRY_NAME の値で名前を付けたクラウド レジストリにリンクします。

  • 指定されたリポジトリは、デプロイされると、 $CONNECTED_REGISTRY_RW の値で名前を付けた親レジストリと、接続されたレジストリの間で同期されます。
  • このリソースは、ReadOnly モードで作成されており、デプロイされると、読み取り専用 (成果物プル) 機能が有効になります。
  • この接続されたレジストリに対して、同期スケジュールが定義されていないため、中断することなく、親レジストリと接続されたレジストリの間でリポジトリが同期されます。

リソースが作成されたことを確認する

接続されたレジストリ az acr connected-registry list コマンドを使用して、リソースが作成されていることを確認できます。

az acr connected-registry list \
  --registry $REGISTRY_NAME \
  --output table

以下のような応答が表示されます。 接続されたレジストリはまだデプロイされていないので、"オフライン" の接続状態は、現在クラウドから切断されていることを示します。

NAME                 MODE        CONNECTION STATE    PARENT               LOGIN SERVER    LAST SYNC (UTC)
-------------------  --------    ------------------  -------------------  --------------  -----------------
myconnectedregrw    ReadWrite    Offline
myconnectedregro    ReadOnly     Offline             myconnectedregrw

次のステップ

このクイック スタートでは、Azure CLI を使用して Azure で 2 つの接続レジストリ リソースを作成しました。 これらの新しい接続されたレジストリ リソースは、クラウド レジストリに関連付けられているので、成果物をクラウド レジストリと同期できます。

接続されたレジストリを IoT Edge にデプロイして使用する方法については、接続されたレジストリのデプロイ ガイドに進んでください。