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

Despliegue de su servicio gRPC en Kubernetes

This page explains how to deploy your gRPC service in Quarkus in Kubernetes. We’ll continue with the example from the Getting Started gRPC guide.

Configuración de su proyecto para utilizar la extensión Quarkus Kubernetes

Añade la extensión Quarkus Kubernetes a tu archivo de compilación:

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

A continuación, queremos exponer nuestra aplicación utilizando el recurso Kubernetes Ingress:

quarkus.kubernetes.ingress.expose=true

Quarkus Kubernetes enlazará el servidor HTTP utilizando el nombre de puerto http y el servidor gRPC utilizando el nombre de puerto grpc. Por defecto, la aplicación Quarkus sólo expondrá el nombre de puerto http, por lo que sólo el servidor HTTP será accesible públicamente. Para exponer el servidor gRPC en su lugar, establezca la propiedad quarkus.kubernetes.ingress.target-port=grpc en su application.properties:

quarkus.kubernetes.ingress.target-port=grpc
Si configuras Quarkus para usar el mismo puerto para ambos servidores HTTP y gRPC con la propiedad quarkus.grpc.server.use-separate-server=false, entonces no necesitas cambiar el valor por defecto target-port.

Por último, tenemos que generar los manifiestos de Kubernetes ejecutando el comando en un terminal:

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

Una vez generado, puede consultar el directorio target/kubernetes:

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

Puede encontrar más información sobre cómo desplegar la aplicación en Kubernetes en la guía de Kubernetes.

Uso de las sondas gRPC Health

Por defecto, los recursos de Kubernetes no contienen sondas de disponibilidad y liveness. Para añadirlas, importe la extensión Smallrye Health a su archivo de compilación:

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.

Si su aplicación no utiliza ninguna extensión de Quarkus que exponga un servidor HTTP, aún puede configurar las sondas para que utilicen directamente el servicio gRPC Health añadiendo la propiedad quarkus.kubernetes.readiness-probe.grpc-action-enabled=true en su configuración:

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