-1

我们正在改用 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 的强大功能?

谢谢

4

2 回答 2

2

CI/CD 工具

在每次代码更改时始终重新构建和重新部署您的应用程序:

热重载开发工具

只会切换已修改的文件并允许您使用热重新加载,例如使用 nodemon 用于 nodejs:

  • DevSpace:https ://github.com/covexo/devspace (也提供终端连接)
  • ksync:https ://github.com/vapor-ware/ksync (重点同步)
于 2018-09-18T21:18:12.643 回答
1

https://www.datawire.io/products/telepresence/

从他们的网站:

Transparently access other microservices in a remote Kubernetes 
cluster, as well as cloud resources such as AWS RDS. Your code has 
access to the same environment variables and volumes as a regular 
Kubernetes pod.
于 2017-06-20T20:55:34.717 回答