4 votes

Comment configurer un contrôleur d'entrée Kubernetes bare-metal pour écouter le port 80 ?

J'ai une configuration de Kubernetes avec 1 maître et 1 esclave, hébergée sur des gouttes DigitalOcean. Pour exposer mes services, je veux utiliser des Ingress.

Comme j'ai une installation bare metal, je dois configurer mon propre contrôleur d'ingress. Comment le faire écouter sur le port 443 ou 80 au lieu de la plage 30000-32767?

Pour configurer le contrôleur d'ingress, j'ai utilisé ce guide : https://kubernetes.github.io/ingress-nginx/deploy/

Mon service de contrôleur ressemble à ceci :

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

Et maintenant, évidemment, parce que la plage NodePort est de 30000-32767, ce contrôleur n'est pas mappé sur le port 80 ou 443 :

 kubectl get services --all-namespaces
NAMESPACE       NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   ingress-nginx          NodePort    10.103.166.230           80:30907/TCP,443:30653/TCP   21m

4voto

mk_sta Points 2398

Je suis d'accord avec @Matthew L Daniel, si vous ne considérez pas l'utilisation d'un équilibrage de charge externe, la meilleure option serait de partager l'interface réseau hôte avec le Pod ingress-nginx en activant l'option hostNetwork dans la spécification des Pods :

template:
  spec:
    hostNetwork: true

Ainsi, le contrôleur NGINX Ingress peut lier directement les ports 80 et 443 aux nœuds Kubernetes, sans mapper de ports proxy spéciaux (30000-32767) aux services imbriqués. Trouvez plus d'informations ici.

0voto

sfgroups Points 692

Vous ne pouvez pas lier le service ingress au port 80. Vous pouvez exécuter HAProxy sur l'hôte et rediriger les requêtes du port 80,443 vers le numéro de port du service Ingress.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X