我们正在寻找一种在master-minion nginx入口实现中使用子域的方法。我们尝试了许多不同的方法,但还没有。该文档示例工作正常(this),但该示例带有路径。无论如何,还是可以通过子域做到这一点?
每次创建新页面时,我都会拥有一个不同的子域,如wordpress结构,我想知道什么是最好的方法。
非常感谢您!
答案 0 :(得分:2)
Nginx入口控制器文档(InputStream)提供了一个使用不同主机的非常简单的示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-myservicea
annotations:
# use the shared ingress-nginx
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myservicea.foo.org
http:
paths:
- path: /
backend:
serviceName: myservicea
servicePort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-myserviceb
annotations:
# use the shared ingress-nginx
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myserviceb.foo.org
http:
paths:
- path: /
backend:
serviceName: myserviceb
servicePort: 80
您尝试或尝试实现的哪些方法不起作用?
答案 1 :(得分:0)
@paltaa已经显示了您可以选择的路径之一,其中包含2个不同的主机。
据我自动了解,您希望托管通配符,其中有github issue。
Kubernetes 1.18已发布,具有一些增强功能,例如主机名中的通配符和对Path的更好处理。
引自kubernetes documentation。
主机可以是精确匹配项(例如“ foo.bar.com”)或通配符(例如“ * .foo.com”)。精确匹配要求HTTP主机头与host字段匹配。通配符匹配要求HTTP主机标头等于通配符规则的后缀。
Host Host header Match?
*.foo.com bar.foo.com Matches based on shared suffix
*.foo.com baz.bar.foo.com No match, wildcard only covers a single DNS label
*.foo.com foo.com No match, wildcard only covers a single DNS label
有两个示例。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-wildcard-host
spec:
rules:
- host: "foo.bar.com"
http:
paths:
- pathType: Prefix
path: "/bar"
backend:
service:
name: service1
port:
number: 80
- host: "*.foo.com"
http:
paths:
- pathType: Prefix
path: "/foo"
backend:
service:
name: service2
port:
number: 80
apiVersion: "networking.k8s.io/v1beta1"
kind: "Ingress"
metadata:
name: "example-ingress"
spec:
rules:
- host: "*.example.com"
http:
paths:
- path: "/example"
pathType: "Prefix"
backend:
serviceName: "example-service"
servicePort: 80