Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GKE ingress Https Redirect - FrontendConfig not recognized

I have an GKE ingress with both Http and Https. I want to redirect the traffic from port 80 to port 443. I found this: https://github.com/kubernetes/ingress-gce/issues/1075 which let to this: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#https_redirect.

The proposed solution adds a FrontendConfig with a RedirectToHttps flag which uses some LoadBalancer functionality. Yet when I try to add the FrontendEndConfig, I get the following error:

error: unable to recognize "ssl.yaml": no matches for kind "FrontendConfig" in version "networking.gke.io/v1beta1"

I have also tried 'networking.gke.io/v1' and 'v1beta2'. The latest GKE version available in my zone is 1.17.13-gke.2001. I have recently launched the cluster so although I don't know how to check the GKE version, I reckon it's running on the latest version.

Anyone has a clue why my kubectl doesn't recognize this kind?


Ingress 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

Redirect yaml:

apiVersion: networking.gke.io/v1beta1
kind: FrontendConfig
metadata:
  name: my-frontend-config
spec:
  redirectToHttps:
    enabled: true
like image 811
Niels Uitterdijk Avatar asked Mar 01 '23 21:03

Niels Uitterdijk


1 Answers

Thank you for pointing me in the right direction!

I had to upgrade the cluster as MrKoopaKiller indicated and also changed the annotation:

FrontendConfig: my-frontend-config

to:

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

and it worked!

also: make sure you have:

kubernetes.io/ingress.allow-http: "true" 
like image 167
Natalia C Avatar answered Apr 26 '23 10:04

Natalia C