Spring Cloud アプリケーションを開発する際に、Nacos を使用して、オンプレミス環境でアプリケーション構成を管理できます。Nacos は、アプリケーション構成管理のオープンソースバージョンです。アプリケーションを Enterprise Distributed Application Service (EDAS) にデプロイした後、EDAS に統合されているアプリケーション構成管理を使用して、アプリケーション構成を管理およびプッシュできます。
このトピックでは、サンプルアプリケーションをゼロから開発し、Spring Cloud Alibaba Nacos Config を使用してアプリケーションの構成を管理する方法について説明します。nacos-config-example.zip デモをダウンロードして、サンプルアプリケーションを使用することもできます。
Spring Cloud Alibaba Nacos Config は、Nacos と Spring Cloud フレームワークを統合し、Spring Cloud の構成インジェクション仕様をサポートしています。
EDAS の構成管理機能は、オープンソースの Nacos の構成管理機能と競合しません。
始める前に
アプリケーションを開発する前に、次の操作が完了していることを確認してください。
Maven をダウンロードし、環境変数を構成します。
最新バージョンの Nacos Server をダウンロードします。
Nacos Server を起動します。
ダウンロードした Nacos Server パッケージを解凍します。
nacos/bin ディレクトリに移動し、次のいずれかの方法を使用して Nacos Server を起動します。方法は OS によって異なります。
Linux、UNIX、または macOS:
sh startup.sh -m standaloneコマンドを実行します。 // スタンドアロンモードで起動Windows:startup.cmd ファイルをダブルクリックして実行します。
説明standaloneは、クラスタモードではなくスタンドアロンモードで実行することを指定します。デフォルトでは、startup.cmd ファイルはクラスタモードで起動されます。Windows で startup.cmd ファイルをダブルクリックして実行すると、ファイルの起動に失敗します。この場合、MODE="standalone"startup.cmd ファイルに Nacosクイックスタート を追加する必要があります。詳細については、「」をご参照ください。
オンプレミスの Nacos Server コンソールで構成を作成します。
オンプレミスの Nacos Server コンソール にログインします。デフォルトのユーザー名とパスワードは nacos です。
左側のナビゲーションペインで、[ConfigManagement] > [Configurations] を選択します。[Configurations] ページの右上隅にある
アイコンをクリックして、構成を作成します。[構成の作成] ページで、次のパラメーターを構成し、[公開] をクリックします。
データ ID:フィールドに nacos-config-example.properties と入力します。
グループ:DEFAULT_GROUP を選択します。
フォーマット:Properties を選択します。
構成コンテンツ:コードエディターに test.name=nacos-config-test と入力します。
Spring Cloud Alibaba 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パッケージで、NacosConfigExampleApplicationnacos-config-exampleプロジェクトの起動クラスを作成します。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}") // 構成から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 関数を実行して、アプリケーションを起動します。
オンプレミス環境での結果の確認
ブラウザで http://127.0.0.1:18081 にアクセスします。nacos-config-test の値が返されます。この値は、このトピックのオンプレミスの Nacos Server コンソールで構成を作成する手順で構成した test.name キーの値です。
EDAS へのアプリケーションのデプロイ
アプリケーションを EDAS にデプロイする前に、EDAS の構成管理モジュールを使用して構成を作成する必要があります。構成は、オンプレミスの Nacos Server コンソールで作成された構成と同じである必要があります。こうすることで、アプリケーションが EDAS にデプロイされた後、構成を EDAS に同期できます。
オンプレミスの Nacos Server コンソールで作成された構成と同じ構成を EDAS で作成します。
EDAS コンソール にログインします。
左側のナビゲーションペインで、 を選択します。
Configurations ページの上部ナビゲーションバーで、構成を作成するリージョンを選択します。上部の [マイクロサービス名前空間] ドロップダウンリストから、構成のマイクロサービス名前空間を選択します。次に、設定の作成 をクリックします。
設定の作成 パネルで、オンプレミス Nacos Server コンソールで構成されているパラメーター設定と同じパラメーター設定を構成し、[作成] をクリックします。
データ ID:フィールドに nacos-config-example.properties と入力します。
グループ:DEFAULT_GROUP を選択します。
フォーマット:Properties を選択します。
構成コンテンツ:コードエディターに test.name=nacos-config-test と入力します。
説明リージョン パラメーターと マイクロサービス名前空間 パラメーターは、[構成] ページで構成されています。このパネルではパラメーターを変更できません。
ビジネス要件に基づいて、アプリケーションを EDAS にデプロイします。詳細については、「概要 (ECS)」および「概要 (Kubernetes)」をご参照ください。
次のステップ
アプリケーションを EDAS にデプロイした後、アプリケーションを継続的に反復処理および更新できます。Nacos Server を起動し、アプリケーションを更新し、オンプレミス環境で結果を確認してから、アプリケーションを EDAS にデプロイしてオンラインで確認するたびに、開発効率に影響が出ます。そのため、EDAS は、オンプレミスアプリケーションとクラウドアプリケーション間の相互接続機能を提供しています。アプリケーションに対してこの機能を有効にし、オンプレミス環境でアプリケーションを起動すると、アプリケーションを EDAS にデプロイした場合と同じ効果が得られます。アプリケーションの構成は EDAS の構成管理モジュールから読み取ることができ、アプリケーションと別のクラウドアプリケーション間で相互呼び出しを実装できます。
参照用の構成項目
その他の要件がある場合は、次の表を参照して、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 ドキュメント をご参照ください。