Comment désactiver la redirection 308 HTTP vers HTTPS sur un ingress Nginx dans Kubernetes ?

Kubernetes logo

Astuce Kubernetes & Nginx

En voulant mettre en place Azure Front Door, je me suis confronté à une problématique technique. Azure Front Door me renvoyait une erreur CertificateNameCheckFailed. Pour contourner ce problème j’ai voulu permettre à AFD de communiquer avec le Ingress de mon cluster Kubernetes directement HTTP.

Quelle fut ma surprise quand je me suis rendu compte que toutes les requêtes HTTP étaient redirigées en HTTPS avec un code 308.

La solution pour supprimer cette redirection fut de modifier le ingress via kubectl

kubectl edit -n ingress-basic configmaps nginx-ingress-ingress-nginx-controller

et d’ajouter l’objet data à la configmap existante

data:
  allow-snippet-annotations: "true"
  ssl-redirect: "false"

L’objet data, initialement n’existe pas, j’ai du le rajouter moi même !

Exemple complet du YAML

apiVersion: v1
data:
  allow-snippet-annotations: "true"
  ssl-redirect: "false"
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: nginx-ingress
    meta.helm.sh/release-namespace: ingress-basic
  creationTimestamp: "2021-11-29T13:33:08Z"
  name: nginx-ingress-ingress-nginx-controller
  namespace: ingress-basic