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