【问题标题】:Kubernetes: Having same host name but different paths in ingresses in different namespaces in KubernetesKubernetes:在 Kubernetes 的不同命名空间中具有相同的主机名但入口中的不同路径
【发布时间】:2020-09-22 08:06:41
【问题描述】:

我想使用相同的主机名,例如example.com 在具有不同路径的两个不同名称空间中。例如在命名空间 A 我想要 example.com/clientA,在命名空间 B 我想要 example.com/clientB。关于如何实现这一点的任何想法?

【问题讨论】:

  • 这在很大程度上取决于您的入口控制器的实现。
  • 我的入口控制器在默认命名空间中
  • 没关系,但是入口控制器的行为非常不同。例如,我基于 ProxyKit 推出了我自己的,我拉动了所有入口规则并相应地路由。根据您使用的入口控制器,行为可能会有很大不同。有些可能是开箱即用的,有些可能需要ExternalService 才能与不同的命名空间通信。
  • 我明白了。我正在使用 nginx-inress 控制器。该应用程序在一个命名空间中运行良好,例如 example.com,但在另一个命名空间中我想要相同的主机名但不同的路径,例如 example.com/clientname

标签: kubernetes kubernetes-ingress kubernetes-namespace


【解决方案1】:

nginxinc 具有Cross-Namespace Configuration 功能,可让您完全按照您的描述进行操作。 您还可以找到准备好的部署、服务等示例。

您最可能不喜欢的唯一东西..nginxinc 不是免费的..

也看here

跨命名空间配置你可以传播Ingress配置 使用 Mergeable 跨多个 Ingress 资源的公共主机 入口资源。这样的资源可以属于相同的或不同的 命名空间。这使得在使用大量时更易于管理 的路径。请参阅我们 GitHub 上的 Mergeable Ingress Resources 示例。

作为 Mergeable Ingress 资源的替代方案,您可以使用 跨命名空间的 VirtualServer 和 VirtualServerRoute 资源 配置。请参阅我们的跨命名空间配置示例 GitHub。

【讨论】:

    【解决方案2】:

    如果您不想更改默认入口控制器 (nginx-ingress),另一种选择是在默认命名空间中定义 ExternalName 类型的服务,该服务指向另一个服务的完整内部服务名称命名空间。

    类似这样的:

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: my-svc
      name: webapp
      namespace: default
    spec:
      externalName: my-svc.my-namespace.svc # <-- put your service name with namespace here
      type: ExternalName
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-04
      • 2021-08-09
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多