【问题标题】:What is the best practice for service discovery on the application layer in Kubernetes?Kubernetes 应用层服务发现的最佳实践是什么?
【发布时间】:2019-06-19 18:41:50
【问题描述】:

我有 3 个应用程序。

网关、ServiceA 和 ServiceB。

每个应用程序都位于自己的命名空间中。每当在所有 3 之一上推送到 CI/CD 服务器时。所有都根据分支名称进行部署。

例子:

  1. 在 ServiceA 存储库中创建一个新分支 (feature-1)。
  2. 进行并提交一些更改
  3. 构建服务器构建并部署具有唯一服务名称的feature-1 分支到Kubernetes 集群。
  4. 构建服务器查看 ServiceB 和网关以查找分支 feature-1,如果未找到则默认为 develop。对于网关,它从develop 创建一个feature-1 并部署该网关。
  5. 网关然后需要知道来自feature-1 的ServiceA 的DNS URL 以便能够调用它。

所以我的问题是如何使用 kubernetes 在应用程序 lvl 上进行服务发现?

【问题讨论】:

  • Kubernetes 已经存储了数据并拥有一个 API。授予 RBAC 角色对您需要直接查询的区域的读取权限。部署时为您的功能添加元数据标签。
  • 所以我可以在网关中使用github.com/kubernetes-client/javascript 之类的东西来查询K8S?
  • 是的,你可以用 kubernetes 客户端查询服务并提取 dns

标签: kubernetes istio


【解决方案1】:

我认为有两种方法可以实现。

1) 从 Kubernetes master 查询所有服务,API 等效于kubectl get services --all-namespaces。然后你需要配置一些逻辑来选择正确的服务。 为此,您可以使用例如SelectortargetPort 或指定ClusterIP。 更多详情可以在documentation找到。

2) 将每个分支构建的应用程序放在一个新的命名空间中,并让它们在命名空间内路由到它们通常的名称,而无需任何应用程序更改。更多信息在documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2018-10-21
    • 1970-01-01
    相关资源
    最近更新 更多