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:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes</artifactId>
</dependency>
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:
quarkus build
./mvnw install
./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:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
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