The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Kubernetes で gRPC サービスをデプロイする

このページでは、Kubernetes の Quarkus に gRPC サービスをデプロイする方法について説明します。 引き続き gRPC スタートガイド の例を使用します。

Quarkus Kubernetes エクステンションを使用するようにプロジェクトを設定する

Quarkus Kubernetes エクステンションをビルドファイルに追加します。

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-kubernetes</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-kubernetes")

次に、Kubernetes Ingress リソースを使用してアプリケーションを公開します。

quarkus.kubernetes.ingress.expose=true

Quarkus Kubernetes は、ポート名 http を使用して HTTP サーバーをバインドし、ポート名 grpc を使用して gRPC サーバーをバインドします。デフォルトでは、Quarkus アプリケーションはポート名 http のみを公開するため、HTTP サーバーのみがパブリックにアクセス可能になります。代わりに gRPC サーバーを公開するには、application.properties で quarkus.kubernetes.ingress.target-port=grpc プロパティーを設定します。

quarkus.kubernetes.ingress.target-port=grpc
プロパティー quarkus.grpc.server.use-separate-server=false を使用して、HTTP サーバーと gRPC サーバーの両方に同じポートを使用するように Quarkus を設定する場合は、デフォルトの target-port を変更する必要はありません。

最後に、ターミナルでコマンドを実行して Kubernetes マニフェストを生成する必要があります。

コマンドラインインタフェース
quarkus build
Maven
./mvnw install
Gradle
./gradlew build

生成されたら、target/kubernetes ディレクトリーを確認します。

target/kubernetes
└── kubernetes.json
└── kubernetes.yml

Kubernetes でアプリケーションをデプロイする方法の詳細は、Kubernetes ガイド を参照してください。

gRPC ヘルスプローブの使用

デフォルトでは、Kubernetes リソースに readiness プローブと liveness プローブは含まれていません。これらを追加するには、Smalllye Health エクステンションをビルドファイルにインポートします。

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-health</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-smallrye-health")
ヘルスエクステンションの詳細は、SmallRye Health ガイド を参照してください。

デフォルトでは、このエクステンションは、プローブが HTTP サーバーを使用するように設定します (Quarkus REST (旧称 RESTEasy Reactive) などの一部のエクステンションによって提供される HTTP サーバー)。内部的には、このプローブは、生成される gRPC Health サービス も使用します。

HTTP サーバーを公開する Quarkus エクステンションをアプリケーションが使用していない場合でも、設定にプロパティー quarkus.kubernetes.readiness-probe.grpc-action-enabled=true を追加することで、プローブが gRPC Health サービスを直接使用するように設定できます。

quarkus.kubernetes.readiness-probe.grpc-action-enabled=true

関連コンテンツ