Kubernetes 按端口的入口后端规则?
我有一个功能入口运行与TLS设置和工作正常。我可以访问和,并且在https域上使用了正确的证书 我在谷歌上运行,我知道谷歌入口控制器不允许设置强制ssl以确保流量通过https。我知道我可以使用kubernetes.io/ingres.allow-http:“false”禁用http,但我们不想让用户知道他们需要使用https:// 我的想法是,如何解决这一问题,将有一个“重定向”后端,我将其定义为所有端口=80请求的默认后端,仅301到https。。。但是,我无法找到一种方法来定义尊重传入端口的入口规则 这是我目前的想法,但它当然不起作用:)Kubernetes 按端口的入口后端规则?,kubernetes,google-cloud-platform,google-kubernetes-engine,kubernetes-ingress,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Ingress,我有一个功能入口运行与TLS设置和工作正常。我可以访问和,并且在https域上使用了正确的证书 我在谷歌上运行,我知道谷歌入口控制器不允许设置强制ssl以确保流量通过https。我知道我可以使用kubernetes.io/ingres.allow-http:“false”禁用http,但我们不想让用户知道他们需要使用https:// 我的想法是,如何解决这一问题,将有一个“重定向”后端,我将其定义为所有端口=80请求的默认后端,仅301到https。。。但是,我无法找到一种方法来定义尊重传入端口
我一直在试图找到可以提供的规则键,但找不到任何列表,只是它们都与主机和路径有关的示例。目前无法在Google云负载平衡器中设置从
http://
到https://
的重定向。因此,您不能在GKE入口中执行此操作
我个人建议运行一个简单的服务,比如nginx容器,只需将http://
请求重写为https://
,并将其放在应用程序的80端口版本后面
编辑:我不确定如何实现这一点。您可能需要两个具有相同主机名的独立入口对象,但一个具有tls:
,另一个不具有。但我仍然不确定它是否会起作用,因为入口控制器可以创建多个转发规则,而您可能无法实现这一点
这里最好的解决方案可能只是使用TCP/IP负载平衡器(服务类型:LoadBalancer),监听:80和:443并自己终止TLS
看看这个问题,它与你的问题非常相似:我知道这一点,因此我的问题:)如果你看到我的例子,那正是我想要做的。但我还没有找到一种方法来做到这一点。无法在入口中定义端口。所以我认为你的答案不对。对不起!我的错。我想你可能需要两个入口物体。一个有TLS,一个没有。它们都指定相同的静态IP和主机名。你能试一下吗?我想那也不行。编辑了我的回答。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
spec:
tls:
- hosts:
- whoami.domain.com
secretName: tls-whoami
rules:
- host: whoami.domain.com
port: 443 # my wish :)
http:
paths:
- backend:
serviceName: whoami-service
servicePort: 80
- host: whoami.domain.com
port: 80 # my wish :)
http:
paths:
- backend:
serviceName: http-redirect-service
servicePort: 80