Azure Container Apps を設定する
このユニットでは、Azure CLI を使って Azure Container Apps 環境と Azure for PostgreSQL データベースを作成する方法について説明します。 次に、ローカル データベースではなくリモート データベースに接続するように Quarkus アプリケーションを構成します。
Quarkus アプリケーションを Azure 上にデプロイするには、IaaS から FaaS まで、いくつかのターゲットを使用できます。 Azure Container Apps は PaaS と FaaS の間にあります。 これは、特定のプログラミング モデルに強制されることがなく、スケールアウトとスケールインのルールを制御できるため、より PaaS に似ています。 一方で、ゼロへのスケーリング、イベントドリブンのスケーリング、秒単位の価格モデルなど、サーバーレスの特性もいくつか備えています。
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 トラフィック リダイレクト戦略に役立ちます。
次に、コンテナー アプリ環境を作成して、これらの要素がどのように機能するかを確認します。