0Pricing
API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) · レッスン

Config Serverによる集中設定管理

Spring Cloud Config Serverを使ってGatewayの設定を一元管理し、動的な更新や環境別の設定を実現します。

「Config Serverによる集中設定管理」はCoddyKit上の無料API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)コースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Why Centralized Configuration?

In a microservice architecture, you might have many services, each with its own configuration files. Managing these files individually can become a huge challenge.

Imagine updating a database connection string across 20 different services! It's prone to errors and time-consuming.

  • Decentralized configs: Hard to manage at scale.
  • Inconsistent configs: Different services might have slightly varied settings.
  • Manual updates: Tedious and risky.

Meet Spring Cloud Config Server

Spring Cloud Config Server provides a centralized externalized configuration service for distributed systems. It's built on Spring Boot and can easily integrate with various backend storage options.

Think of it as a central hub where all your application's settings live. Your services (clients) then fetch their configurations from this hub.

  • Centralized storage: One place for all configurations.
  • Version controlled: Configurations stored in Git (or similar).
  • Environment specific: Easily manage configurations for different environments (dev, prod).

Setting Up Config Server

To create a Config Server, you first set up a basic Spring Boot application and add the spring-cloud-config-server dependency. Then, you enable it with the @EnableConfigServer annotation.

Here's the main class for our Config Server:

package com.coddykit.configserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConfigServerApplication.class, args);
  }
}

Config Server Properties

The Config Server needs to know where to find your configuration files. Typically, these are stored in a Git repository.

You configure the Git repository URI and search paths in your application.properties or application.yml file:

server.port=8888
spring.cloud.config.server.git.uri=https://github.com/your-org/config-repo.git
spring.cloud.config.server.git.search-paths=configs

This tells the server to run on port 8888 and fetch configurations from the specified Git repository, looking inside the 'configs' folder.

Storing Configurations in Git

Inside your Git repository (e.g., config-repo.git), you'll create configuration files for each service. The naming convention is {application-name}-{profile}.yml or .properties.

For our Spring Cloud Gateway, let's assume its spring.application.name is gateway-service. A basic configuration file in your Git repo (e.g., configs/gateway-service.yml) might look like this:

spring:
  cloud:
    gateway:
      routes:
        - id: example_route
          uri: http://example.org
          predicates:
            - Path=/example/**

Gateway as a Config Client

Now, let's configure our Spring Cloud Gateway to act as a client and fetch its configurations from the Config Server. You'll need the spring-cloud-starter-config dependency.

Instead of application.properties, the client uses bootstrap.properties (or .yml) to connect to the Config Server *before* the main application context loads.

spring.application.name=gateway-service
spring.cloud.config.uri=http://localhost:8888

The spring.application.name helps the Config Server find the right config file (e.g., gateway-service.yml).

Using Centralized Properties

Once configured, your Gateway service will automatically connect to the Config Server at startup, fetch the configurations (like routes, predicates, filters), and apply them.

This means you can define all your gateway's routing rules, global filters, and other settings in the Git repository, managed by the Config Server, rather than directly in your gateway's code.

For example, a route defined in gateway-service.yml in your Git repo will be applied by your gateway.

Environment Profiles

Config Server excels at managing environment-specific configurations. You can create files like gateway-service-dev.yml or gateway-service-prod.yml in your Git repo.

Your gateway client can then specify its active profile in bootstrap.properties:

spring.application.name=gateway-service
spring.cloud.config.uri=http://localhost:8888
spring.profiles.active=dev

The Config Server will prioritize gateway-service-dev.yml, overriding any properties in the base gateway-service.yml.

Dynamic Configuration Refresh

One powerful feature is the ability to refresh configurations without restarting your Gateway service. This is achieved using Spring Cloud Actuator and the @RefreshScope annotation.

1. Add spring-boot-starter-actuator dependency to your Gateway.

2. Enable the /actuator/refresh endpoint in your application.properties:

management.endpoints.web.exposure.include=refresh

3. Annotate any beans in your Gateway that use configuration properties with @RefreshScope.

After updating your Git config and pushing changes, you can send a POST request to /actuator/refresh on your Gateway, and it will pull the new configs!

Quick Check on Config

Which of the following are key benefits of using Spring Cloud Config Server for a microservices architecture?

Recap: Centralized Config

You've learned how Spring Cloud Config Server tackles the challenge of managing configurations in distributed systems. It acts as a central hub, typically backed by a Git repository, to store and serve configurations.

Key takeaways:

  • Config Server: A Spring Boot app with @EnableConfigServer.
  • Config Client: Your Gateway (or other services) connecting via bootstrap.properties.
  • Git Integration: Configurations stored as {application}-{profile}.yml.
  • Dynamic Refresh: Update configs on the fly using Actuator's /refresh endpoint and @RefreshScope.

This centralized approach brings order and efficiency to your microservice configuration management!

よくある質問

「Config Serverによる集中設定管理」レッスンは無料ですか?

はい。「Config Serverによる集中設定管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)コースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)コースには全4レッスンが含まれています。

「Config Serverによる集中設定管理」で何を学びますか?

Spring Cloud Config Serverを使ってGatewayの設定を一元管理し、動的な更新や環境別の設定を実現します。 ブラウザで直接実行するハンズオンコードでAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)を演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)を始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Config Serverによる集中設定管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンでコードを書いて実行できますか?

はい。すべてのAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. JWT認証と認可
  2. Sleuth/Zipkinによる分散トレーシング
  3. Config Serverによる集中設定管理
  4. ActuatorとPrometheusによるメトリクス公開
← API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)に戻る