使用Kubernetes服务隐藏真实的DNS名称-用于运行本地子集进行开发

时间:2018-08-22 17:20:21

标签: docker kubernetes kubectl

我正在尝试建立一个包含CI环境子集的Kubernetes集群。具体来说,我正在尝试运行以下各项的组合:

  • 数据库
  • BL
  • 员工界面
  • Staff UI聚合器(有很多用于不同组件的Staff UI服务,这将它们组合在一起)
  • 配置界面
  • Config UI Aggregator(用于不同组件的许多Config UI Services,将它们组合在一起)

我想要实现的是:

  • 如果BL服务正在运行,则员工界面和配置界面会与其对话
  • 如果BL服务未运行,则Staff UI和Config UI会与我们CI环境中的版本进行对话。

我不能做的是更改Staff UI和Config UI用于解析BL的DNS名称-并且该DNS名称是完全限定的。

所以,我想做的是:

  • 如果BL正在运行,则Kubernetes DNS会将“ bl.dev.company.com”解析为BL服务
  • 如果BL未运行,则Kubernetes DNS不会解析“ bl.dev.company.com”,而是转到CI环境版本。

到目前为止,我未能让其中的 个步骤起作用:(

我没有列出我已经尝试过的事情,因为很有可能我尝试了正确的解决方案,没有完全理解它,做得不好,因此行不通。

这使用的是Kubernetes 1.10.3,在macOS上作为“ Docker for Desktop Edge Channel”的一部分运行。

可以通过links使用docker-compose来使它工作,但它并不那么灵活。此外,较长期的目标是将CI环境移至其自己的Kubernetes集群,因此这将是朝着这一目标迈出的一步。

1 个答案:

答案 0 :(得分:0)

您可以add host records使用所需的DNS名称和中间Kubernetes服务的/etc/hosts this进入StaffUI / ConfigUI窗格ClusterIP

然后,您可以通过更改服务选择器或设置ExternalName / externalIP来在BL部署期间更新服务配置。