编辑此页面

在 Kubernetes 中部署您的 gRPC 服务

本页面解释了如何在 Kubernetes 中部署 Quarkus 中的 gRPC 服务。我们将继续使用gRPC 入门指南中的示例。

配置您的项目以使用 Quarkus Kubernetes 扩展

将 Quarkus Kubernetes 扩展添加到您的构建文件

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

接下来,我们想要使用 Kubernetes Ingress 资源公开我们的应用程序

quarkus.kubernetes.ingress.expose=true

Quarkus Kubernetes 将使用端口名称http绑定 HTTP 服务器,并使用端口名称grpc绑定 gRPC 服务器。默认情况下,Quarkus 应用程序只会公开端口名称http,因此只有 HTTP 服务器可以公开访问。要改为公开 gRPC 服务器,请在您的 application.properties 中设置quarkus.kubernetes.ingress.target-port=grpc属性

quarkus.kubernetes.ingress.target-port=grpc
如果您配置 Quarkus 使用相同的端口用于 HTTP 和 gRPC 服务器,并使用属性quarkus.grpc.server.use-separate-server=false,那么您不需要更改默认的target-port

最后,我们需要通过在终端中运行命令来生成 Kubernetes 清单

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

生成后,您可以查看target/kubernetes目录

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

您可以在Kubernetes 指南中找到有关如何在 Kubernetes 中部署应用程序的更多信息。

使用 gRPC 健康探针

默认情况下,Kubernetes 资源不包含就绪和活跃度探针。要添加它们,请将 SmallRye Health 扩展导入到您的构建文件中

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-health</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-smallrye-health")
有关健康扩展的更多信息,请参见SmallRye Health 指南

默认情况下,此扩展将配置探针以使用 HTTP 服务器(由一些扩展提供,例如 Quarkus REST (以前的 RESTEasy Reactive) 扩展)。在内部,此探针也将使用生成的 gRPC 健康服务

如果您的应用程序不使用任何公开 HTTP 服务器的 Quarkus 扩展,您仍然可以通过将属性quarkus.kubernetes.readiness-probe.grpc-action-enabled=true添加到您的配置中来配置探针直接使用 gRPC 健康服务

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

相关内容