我正在 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......