GKE 入口 https 重定向 - FrontendConfig 无法识别

Nie*_*ijk 7 https google-kubernetes-engine gke-networking

我有一个同时包含 Http 和 Https 的 GKE 入口。我想将流量从端口 80 重定向到端口 443。我发现了这个:https: //github.com/kubernetes/ingress-gce/issues/1075 ,它让这个: https: //cloud.google.com/kubernetes -engine/docs/how-to/ingress-features#https_redirect

建议的解决方案添加了一个带有 RedirectToHttps 标志的 FrontendConfig,该标志使用了一些 LoadBalancer 功能。然而,当我尝试添加 FrontendEndConfig 时,出现以下错误:

error: unable to recognize "ssl.yaml": no matches for kind "FrontendConfig" in version "networking.gke.io/v1beta1"
Run Code Online (Sandbox Code Playgroud)

我还尝试过“networking.gke.io/v1”和“v1beta2”。我的区域中可用的最新 GKE 版本是 1.17.13-gke.2001。我最近启动了集群,所以虽然我不知道如何检查 GKE 版本,但我认为它正在最新版本上运行。

有人知道为什么我的 kubectl 不识别这种类型吗?


入口 yaml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
  annotations:
    FrontendConfig: my-frontend-config
    kubernetes.io/ingress.global-static-ip-name: 'web-static-ip'
    networking.gke.io/managed-certificates: mycertificate
    # kubernetes.io/ingress.allow-http: "false"
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: frontend
          servicePort: 80
      - path: /api/*
        backend:
          serviceName: backend
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

重定向 yaml:

apiVersion: networking.gke.io/v1beta1
kind: FrontendConfig
metadata:
  name: my-frontend-config
spec:
  redirectToHttps:
    enabled: true
Run Code Online (Sandbox Code Playgroud)

小智 13

感谢您为我指明了正确的方向!

我必须按照 MrKoopaKiller 的指示升级集群,并更改注释:

FrontendConfig: my-frontend-config
Run Code Online (Sandbox Code Playgroud)

到:

networking.gke.io/v1beta1.FrontendConfig: "my-frontend-config"
Run Code Online (Sandbox Code Playgroud)

成功了!

另外:确保您有:

kubernetes.io/ingress.allow-http: "true" 
Run Code Online (Sandbox Code Playgroud)