如何最好地利用 Kubernetes/minikube DNS 进行本地开发



我们正在转向使用 Kubernetes。 通过内置的 dns 访问 k8s 部署中的其他已部署服务非常简单。 因此,如果我有一个名为 app1 的 pod/服务,而一个名为 app2 的 pod/service 并且 app1 需要调用 app2,它只需使用"app2",k8s dns 就会发挥它的魔力,一切正常。 这很好,因为我们不需要为所有环境提供app1_host和app2_host的配置管理开销。

这也可以在使用 minikube 本地工作。 如果 app1 和 app2 部署到 minikube 中,它们可以通过服务名称(与应用程序名称匹配)相互引用

但是,我遇到的问题是本地发展。 假设我想在本地 IDE 中处理 app1。 我可以在迷你库贝中启动 app2,但现在如果我想让 app1 访问迷你库贝中的 app2......我不能再只使用"App2"。 我必须 ping minikube/kubectl api 并获取正在运行的 IP 和端口,然后我可以在本地使用它......这使我们回到使用主机/端口类型配置管理。

我们可以更新/etc/hosts 文件并将 app2 指向 minikube IP,但我仍然需要找出外部/暴露的端口是什么。

我们可以使用config mgmt主机/端口,并在启动时从minikube/k8s api动态填充它们。 这是推荐的方法吗? 有没有已经这样做的东西(类似于envconsul)?

有没有更好/更优雅的解决方案,当尝试在 IDE 中本地工作但在 minikube 或 k8s 中运行依赖服务时,我可以利用 k8s dns 的强大功能?

谢谢

CI/CD 工具

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

  • 斯卡福尔德:https://github.com/GoogleContainerTools/skaffold
  • 草稿:https://github.com/Azure/draft

热重载开发工具

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

  • DevSpace:https://github.com/covexo/devspace(也提供终端连接)
  • KSYNC:https://github.com/vapor-ware/ksync(专注于同步)

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.

最新更新