【问题标题】:How to best utilize Kubernetes/minikube DNS for local development [closed]如何最好地利用 Kubernetes/minikube DNS 进行本地开发 [关闭]
【发布时间】:2017-06-20 19:48:25
【问题描述】:

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

谢谢

【问题讨论】:

标签: kubernetes minikube kube-dns


【解决方案1】:

CI/CD 工具

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

热重载开发工具

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

【讨论】:

    【解决方案2】:

    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.
    

    【讨论】:

    • 谢谢,这可能会有所帮助...调查一下
    猜你喜欢
    • 2020-07-23
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2019-03-14
    • 2016-01-08
    • 2018-08-23
    相关资源
    最近更新 更多