问题描述
我想使用相同的主机名,例如example.com在两个具有不同路径的不同名称空间中。例如在命名空间A中,我想要example.com/clientA;在命名空间B中,我想要example.com/clientB。关于如何实现这一目标的任何想法?
解决方法
nginxinc具有Cross-Namespace Configuration功能,可让您完全按照自己的描述进行操作。 您还可以在此处找到有关部署,服务等的准备好的示例。
您唯一可能不会喜欢的东西。nginxinc不是免费的。.
还要看here
,跨名称空间配置您可以传播Ingress配置 使用Mergeable跨多个Ingress资源访问通用主机 入口资源。这些资源可以属于相同或不同 命名空间。当使用大量时,这使管理更容易 的路径。请参阅我们GitHub上的Mergeable Ingress资源示例。
作为可合并的Ingress资源的替代方法,您可以使用 跨命名空间的VirtualServer和VirtualServerRoute资源 组态。请参阅我们的跨命名空间配置示例 GitHub。
如果您不想更改默认的入口控制器(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