在 Kubernetes 中部署您的 gRPC 服务
本页面解释了如何在 Kubernetes 中部署 Quarkus 中的 gRPC 服务。我们将继续使用gRPC 入门指南中的示例。
配置您的项目以使用 Quarkus Kubernetes 扩展
将 Quarkus Kubernetes 扩展添加到您的构建文件
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes</artifactId>
</dependency>
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 清单
quarkus build
./mvnw install
./gradlew build
生成后,您可以查看target/kubernetes
目录
target/kubernetes
└── kubernetes.json
└── kubernetes.yml
您可以在Kubernetes 指南中找到有关如何在 Kubernetes 中部署应用程序的更多信息。
使用 gRPC 健康探针
默认情况下,Kubernetes 资源不包含就绪和活跃度探针。要添加它们,请将 SmallRye Health 扩展导入到您的构建文件中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
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