5

我有一个带有 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"

我也试过'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

重定向yaml:

apiVersion: networking.gke.io/v1beta1
kind: FrontendConfig
metadata:
  name: my-frontend-config
spec:
  redirectToHttps:
    enabled: true
4

1 回答 1

8

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

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

FrontendConfig: my-frontend-config

到:

networking.gke.io/v1beta1.FrontendConfig: "my-frontend-config"

它奏效了!

另外:确保你有:

kubernetes.io/ingress.allow-http: "true" 
于 2021-02-09T00:08:04.360 回答