はしめに
こんにちは たそ(@taso_int)です。
普段ははてなブログで技術ブログを投稿しております。
良かったら見てください。
https://taso-int.hatenablog.com/archive
今回はアドベントカレンダーということで、Azureネタを書きます。
Azure Container Registryサービスについてです。
Azure Container Registry
Azure Container Registry (ACR) は、Microsoft Azure が提供するプライベートなコンテナイメージのレジストリサービスです。
Docker イメージや OCI アーティファクトを安全に保存・管理し、CI/CD パイプラインや Kubernetes クラスタなどに統合して利用できます。
AWSでいうところのECRで、コンテナイメージを保管する場所という印象があります。
このサービスを触っていくなかで、便利だと思う機能があったので、それを紹介していきます。
今回はサービス階層の中でもPremiumサービスで利用できる機能について紹介します。
詳しくはサービス階層の機能と制限を確認してください。
ネットワークのアクセス制御
レジストリへのネットワークに関するアクセス制限を設定できます。
イメージとしてはAzure Storage Account
と同じようなネットワークに関するアクセス制限を設定できます。
- プライベートエンドポイント
- パブリックネットワークのアクセス制御
- 信頼されたサービスからのアクセス許可
プライベートエンドポイントに対応しているため、パブリックインターネットを経由せずに安全なアクセスができるため、システム要件として堅牢なアクセスを要求されている場合は利用すると良いです。
アーティファクトキャッシュ機能
アーティファクトキャッシュ機能は、外部のコンテナレジストリから取得するコンテナイメージやアーティファクトをキャッシュする機能です。
普段イメージを取得する際、Docker.ioだったり、Quay.ioなどの外部のコンテナレジストリから取得することがあります。ここにACRをキャッシュとして中継することで、ハブとしての役割を持ちます。
各サービスがACRから参照し、ACRは外部のコンテナレジストリをイメージの定義に基づいて参照します。
この機能があると外部のコンテナレジストリのRate limitの対策であったり、イメージのキャッシュ取得後のACRのネットワークのアクセス制限が利用できます。
ちなみにDocker Hubは、匿名および無料のDocker Hubユーザーについて、6時間あたり100および200のコンテナイメージプル要求に制限されています。(https://www.docker.com/ja-jp/increase-rate-limits/)
これにより、AKSのアップグレードやマニフェストの更新で、イメージをpullする際に、Dockerのレート制限に引っかかり失敗してしまいます。
そのため、pull先をACRにすることで、このレート制限を対策できます。
詳しくはAzure Container Registry のアーティファクト キャッシュを確認してください。
Import機能
Import機能は、他のコンテナレジストリ(パブリックまたはプライベート)からコンテナイメージを ACR に直接インポートするための機能です。
通常、Dockerのイメージをコンテナレジストリに登録する場合、イメージを pull → run → build → push する必要があり、このプロセスは少々手間がかかります。また、DockerやPodmanの環境を事前に準備する必要があるため、作業が煩雑になることもあります。
しかし、az acr import
コマンドを利用することで、これらの手順を省略し、コンテナイメージを他のレジストリから ACR に直接インポートすることが可能です。これにより、環境構築の手間を省きつつ、効率的に作業を進められます。
なお、Azure Cloud Shell にはこのコマンドがプリインストールされているため、Azure Cloud Shell のみを使用してイメージのインポートが可能です。
また、別のサブスクリプション内のレジストリからインポートできます。
そのため、開発環境や商用環境をサブスクリプションで分けている場合は、開発環境から出来たイメージ類をそのまま商用環境にインポートできるなど便利です。
詳しくはコンテナー レジストリにコンテナー イメージをインポートするを確認してください。
おわり
Azure Container Registryについて紹介させていただきました。
皆さんもぜひ使いましょう。
おまけ 料金について
基本的には1日あたりの料金+追加ストレージ量が基本的にかかる料金です。
主観にはなりますが、Premiumの基本ストレージ量が500GBとかなり多いため基本的に追加料金はそこまでかからないと思います。