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

时间:2019-12-15 04:11:48

标签: kubernetes kubernetes-ingress

我有两个名为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个入口工作正常,但我想使用相同的名称空间设置服务,因为这简化了我的其他部署。

1 个答案:

答案 0 :(得分:1)

您应该在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