Ingress 不会强制/阻止 GKE 上的 https 连接

Ingress 不会强制/阻止 GKE 上的 https 连接

我正在 GKE 上设置入口并遇到一个问题(即使遵循了所有教程)

我只想禁用 http 访问。以下是 的输出kubectl describe ingress

Name:             ######-https-expose
Namespace:        default
Address:          #.#.#.#
Default backend:  ######-port-expose:# (#.#.#.#:#)
Rules:
  Host        Path  Backends
  ----        ----  --------
  *           *     ######-port-expose:# (#.#.#.#:#)
Annotations:  ingress.gcp.kubernetes.io/pre-shared-cert: mcrt-#-fb#f-#db#-b#-#b#f#a#d#a#
              ingress.kubernetes.io/backends: {"k#s-be-#--e#c#f#f#e#":"HEALTHY"}
              ingress.kubernetes.io/force-ssl-redirect: true
              ingress.kubernetes.io/forwarding-rule: k#s-fw-default-######-https-expose--e#c#f#f#e#
              ingress.kubernetes.io/https-forwarding-rule: k#s-fws-default-######-https-expose--e#c#f#f#e#
              ingress.kubernetes.io/https-target-proxy: k#s-tps-default-######-https-expose--e#c#f#f#e#
              ingress.kubernetes.io/ssl-cert: mcrt-#-fb#f-#db#-b#-#b#f#a#d#a#
              ingress.kubernetes.io/target-proxy: k#s-tp-default-######-https-expose--e#c#f#f#e#
              ingress.kubernetes.io/url-map: k#s-um-default-######-https-expose--e#c#f#f#e#
              kubernetes.io/ingress.allow-http: false
              kubernetes.io/ingress.global-static-ip-name: ######
              networking.gke.io/managed-certificates: ######-certificate
Events:       <none>

kubernetes.io/ingress.allow-http: false在那里。我仍然可以通过 http:// 访问域名

附言:我的设置遇到了另一个问题,我再次遵循了所有官方文档,并能够通过 Google 控制台解决该问题。这让我认为 Ingress/GKE 本身存在错误。

入口防御。只需按照本教程操作即可: https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs#gcloud并禁用 http https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-xlb#disabling_http

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/force-ssl-redirect: "true"
    kubernetes.io/ingress.global-static-ip-name: ###
    networking.gke.io/managed-certificates: ###
    kubernetes.io/ingress.allow-http: "false"
  labels:
    app: ###
  name: ###
  namespace: default
spec:
  backend:
    serviceName: ###
    servicePort: ###

答案1

github 上有一个关于此问题的问题。如你所见这里该问题已在版本中得到修复>=1.17.5-gke.0

嗨,刚刚尝试了此修复程序(allowHttp:false)和集群版本 1.17.5-gke.0 它确实有效,从某种意义上说,当我尝试发送普通的 HTTP 请求时,响应是来自 GCP 后端的 404......

相关内容