Java-Kubernetes按标签查找服务

Seb*_*b77 5 java spring-boot kubernetes microservices spring-cloud

我正在尝试使用spring cloud和minikube开发一个示例应用程序,其中包括3个spring boot应用程序。

前两个是具有相同端点但功能不同的两个不同的应用程序(服务器),而第三个是用于将其他两个应用程序集成到一个公开的api中的客户端。

我设法在minikube中部署了所有三个应用程序,并设法开发了完整的堆栈并使它们彼此通信,但是现在我想更进一步,自动发现两个服务器,而无需对服务名称进行硬编码。

我使用相同的标签将两台服务器部署在minikube中,希望找到一些东西,以便客户端能够自动找到与这两个服务器应用程序相关的服务。这样可以轻松地扩展应用程序,以便在将新服务器添加到堆栈中时,客户端无需更改即可找到并公开它。

使用Netflix Eureka,可以通过类似以下方式轻松实现

discoveryClient.getInstances("service-name").forEach((ServiceInstance s)
Run Code Online (Sandbox Code Playgroud)

但是我不想在微服务列表中添加额外的eureka服务器,因为我们将使用kubernetes。

是否有任何库为kubernetes提供此功能?

Osw*_*ann 1

您可以使用:

命令行界面:kubectl get services --selector=YOUR-LABEL-NAME.

API:GET /api/v1/namespaces/{namespace}/serviceslabelSelector参数请参见API文档

但是要小心服务内部的动态服务发现。正如 derSteve 在下面的评论中提到的那样 - 服务之间依赖关系的最佳实践是将它们部署为所需的逻辑捆绑包deployments,而无需执行对先前未知服务的发现。请参阅此链接