Deploying your gRPC Service in Kubernetes
此页面介绍了如何在 Kubernetes 中部署你的 gRPC 服务。我们将继续 the Getting Started gRPC guide 中的示例。
Configuring your project to use the Quarkus Kubernetes extension
将 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 配置为使用属性 |
最后,我们需要通过在终端中运行命令来生成 Kubernetes 清单:
quarkus build
./mvnw install
./gradlew build
生成后,你可以查看 target/kubernetes
目录:
target/kubernetes
└── kubernetes.json
└── kubernetes.yml
你可以在 the Kubernetes guide 中找到有关如何在 Kubernetes 中部署应用程序的更多信息。
Using gRPC Health probes
默认情况下,Kubernetes 资源不包含准备或活动探测。若要添加它们,请将 Smallrye Health 扩展导入你的构建文件:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
implementation("io.quarkus:quarkus-smallrye-health")
你可以在 the SmallRye Health guide 中找到有关 Health 扩展的更多信息。 |
默认情况下,此扩展将配置探测以使用 HTTP 服务器(由一些扩展提供,如 Quarkus REST(以前称为 RESTEasy Reactive)扩展)。在内部,此探测还会使用 the generated gRPC Health services。
如果你的应用程序不使用公开 HTTP 服务器的任何 Quarkus 扩展,你仍然可以通过将属性 quarkus.kubernetes.readiness-probe.grpc-action-enabled=true
添加到你的配置中来配置探测以直接使用 gRPC Health 服务:
quarkus.kubernetes.readiness-probe.grpc-action-enabled=true