Can you redirect HTTP to HTTPS with a k8s Ingress?

11/28/2021

I've tried everything on stack overflow and beyond and can't find a solution that works to redirect http to https. My current config is below.

My ingress is:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/ingress.global-static-ip-name: my-address
    networking.gke.io/managed-certificates: my-certificate
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
  rules:
  - host: mydomain.com
    http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: my-service
            port:
              number: 2400

And my service is:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: nodeweb
  ports:
  - name: my-service-port
    protocol: TCP
    port: 2400
    targetPort: 2400
-- nickponline
google-kubernetes-engine
kubernetes
kubernetes-ingress

1 Answer

11/28/2021

For GKE (1.17.13-gke.2600+), find this document explaining how to configure FrontendConfig with http-to-https redirect. Then you associate the FrontendConfig with your Ingress using networking.gke.io/v1beta1.FrontendConfig annotation.

-- jabbson
Source: StackOverflow