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

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

  • 我想要实现的是:
  • 如果BL服务正在运行,则Staff UI和Config UI与之对话
  • 如果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集群,因此这将是朝着这一目标迈出的一步。

    最佳答案

    您可以使用所需的DNS名称和中间Kubernetes服务的/etc/hostsadd host records添加到StaffUI / ConfigUI容器ClusterIP中。

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

    关于docker - 使用Kubernetes服务隐藏真实的DNS名称-用于运行本地子集进行开发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51972111/

    10-16 18:16