Automatic service registration with SmallRye Stork for Quarkus

preview

このガイドでは、SmallRye Stork と Consul を使用して、最小限の設定または設定なしで Quarkus アプリケーションの自動登録および登録解除を有効にする方法について説明します。

概要

SmallRye Stork は、Consul や Eureka などのサービス登録バックエンドをサポートしています。従来、開発者は コードを使用してサービスインスタンスを明示的に設定し、手動で登録 する必要がありました。この機能により、Quarkus アプリケーションは起動時にサポートされているレジストリー (例: Consul) へ自動的に登録し、シャットダウン時に登録解除できるようになります。ボイラープレートコードを書く必要はありません。

重要: 自動登録は、Consul、Eureka、Static などの組み込みのレジストラに対して のみ 可能であることに注意してください。カスタムレジストラを使用している場合は、引き続きプログラムで登録を処理する必要があります。このユースケースについては、stork-programmatic-custom-registration-quickstart ディレクトリ の例を確認してください。

この統合により設定の手間が最小限に抑えられ、可能な限りビルド時に処理を行うという Quarkus の哲学に従っています。

動作原理

アプリケーションが起動し、quarkus-smallrye-stork に加えて stork-service-registration-consul 依存関係が存在する場合、以下の処理が行われます。

  • Quarkus はビルド時に登録設定のチェックを実行します。

  • 有効な設定が検出された (または推測できる) 場合、登録メタデータが生成されます。

  • 起動時、アプリケーションは検出または設定された IP アドレスとポートを使用して自動的に登録されます。

  • シャットダウン時、サービスは自動的に登録解除されます。

ソリューションは stork-automatic-consul-registration-quickstart ディレクトリ にあります。

ユースケースおよび設定オプション

登録システムは適切なデフォルト値を使用しますが、サービスごとにきめ細かな制御を行うことも可能です。

ケース 1: 暗黙的な設定

設定は一切不要です。

<dependency>
  <groupId>io.smallrye.stork</groupId>
  <artifactId>stork-service-registration-consul</artifactId>
</dependency>

Quarkus は以下を自動的に使用します。

  • アプリケーション名

  • 検出された IP アドレス

  • HTTP ポート

サービスは自動的に登録および登録解除されます。

ケース 2: 最小限の明示的な設定

必要な項目のみをオーバーライドします。

quarkus.stork.my-service.service-registrar.ip-address=192.168.0.42

application.properties 内にレジストラ設定が 1 つしかない場合、 quarkus.stork.my-service.service-registrar.type は不要です。

ケース 3: 複数のサービスレジストラ

複数のサービスが設定されている場合は、 quarkus.stork.<service-name>.service-registrar.type を指定する必要があります。

quarkus.stork.red-service.service-registrar.type=consul
quarkus.stork.red-service.service-registrar.port=8083

quarkus.stork.blue-service.service-registrar.type=consul
quarkus.stork.blue-service.service-registrar.port=8084

ケース 4: 登録の無効化

自動登録はデフォルトで有効になっています。登録を無効にしたい場合は、以下の設定プロパティーを使用してサービスごとに設定できます。

quarkus.stork.red-service.service-registrar.enabled=false

ケース 5: 高度なヘルスチェック設定

Consul がサービスのヘルス状態をポーリングする方法をカスタマイズします。

quarkus.stork.my-service.service-registrar.parameters.health-check-url=/q/health/live
quarkus.stork.my-service.service-registrar.parameters.health-check-interval=10s
quarkus.stork.my-service.service-registrar.parameters.health-check-deregister-after=1m

ケース 6: 静的な IP とポート

プロキシの背後にいる場合や、既知の IP を持つ本番環境で有用です。

quarkus.stork.my-service.service-registrar.ip-address=203.0.113.25
quarkus.stork.my-service.service-registrar.port=80

IP 検出

デフォルトでは、Quarkus は最初に使用可能なループバック以外のネットワークインターフェースを使用して IP アドレスを特定しようとします。これに失敗した場合は localhost にフォールバックします。

Docker や Kubernetes 環境では、この検出により外部から到達不可能な内部 IP が取得される可能性があることに注意してください。そのような場合は、IP とポートを明示的に設定することをお勧めします。

概要

  • 最小限またはゼロ設定でサービス登録を動作可能

  • ビルド時処理による Consul とのシームレスな統合

  • サービスごとのオーバーライドをサポート

  • シャットダウン時の自動登録解除

  • 他のバックエンドをサポートするための容易な拡張性

設定リファレンス

Configuration property fixed at build time - All other configuration properties are overridable at runtime

Configuration property

タイプ

デフォルト

Configuration for the service

タイプ

デフォルト

Configures the service discovery type, e.g. "consul". ServiceDiscoveryProvider for the type has to be available

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_DISCOVERY_TYPE

Show more

string

required

ServiceDiscovery parameters. Check the documentation of the selected service discovery type for available parameters.

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_DISCOVERY__PARAMS_

Show more

Map<String,String>

Configures load balancer type, e.g. "round-robin". A LoadBalancerProvider for the type has to be available

Environment variable: QUARKUS_STORK__SERVICE_NAME__LOAD_BALANCER_TYPE

Show more

string

round-robin

Load Balancer parameters. Check the documentation of the selected load balancer type for available parameters

Environment variable: QUARKUS_STORK__SERVICE_NAME__LOAD_BALANCER__PARAMETERS_

Show more

Map<String,String>

Whether automatic registration and deregistration of service instances is enabled.

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_REGISTRAR_ENABLED

Show more

boolean

true

Configures service registrar type, e.g. "consul". A ServiceRegistrarProvider for the type has to be available

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_REGISTRAR_TYPE

Show more

string

Service Registrar parameters. Check the documentation of the selected registrar type for available parameters

Environment variable: QUARKUS_STORK__SERVICE_NAME__SERVICE_REGISTRAR__PARAMETERS_

Show more

Map<String,String>

関連コンテンツ