我们正在转向使用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的强大功能?
由于
答案 0 :(得分:2)
每次更改代码时,始终重新构建并重新部署您的应用程序:
将只关闭已修改的文件,并允许您使用热重载,例如使用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.