Kubernetes 按端口的入口后端规则?

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。。。但是,我无法找到一种方法来定义尊重传入端口

我有一个功能入口运行与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