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

时间:2017-06-20 19:48:25

标签: kubernetes minikube kube-dns

我们正在转向使用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类型配置管理。

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

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

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

由于

2 个答案:

答案 0 :(得分:2)

CI / CD工具

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

热重装开发工具

将只关闭已修改的文件,并允许您使用热重载,例如使用nodemon for nodejs:

答案 1 :(得分: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.