是否可以在不同命名空间中对多个 Ingress 资源 运行 使用相同的主机名?
Is it possible to use same hostname with multiple Ingress resources running in different namespaces?
我想使用相同的主机名,比如 example.com
和不同命名空间中的多个 Ingress 资源 运行,即 monitoring
和 myapp
。我正在使用 Kubernetes nginx-ingress 控制器。
haproxy-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: haproxy-ingress
namespace: myapp
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
# fill in host here
- example.com
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: haproxy
port:
number: 80
grafana-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
# only match /grafana and paths under /grafana/
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
当我在做 curl example.com
时,它会将我重定向到命名空间 one 中的部署 运行(如预期的那样),但是当我在做 curl example.com/grafana
时,它仍然是将我重定向到命名空间一部署。
请帮忙。
是的,这是可能的。
您的情况可能有两个问题。
一个是您不需要 grafana 入口的正则表达式路径。简单 /grafana
路径对于路径类型 Prefix
和路径类型 Prefix
都可以,任何 /grafana/...
都将被重定向相关服务。所以清单文件将是:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
namespace: monitoring
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
第二个问题可能是相关服务或部署可能不在同一命名空间下 monitoring
。请确保 deployment/service/secret 或 grafana 所需的其他资源保持在同一命名空间 monitoring
.
下
我想使用相同的主机名,比如 example.com
和不同命名空间中的多个 Ingress 资源 运行,即 monitoring
和 myapp
。我正在使用 Kubernetes nginx-ingress 控制器。
haproxy-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: haproxy-ingress
namespace: myapp
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
# fill in host here
- example.com
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: haproxy
port:
number: 80
grafana-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
# only match /grafana and paths under /grafana/
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
当我在做 curl example.com
时,它会将我重定向到命名空间 one 中的部署 运行(如预期的那样),但是当我在做 curl example.com/grafana
时,它仍然是将我重定向到命名空间一部署。
请帮忙。
是的,这是可能的。
您的情况可能有两个问题。
一个是您不需要 grafana 入口的正则表达式路径。简单 /grafana
路径对于路径类型 Prefix
和路径类型 Prefix
都可以,任何 /grafana/...
都将被重定向相关服务。所以清单文件将是:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
namespace: monitoring
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
第二个问题可能是相关服务或部署可能不在同一命名空间下 monitoring
。请确保 deployment/service/secret 或 grafana 所需的其他资源保持在同一命名空间 monitoring
.