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

Implantando seu serviço gRPC no 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
Se você configurar o Quarkus para usar a mesma porta para os servidores HTTP e gRPC com a propriedade quarkus.grpc.server.use-separate-server=false, então você não precisa alterar a propriedade 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

Por padrão, os recursos do Kubernetes não contêm sondas de prontidão (readiness) e vivacidade (liveness). Para adicioná-las, importe a extensão Smallrye Health para seu arquivo de construção:

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

Conteúdo Relacionado