ヒント
このコンテンツは、Azure 用のクラウド ネイティブ .NET アプリケーションの設計に関する電子ブックからの抜粋であり、.NET Docs またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できます。
コンテナーについては、この章と第 1 章で説明しました。 コンテナーは、移植性など、クラウドネイティブ アプリケーションに多くの利点を提供することを確認しました。 Azure クラウドでは、ステージング環境と運用環境間で同じコンテナー化されたサービスをデプロイできます。 Azure には、これらのコンテナー化されたワークロードをホストするためのいくつかのオプションが用意されています。
- Azure Kubernetes Services (AKS)
- Azure Container Instance (ACI)
- コンテナー用 Azure Web アプリケーション
Azure Container Registry(アジュール コンテナ レジストリ)
マイクロサービスをコンテナー化するときは、最初にコンテナー "イメージ" を構築します。このイメージは、サービス コード、依存関係、ランタイムのバイナリ表現です。 Docker API の Docker Build コマンドを使用してイメージを手動で作成できますが、自動ビルド プロセスの一部として作成することをお勧めします。
作成されると、コンテナー イメージはコンテナー レジストリに格納されます。 コンテナー イメージをビルド、格納、および管理できます。 パブリックとプライベートの両方で利用できるレジストリは多数あります。 Azure Container Registry (ACR) は、Azure クラウドのフル マネージド コンテナー レジストリ サービスです。 Azure ネットワーク内にイメージが保持されるため、Azure コンテナー ホストにデプロイする時間が短縮されます。 他の Azure リソースに使用するのと同じセキュリティと ID の手順を使用して、セキュリティで保護することもできます。
Azure Portal、Azure CLI、または PowerShell ツールを使用して Azure Container Registry を作成します。 Azure でのレジストリの作成は簡単です。 これには、Azure サブスクリプション、リソース グループ、および一意の名前が必要です。 図 3-10 は、 registryname.azurecr.ioでホストされるレジストリを作成するための基本的なオプションを示しています。
図 3-10 コンテナー レジストリを作成する
レジストリを作成したら、それを使用する前に、レジストリで認証する必要があります。 通常は、Azure CLI コマンドを使用してレジストリにログインします。
az acr login --name *registryname*
認証が完了したら、docker コマンドを使用してコンテナー イメージをプッシュできます。 ただし、これを行う前に、ACR ログイン サーバーの完全修飾名 (URL) でイメージにタグを付けなければなりません。 registryname.azurecr.io 形式になります。
docker tag mycontainer myregistry.azurecr.io/mycontainer:v1
イメージにタグを付けた後、 docker push コマンドを使用してイメージを ACR インスタンスにプッシュします。
docker push myregistry.azurecr.io/mycontainer:v1
レジストリにイメージをプッシュした後は、次のコマンドを使用して、ローカル Docker 環境からイメージを削除することをお勧めします。
docker rmi myregistry.azurecr.io/mycontainer:v1
ベスト プラクティスとして、コンテナー レジストリにイメージを手動でプッシュしないでください。 代わりに、GitHub や Azure DevOps などのツールで定義されたビルド パイプラインを使用します。 詳細については、 Cloud-Native DevOps の章を参照してください。
ACR タスク
ACR タスク は、Azure Container Registry から利用できる一連の機能です。 Azure クラウドでコンテナー イメージを構築および管理することで、内部ループ開発サイクルを拡張します。 開発マシンで docker build と docker push をローカルで呼び出す代わりに、クラウドの ACR タスクによって自動的に処理されます。
次の AZ CLI コマンドは、どちらもコンテナー イメージをビルドし、ACR にプッシュします。
# create a container registry
az acr create --resource-group myResourceGroup --name myContainerRegistry008 --sku Basic
# build container image in ACR and push it into your container registry
az acr build --image sample/hello-world:v1 --registry myContainerRegistry008 --file Dockerfile .
前のコマンド ブロックからわかるように、開発用コンピューターに Docker Desktop をインストールする必要はありません。 さらに、ソース コードと基本イメージの更新の両方でコンテナー イメージを再構築するように ACR タスク トリガーを構成できます。
Azure Kubernetes サービス
この章では、Azure Kubernetes Service (AKS) について長く説明しました。 コンテナー化されたクラウドネイティブ アプリケーションを管理する事実上のコンテナー オーケストレーターであることを確認しました。
ACR などのレジストリにイメージをデプロイしたら、自動的にプルしてデプロイするように AKS を構成できます。 CI/CD パイプラインを配置すると、更新プログラムを迅速にデプロイするときのリスクを最小限に抑えるために カナリア リリース 戦略を構成できます。 アプリの新しいバージョンは、最初は本番環境で構成されているが、それにはまだトラフィックが流れていない。 その後、システムは、新しくデプロイされたバージョンに少数のユーザーをルーティングします。 チームが新しいバージョンに自信を持つにつれて、より多くのインスタンスをロールアウトし、古いインスタンスを廃止することができます。 AKS では、このスタイルのデプロイが簡単にサポートされます。
Azure のほとんどのリソースと同様に、ポータル、コマンド ライン、または Helm や Terraform などの自動化ツールを使用して、Azure Kubernetes Service クラスターを作成できます。 新しいクラスターの使用を開始するには、次の情報を指定する必要があります。
- Azure サブスクリプション
- リソースグループ
- Kubernetes クラスター名
- リージョン
- Kubernetes バージョン
- DNS 名プレフィックス
- ノード サイズ
- ノード数
この情報は、作業を開始するのに十分です。 Azure portal の作成プロセスの一環として、クラスターの次の機能のオプションを構成することもできます。
- 規模
- 認証
- ネットワーキング
- モニタリング
- タグ
この クイック スタートでは、Azure portal を使用して AKS クラスターをデプロイする手順について説明します。
Azure Bridge to Kubernetes
クラウドネイティブ アプリケーションは大規模で複雑になる可能性があり、大量のコンピューティング リソースを実行する必要があります。 これらのシナリオでは、アプリケーション全体を開発マシン (特にノート PC) でホストすることはできません。 Azure Bridge to Kubernetes は、この欠点に対処します。 これにより、開発者は、AKS 開発クラスターでアプリケーション全体をホストしながら、ローカル バージョンのサービスを操作できます。
準備ができたら、開発者は、AKS クラスター内の完全なアプリケーションに対して実行中に、依存関係をレプリケートせずに、ローカルで変更をテストします。 内部では、ブリッジはローカル コンピューターのコードを AKS のサービスとマージします。 開発者は、Visual Studio または Visual Studio Code を使用して、Kubernetes でコードを迅速に反復処理およびデバッグできます。
Microsoft の製品管理の元 VP である Gabe Monroy は、次の内容についてよく説明しています。
新しい従業員が、数十のコンポーネントで構成され、それぞれが独自の構成とバッキング サービスで構成される複雑なマイクロサービス アプリケーションのバグを修正しようとしているとします。 作業を開始するには、IDE の設定、ツール チェーンの構築、コンテナー化されたサービスの依存関係、ローカル Kubernetes 環境、バッキング サービスのモックなど、運用環境を模倣できるようにローカル開発環境を構成する必要があります。 開発環境の設定に関わるすべての時間で、最初のバグの修正には数日かかる可能性があります。 または、Bridge to Kubernetes と AKS を使用することもできます。
.NET