Deploying your gRPC service in Kubernetes

Esta página explica como implantar seu serviço gRPC no Quarkus no Kubernetes. Continuaremos com o exemplo do guia Iniciando com gRPC .

Configurando o seu projeto para utilizar a extensão Kubernetes no Quarkus

Adicione a extensão Kubernetes do Quarkus ao seu arquivo de construção:

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

A seguir, queremos expor nossa aplicação usando o recurso Kubernetes Ingress:

quarkus.kubernetes.ingress.expose=true

O Quarkus Kubernetes vai vincular o servidor HTTP usando o nome da porta http e o servidor gRPC usando o nome da porta grpc. Por padrão, a aplicação Quarkus só expõe o nome da porta http, então, apenas o servidor HTTP estará publicamente acessível. Para expor o servidor gRPC, defina a propriedade quarkus.kubernetes.ingress.target-port=grpc no seu arquivo application.properties:

quarkus.kubernetes.ingress.target-port=grpc
If you configure Quarkus to use the same port for both HTTP and gRPC servers with the property quarkus.grpc.server.use-separate-server=false, then you don’t need to change the default target-port.

Por fim, precisamos gerar os manifestos do Kubernetes executando o comando em um terminal:

CLI
quarkus build
Maven
./mvnw install
Gradle
./gradlew build

Depois de gerados, você pode verificar o diretório target/kubernetes:

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

Você pode encontrar mais informações sobre como implantar a aplicação no Kubernetes no guia Kubernetes.

Usando gRPC Health probes

By default, the Kubernetes resources do not contain readiness and liveness probes. To add them, import the SmallRye Health extension to your build file:

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-health</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-smallrye-health")
More information about the health extension can be found in the SmallRye Health guide.

By default, this extension will configure the probes to use the HTTP server (which is provided by some extensions like the Quarkus REST (formerly RESTEasy Reactive) extension). Internally, this probe will also use the generated gRPC Health services.

Se sua aplicação não usar nenhuma extensão do Quarkus que exponha um servidor HTTP, você ainda pode configurar as sondas para usar diretamente o serviço gRPC Health, adicionando a propriedade quarkus.kubernetes.readiness-probe.grpc-action-enabled=true à sua configuração:

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