【问题标题】:Kubernetes, Automatic Service fallback to another namespaceKubernetes,自动服务回退到另一个命名空间
【发布时间】:2018-10-22 08:07:08
【问题描述】:

我的 kubernetes 中有多个由多个命名空间表示的环境。

所有应用程序都有在每个命名空间中定义的服务端点。 我们有三个环境,dev、alpha 和 beta。 (相当于开发、测试和阶段)。这些环境是永久性的,这意味着所有应用程序都在其中运行。

现在在我的团队中,很少有并行开发发生,我们计划为此版本创建多个环境,并且只有少数应用程序是该版本的一部分。

让我们想想这个例子:我正在构建 feature1 并对 app1 和 app2 产生影响

还有 10 个其他应用没有任何影响。

因此,对于我的开发和并行测试大多数服务,我必须指向现有的 alpha 或 beta 环境,并且只指向命名空间中的 app1 和 app2。

我可以通过为所有其他服务使用 ExternalName 映射来实现这一点。

但如果我有超过 100 个服务并在 yaml 中管理外部端点,我会感到非常困难。

有什么方法可以将所有流量路由到另一个命名空间(如果不存在具有该名称的服务。)

有没有办法为命名空间设置全局 ExternalName?

【问题讨论】:

  • 这将在哪里运行?您正在使用自己的裸机或任何云提供商?我问是因为我会推荐 LoadBalancer,如果它是裸机检查service-loadbalancer,GCP 和 AWS 有自己的 LB。
  • 我使用 kops 在 aws 上运行
  • 也许你可以使用带有环境功能的 gitlab auto devops

标签: kubernetes kube-dns kubernetes-service kubernetes-namespace


【解决方案1】:

据我所知,不可能根据当前命名空间中的现有 pod 或服务将流量重定向到不同的命名空间。您只能通过更改其 YAML 配置来为 Service 选择目标,并且只能选择同一命名空间中的 pod。

您可以使用Helm charts 简化部署过程。它允许您将变量放入部署、服务等的 YAML 配置中,并在安装到集群期间使用单独的值文件替换它们。这是Using Helm to deploy to Kubernetes上的博客文章的链接

【讨论】:

  • 这个过程不太容易管理,因为一个环境中有 100 多个服务。因此使用 helm 管理它们会更加困难。此外,我想为每个用户自动生成新的发布环境。
  • 所以你在考虑一些 CICD 还是只是一些 ansible?
  • 我正在考虑系统级别的某种钩子,它可以充当指向 external 的后备服务定义,类似于 ExternalName kind
  • 我认为这对你的情况应该有所帮助Istio - Traffic Shifting
猜你喜欢
  • 2018-12-11
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2019-10-10
相关资源
最近更新 更多