因此,我在集群中运行了一系列服务,所有服务都通过HTTP
唯一入口对象公开,例如:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: some-ingress
spec:
ingressClassName: nginx
rules:
- http:
paths:
- backend:
service:
name: some-svc
port:
number: 80
path: /some-svc(/|$)(.*)
pathType: Prefix
它们是通过http://<CLUSTER_EXTERNAL_IP>/some-svc
访问的,它的工作原理是ofc。
现在,我想为每个服务创建一个额外的入口对象,它将强制SSL
连接,并允许使用域而不是IP地址。
问题是,在测试连接时,较新的SSL
入口总是返回404
。
清单如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: "some-ingress-ssl"
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
ingress.kubernetes.io/app-root: "/some-svc"
spec:
tls:
- hosts:
- foobar.com
secretName: foobar-tls
rules:
- host: foobar.com
http:
paths:
- path: /some-svc(/|$)(.*)
pathType: Prefix
backend:
service:
name: some-svc
port:
number: 80
测试(foobar.com指向集群外部IP):
> curl -I http://<CLUSTER_EXTERNAL_IP>/some-svc
HTTP/1.1 200 OK
> curl -I https://foobar.com/some-svc
HTTP/2 404
有没有可能同时有两个入口?(一个强制SSL
,另一个不强制)如果有,我在这里做错了什么?
1条答案
按热度按时间l7wslrjt1#
想通了我还遗漏了这样的注解:
在
SSL
入口中...现在就像一个魅力,也许有人会发现这个有用