我们正在改用 Kubernetes。通过内置的 dns 访问 k8s 部署中的其他已部署服务很简单。因此,如果我有一个名为 app1 的 pod/service 和一个名为 app2 的 pod/service 并且 app1 需要调用 app2,它可以只使用“app2”,并且 k8s dns 会发挥它的魔力并且一切正常。这很好,因为我们不需要为所有环境拥有 app1_host 和 app2_host 的配置管理开销。
这也适用于本地使用 minikube。如果 app1 和 app2 部署到 minikube 中,它们可以通过服务名称(与应用名称匹配)相互引用
但是,我遇到的问题是本地开发。假设我想在本地 IDE 中处理 app1。我可以在 minikube 中启动 app2,但现在如果我想让 app1 访问 minikube 中的 app2……我不能再只使用“app2”。我必须 ping minikube/kubectl api 并获取正在运行的 IP 和端口,然后我可以在本地使用它......这使我们回到使用 HOST/PORT 类型配置 mgmt。
我们可以更新 /etc/hosts 文件并将 app2 指向 minikube IP,但我仍然需要找出外部/暴露端口是什么。
我们可以使用 config mgmt host/port 并在启动时从 minikube/k8s api 动态填充它们。这是推荐的方式吗?有什么东西已经做到了(类似于 envconsul)?
当我尝试在 IDE 中本地工作但在 minikube 或 k8s 中运行依赖服务时,是否有更好/更优雅的解决方案可以利用 k8s dns 的强大功能?
谢谢