Azure Spring Apps でのアプリとデプロイ

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象: ✔️ Java ✔️ C#

この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise

アプリデプロイは、Azure Spring Apps のリソース モデルにおける 2 つの重要な概念です。 Azure Spring Apps では、"アプリ" は、1 つのビジネス アプリを抽象化したものです。 アプリとしてデプロイされたコードまたはバイナリの 1 つのバージョンがデプロイで実行されます。 アプリは、次に示すように、Azure Spring Apps サービス インスタンス (単に サービス インスタンス と呼ばれることもあります) で実行されます。

Diagram showing the relationship between the apps and deployments.

1 つの Azure サブスクリプション内に複数のサービス インスタンスを含めることができますが、ビジネス アプリを構成するすべてのアプリが 1 つのサービス インスタンス内にある場合は Azure Spring Apps サービスを使用するのが最も簡単です。 その理由の 1 つは、アプリが相互に通信する可能性が高いからです。 サービス インスタンスで Eureka サービス レジストリを使用することで、簡単にこれを行うことができます。

Azure Spring Apps の Standard プランでは、1 つのアプリに 1 つの運用環境デプロイと 1 つのステージング デプロイが割り当てられ、簡単にブルー/グリーン デプロイを行うことができます。

アプリ

以下の機能とプロパティは、アプリ レベルで定義されています。

機能 説明
パブリック
エンドポイント
アプリにアクセスする URL。
Custom
Domain
カスタム ドメインをセキュリティで保護する CNAME レコード。
サービス
バインド
その他の Azure サービスとの既定の接続。
Managed
Identity
アプリで Microsoft Entra ID によるマネージド ID を使用すると、他の Microsoft Entra で保護されたリソース (Azure Key Vault など) に簡単にアクセスできます。
永続的
ストレージ
アプリの再起動後もデータを保持できるようにする設定。

展開

以下の機能とプロパティはデプロイ レベルで定義され、運用環境デプロイとステージング デプロイのスワップ時に交換されます。

機能 説明
CPU アプリ インスタンスあたりの仮想コアの数。
メモリ アプリ インスタンスあたりのメモリの GB 数。
Instance
Count
手動または自動で設定されるアプリ インスタンスの数。
Auto-Scale 事前に定義されたルールとスケジュールに基づいてインスタンス数を自動的にスケーリングします。
JVM
オプション
設定する JVM オプション。
Environment
Variables
設定する環境変数。
Runtime
Version
Java 8 または Java 11

環境

Azure Spring Apps では、一部の読み取り専用 YAML ファイルがデプロイされたアプリにマウントされます。 これらのファイルには、デプロイの Azure コンテキストが含まれています。 次の一覧は、これらの YAML ファイルのパスと内容を示しています:

  • /etc/azure-spring-cloud/context/azure-spring-apps.yml

    AZURE_SPRING_APPS:
        SUBSCRIPTION_ID:  <your-azure-subscription-id>
        RESOURCE_GROUP: <your-resource-group-name>
        NAME: <your-azure-spring-apps-name>
    
  • /etc/azure-spring-cloud/context/azure-spring-apps-deployment.yml

    AZURE_SPRING_APPS:
         APP:
            NAME: <your-app-name>
         DEPLOYMENT:
            NAME: <your-deployment-name>
            ACTIVE: true # true if the deployment is in production, false if in staging
    

アプリが Spring Boot アプリの場合、これら 2 つのファイル パスが SPRING_CONFIG_ADDITIONAL_LOCATION 環境変数に追加されます。 これにより、アプリでこれらのプロパティを構成として読み込み、コードで使用できます。 たとえば、 @ConfigurationProperties 注釈を使用して、YAML プロパティを Java クラスにバインドできます。 次のコード スニペットは、Azure コンテキストを表す @Configuration クラスを作成する方法を示しています:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "azure-spring-apps")
@Data
public class AzureSpringAppsContext {

    private String subscriptionId;
    private String resourceGroup;
    private String name;

    private AppContext app;
    private DeploymentContext deployment;

    @Data
    public static class AppContext {
        private String name;
    }

    @Data
    public static class DeploymentContext {
        private String name;
        private boolean active;
    }
}

その他の polyglot アプリの場合は、アプリ内の対応するファイルの読み取り/書き込みライブラリを使用して、対応するプロパティの読み取りとアクセスが必要になる場合があります。

制限

  • 1 つのアプリに 1 つの運用環境デプロイを割り当てる必要があります。 この API は、運用デプロイの削除をブロックします。 デプロイを削除する前に、ステージング環境にスワップする必要があります。
  • アプリには、最大で 2 つのデプロイを含めることができます。 この API は、2 つ以上のデプロイの作成をブロックします。 新しいバイナリは、既存の運用環境デプロイまたはステージング デプロイのいずれかにデプロイします。
  • デプロイ管理は、Basic プランでは使用できません。 ブルーグリーン デプロイ機能を使用するには、Standard または Enterprise プランを使用します。

次のステップ