Kubernetes で gRPC サービスをデプロイする
このページでは、Kubernetes の Quarkus に gRPC サービスをデプロイする方法について説明します。 引き続き gRPC スタートガイド の例を使用します。
Quarkus Kubernetes エクステンションを使用するようにプロジェクトを設定する
Quarkus Kubernetes エクステンションをビルドファイルに追加します。
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes</artifactId>
</dependency>
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
./mvnw install
./gradlew build
生成されたら、target/kubernetes
ディレクトリーを確認します。
target/kubernetes
└── kubernetes.json
└── kubernetes.yml
Kubernetes でアプリケーションをデプロイする方法の詳細は、Kubernetes ガイド を参照してください。
gRPC ヘルスプローブの使用
By default, the Kubernetes resources do not contain readiness and liveness probes. To add them, import the SmallRye Health extension to your build file:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
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