Azure Container Apps を設定する
このユニットでは、Azure CLI を使用して Azure Container Apps 環境と Azure for PostgreSQL データベースを作成する方法について説明します。 次に、ローカル データベースではなくリモート データベースに接続するように Quarkus アプリケーションを構成します。
Azure に Quarkus アプリケーションをデプロイするために、IaaS から FaaS まで、いくつかのターゲットを使用できます。 Azure Container Apps は PaaS と FaaS の間にあります。 PaaS に似ています。これは、特定のプログラミング モデルに強制されないためです。また、スケールアウトとスケールインの規則を制御できます。 一方、0 へのスケーリング、イベントドリブン スケーリング、1 秒あたりの価格モデルなど、サーバーレスの特性がいくつかあります。
Container Apps は 、Azure Kubernetes Service (AKS) 上に構築されています。 KEDA (Kubernetes のイベントドリブン自動スケーリング)、Dapr (分散アプリケーション ランタイム)、Envoy (クラウドネイティブ アプリケーション用に設計されたサービス プロキシ) との緊密な統合が含まれています。 基になる複雑さが抽象化されているため、Kubernetes サービス、デプロイ、イングレス、またはボリューム マニフェストを構成する必要はありません。 コンテナー化されたアプリケーションを構成するためのシンプルな API とユーザー インターフェイスが用意されています。 この簡略化により、AKS よりも制御が少なくなります。
Container Apps では、アプリケーションを Docker コンテナーにパッケージ化する必要があります。 Container Apps では、Dockerfile または Jib を使用して構築された Docker コンテナーがサポートされています。 コンテナーは、コンテナー レジストリで使用できる必要があります。 Container Apps では、Azure Container Registry、Docker Hub、GitHub Container Registry がサポートされています。 レジストリでアプリケーション イメージを使用できるようになると、Container Apps では、Azure portal、Azure CLI、GitHub Actions、Azure DevOps からのデプロイがサポートされます。
Container Apps には、次の機能があります。
- リビジョン: コンテナー アプリのアプリケーション ライフサイクルを管理するのに役立つ自動バージョン管理。
- トラフィック制御: 青/緑のデプロイと A/B テストのために、受信 HTTP トラフィックを複数のリビジョンに分割する機能。
- イングレス: 単純な HTTPS イングレス構成。 DNS や証明書について心配する必要はありません。
- 自動スケール: KEDA でサポートされているスケール トリガーを使用して、外部メトリックに基づいてアプリをスケーリングします。
- シークレット: コンテナー、スケール ルール、および Dapr サイドカー間で共有されるシークレット。
- 監視: Log Analytics に自動的に書き込まれる標準の出力ストリームとエラー ストリーム。
- Dapr: コンテナー アプリの Dapr 統合。 単純なフラグを使用して、この統合を有効にします。
次の演習では、次の概念について説明します。
- 環境: コンテナー アプリのグループを囲むセキュリティの強化された境界。 アプリは 1 つの仮想ネットワークにデプロイされ、相互に簡単に通信でき、ログを 1 つの Log Analytics ワークスペースに書き込みます。 環境は、Kubernetes 名前空間と比較できます。
- コンテナー アプリ: 一緒にデプロイおよびスケーリングされるコンテナー (ポッド) のグループ。 1 つのディスク領域とネットワークを共有します。
- リビジョン: コンテナー アプリの変更できないスナップショット。 新しいリビジョンは自動的に作成され、A/B テストなどの HTTP トラフィック リダイレクト戦略に価値があります。
次に、コンテナー アプリ環境を作成して、これらの要素がどのように機能するかを確認します。