web-dev-qa-db-fra.com

Comment forcer SSL pour Kubernetes Ingress sur GKE

Existe-t-il un moyen de forcer une mise à niveau SSL pour les connexions entrantes sur l'équilibreur de charge d'entrée? Ou si cela n'est pas possible avec, puis-je désactiver le port: 80? Je n'ai pas trouvé de bonnes pages de documentation qui décrivent une telle option dans le fichier YAML. Merci beaucoup d'avance!

33
Simon Heinzle

https://github.com/kubernetes/ingress-gce#frontend-https

Vous pouvez bloquer HTTP via l'annotation kubernetes.io/ingress.allow-http: "false" ou redirigez HTTP vers HTTPS en spécifiant un backend personnalisé. Malheureusement, GCE ne gère pas encore la redirection ou la réécriture sur la couche L7 pour vous. (voir https://github.com/kubernetes/ingress-gce#ingress-cannot-redirect-http-to-https )

40
Prashanth B

L'annotation a changé:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
  annotations:
    kubernetes.io/ingress.allow-http: "false"
spec:
...

Voici le changement d'annotation PR: https://github.com/kubernetes/contrib/pull/1462/files

14
mlazarov

Si vous n'êtes pas lié au contrôleur d'entrée GCLB, vous pouvez consulter le contrôleur d'entrée Nginx . Ce contrôleur est différent du contrôleur intégré de plusieurs façons. Vous devez d'abord et avant tout en déployer et gérer un par vous-même. Mais si vous êtes prêt à le faire, vous bénéficiez de ne pas dépendre du GCE LB (20 $/mois) et d'obtenir le support pour IPv6/websockets.

documentation indique:

Par défaut, le contrôleur redirige (301) vers HTTPS si TLS est activé pour cette entrée. Si vous souhaitez désactiver ce comportement globalement, vous pouvez utiliser ssl-redirect: "false" dans la carte de configuration NGINX.

La récente .9.0-beta. est livrée avec une annotation supplémentaire pour appliquer explicitement cette redirection:

Forcer la redirection vers SSL à l'aide de l'annotation ingress.kubernetes.io/force-ssl-redirect

11
Fabian Dörk