为不同命名空间中具有相同名称的两个服务设置两个入口

Setup two ingress for two services with same names in different namespaces

我有 2 个命名空间,分别是 devstage 在两个名称空间中,我都有类似的设置。在两个命名空间中,我都有名为 frontend 的服务。

我想为此设置一个入口。我使用以下配置在两个命名空间中设置入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: dev.myapp.io
    http:
      paths:
      - backend:
          serviceName: frontend
          servicePort: 80

舞台上刚把主持人换成了stage.myapp.io。它不适用于其中一个命名空间。 我的做法是否正确?或者我需要在另一个命名空间(可能是 Kube 系统)中设置入口并在同一个入口中指向路径?

PS:如果我更改服务名称并保持不同,2 ingress 工作正常但我想设置具有相同命名空间的服务,因为它简化了我的其他部署。

您应该在 Ingress 中包含名称空间注释。考虑到这一点,您的 yaml 文件应如下所示:

开发:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress-dev
  namespace: dev
spec:
  rules:
  - host: dev.myapp.io
    http:
      paths:
      - backend:
          serviceName: frontend
          servicePort: 80    

阶段:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress-stage
  namespace: stage
spec:
  rules:
  - host: stage.myapp.io
    http:
      paths:
      - backend:
          serviceName: frontend
          servicePort: 80