このトピックでは、オンプレミス環境でデモ Spring Cloud アプリケーションを開発およびテストする方法、Spring Cloud Alibaba Nacos Config を使用してアプリケーションの構成を管理する方法、および Serverless App Engine (SAE) を使用して構成を管理およびプッシュする方法について説明します。
前提条件
アプリケーションを開発する前に、以下の操作が実行されていることを確認してください。
Maven をダウンロードし、環境変数を構成します。
Nacos Server を起動します。
Nacos Server パッケージをダウンロードして解凍します。
nacos/bin ディレクトリに移動し、Nacos Server を起動します。
Linux、UNIX、または macOS:
sudo sh startup.sh -m standaloneコマンドを実行します。Windows:
startup.cmd -m standaloneコマンドを実行します。
説明standaloneは、startup.cmd ファイルがクラスタモードではなくスタンドアロンモードで実行されることを示します。デフォルトでは、startup.cmd ファイルはクラスタモードで起動されます。Windows システムで startup.cmd ファイルをダブルクリックして実行すると、起動に失敗します。この場合、startup.cmd ファイルでMODE="standalone"を構成する必要があります。詳細については、「Quick Start for Nacos」をご参照ください。
オンプレミスの Nacos Server コンソールで構成を作成します。
オンプレミスサーバーの Nacos Server コンソール にログオンします。デフォルトのユーザー名とパスワードは
nacosです。左側のナビゲーションウィンドウで、[構成] をクリックします。[構成] ページで、右上隅にある
アイコンをクリックします。[構成の作成] ページで、次のパラメーターを構成し、[公開] をクリックします。
データ ID: nacos-config-example.properties
グループ: DEFAULT_GROUP
構成コンテンツ: test.name=nacos-config-test
背景
Spring Cloud アプリケーションを開発する際に、Nacos を使用してアプリケーションの構成を管理できます。SAE は、アプリケーション構成管理 (ACM) のオープンソース Nacos と統合されています。SAE にアプリケーションをデプロイした後、SAE を使用してアプリケーションの構成を管理およびプッシュできます。
この例では、デモ Spring Cloud アプリケーションが開発され、Spring Cloud Alibaba Nacos Config を使用してアプリケーションの構成が管理されます。nacos-config-example.zip をクリックして、デモアプリケーションをダウンロードできます。
Spring Cloud Alibaba Nacos Config は、Nacos フレームワークと Spring Cloud フレームワークを統合し、Spring Cloud の構成インジェクション仕様をサポートしています。
ステップ 1: Nacos Config を使用してアプリケーション構成を管理する
nacos-config-example という名前の Maven プロジェクトを作成します。
pom.xml ファイルに依存関係を追加します。
この例では、Spring Boot 2.1.4.RELEASE と Spring Cloud Greenwich.SR1 が使用されています。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.1.RELEASE</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>この例では、Spring Cloud Greenwich が使用されています。Spring Cloud Greenwich の Spring Cloud Alibaba のバージョンは 2.1.1.RELEASE です。
Spring Cloud Finchley の Spring Cloud Alibaba のバージョンは 2.0.1.RELEASE です。
Spring Cloud Edgware の Spring Cloud Alibaba のバージョンは 1.5.1.RELEASE です。
説明Spring Cloud Edgware は廃止されました。Spring Cloud Edgware を使用してアプリケーションを開発しないことをお勧めします。
src\main\java に
com.aliware.edasパッケージを作成します。com.aliware.edasパッケージに、nacos-config-exampleプロジェクトのNacosConfigExampleApplication起動クラスを作成します。import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class NacosConfigExampleApplication { public static void main(String[] args) { SpringApplication.run(NacosConfigExampleApplication.class, args); } }com.aliware.edasパッケージに、シンプルなEchoControllerコントローラーを作成します。userNameプロパティは自動的に挿入されます。次に、@Valueアノテーションを追加して、構成から test.name キーの値を取得します。import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class EchoController { @Value("${test.name}") private String userName; @RequestMapping(value = "/") public String echo() { return userName; } }src\main\resourcesディレクトリに、bootstrap.properties構成ファイルを作成します。bootstrap.propertiesファイルに、次の構成項目を追加して、Nacos Server のアドレスを指定します。次の構成項目では、
127.0.0.1:8848は Nacos Server のアドレス、18081はサービスポートです。Nacos Server が別のマシンにデプロイされている場合は、IP アドレスとポートを関連するものに変更します。その他の要件がある場合は、bootstrap.properties ファイルに関連する構成項目を追加します。詳細については、「参照用の構成項目」をご参照ください。
spring.application.name=nacos-config-example server.port=18081 spring.cloud.nacos.config.server-addr=127.0.0.1:8848NacosConfigExampleApplicationクラスの main 関数を実行して、アプリケーションを起動します。
ステップ 2: SAE にアプリケーションをデプロイする
オンプレミス環境でアプリケーションを開発およびテストした後、SAE にアプリケーションをデプロイできます。詳細については、「アプリケーションのデプロイ」をご参照ください。
SAE の構成管理センターは、Nacos Server の公式商用版を提供します。SAE にアプリケーションをデプロイすると、SAE は、Nacos Server の IP アドレスとサービスポート、名前空間、アクセスキー、シークレットキー、および コンテキストパス をより高い優先度で指定します。追加設定を行う必要はありません。元の構成は保持または削除できます。
SAEコンソール で初めてアプリケーションをデプロイする場合は、アプリケーションの作成時に [JAR パッケージによるデプロイ] を選択した場合、[アプリケーションランタイム環境] パラメーターを [標準 Java アプリケーションランタイム環境] に設定する必要があります。

アプリケーションをデプロイする前に、SAE の構成管理機能を使用して、オンプレミス Nacos Server と同じアプリケーション構成を作成します。
SAE コンソール にログオンします。左側のナビゲーションウィンドウで、[名前空間] をクリックし、トップメニューバーでリージョンを選択します。
[名前空間] ページで、目的の名前空間の名前をクリックします。
表示されるページで、左側のナビゲーションウィンドウの を選択します。[構成] ページで、[構成の作成] をクリックします。
表示される [構成の作成] パネルで、パラメーターを構成し、[作成] をクリックします。次の表にパラメーターを示します。
パラメーター
説明
データ ID
構成の ID。この例では、nacos-config-example.properties が指定されています。
ID がグローバルに一意であることを保証するために、
package.class命名規則に従う形式で ID を指定します。例:com.taobao.tc.refund.log.level。class パラメーターには、ビジネス上の意味を持つ構成名を設定することをお勧めします。グループ
構成グループの名前。この例では、DEFAULT_GROUP が使用されています。
グループ名がグローバルに一意であることを保証するために、
製品名:モジュール名の形式でグループ名を指定することをお勧めします。例:ACM:Test。グループ別に認証を実行できます。データの暗号化
構成データを暗号化するかどうかを指定します。構成に機密データが含まれている場合は、機密データの漏洩を防ぐために、データ暗号化機能を有効にすることをお勧めします。
重要データ暗号化機能を有効にする前に、Key Management Service (KMS) をアクティブ化し、ACM にデータの暗号化と復号に KMS を使用する権限を付与する必要があります。ACM のデータ暗号化機能は KMS に依存しています。KMS をアクティブ化し、必要な権限を ACM に付与する必要があります。暗号化された構成のデータ ID は、cipher- で始まります。詳細については、「暗号化された構成ファイルの作成と使用」をご参照ください。
構成フォーマット
構成コンテンツのフォーマット。この例では、[テキスト] が選択されています。
構成コンテンツ
構成コンテンツ。この例では、test.name=nacos-config-test が指定されています。
構成の説明
構成の説明。
その他の構成
アプリケーション
構成が属するアプリケーションの名前。
ラベル
ラベル。ラベル別に構成を管理できます。最大 5 つのラベルを追加できます。
ステップ 3: 結果を確認する
アプリケーションをデプロイした後、関連するログを表示して、アプリケーションが起動されているかどうかを確認できます。
curl http://<アプリケーションインスタンス IP>:<サービスポート>コマンドを実行します。たとえば、
curl http://192.168.0.34:8080コマンドを実行して、構成コンテンツnacos-config-testが返されるかどうかを確認できます。SAEコンソール にログオンし、元の構成コンテンツを
nacos-config-test2に変更してから、curl http://<アプリケーションインスタンス IP>:<サービスポート>コマンド を実行します。たとえば、
curl http://192.168.0.34:8080コマンドを実行して、新しい構成コンテンツnacos-config-test2が返されるかどうかを確認できます。
参照用の設定項目
その他の要件がある場合は、次の表を参照して、bootstrap.properties ファイルに設定項目を追加できます。
設定項目 | キー | デフォルト値 | 説明 |
[サーバーアドレス] | spring.cloud.nacos.config.server-addr | なし | なし。 |
[データ ID プレフィックス] | spring.cloud.nacos.config.prefix | ${spring.application.name} | データ ID のプレフィックス。 |
[グループ] | spring.cloud.nacos.config.group | DEFAULT_GROUP | グループ。 |
[データ ID サフィックスと設定ファイル形式] | spring.cloud.nacos.config.file-extension | properties | データ ID のサフィックス。この設定項目では、設定ファイルの形式も指定します。デフォルト値は properties です。 YAML および YML 形式がサポートされています。 |
[設定コンテンツのエンコード方式] | spring.cloud.nacos.config.encode | UTF-8 | 設定コンテンツのエンコード方式。 |
[設定を取得するためのタイムアウト期間] | spring.cloud.nacos.config.timeout | 3000 | 単位:ミリ秒。 |
[設定の名前空間] | spring.cloud.nacos.config.namespace | 名前空間は、異なる環境における設定を分離するために広く使用されています。たとえば、名前空間を使用して、開発環境、テスト環境、本番環境のリソースを分離できます。 | |
[相対パス] | spring.cloud.nacos.config.context-path | サーバー API の相対パス。 | |
[エンドポイント] | spring.cloud.nacos.config.endpoint | UTF-8 | リージョン内のサービスのエンドポイント。エンドポイントに基づいてサーバーアドレスを動的に取得できます。 |
[リスナーと自動更新を有効にする] | spring.cloud.nacos.config.refresh.enabled | true | デフォルト値は true です。この設定項目を変更する必要はありません。 |
設定項目の詳細については、オープンソースのSpring Cloud Alibaba Nacos Config ドキュメントをご参照ください。