为不同命名空间中具有相同名称的两个服务设置两个入口
Setup two ingress for two services with same names in different namespaces
我有 2 个命名空间,分别是 dev
和 stage
在两个名称空间中,我都有类似的设置。在两个命名空间中,我都有名为 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
我有 2 个命名空间,分别是 dev
和 stage
在两个名称空间中,我都有类似的设置。在两个命名空间中,我都有名为 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