Kubernetes - Exposer une application sur internet
Jump to navigation
Jump to search
Voici une méthode d'exposition d'une application sur un réseau externe.
Déploiement de deux services HTTP présentant une simple page web sur serveurs Nginx Nous utilisons une configuration de base, 1 Master + 2 Nodes Le premier déploiement présente une page bleue; hébergée sur X Pods (ici 3) Le second déploiement présente une page verte; hébergée sur Y Pods (ici 4) Ces déploiements sont ensuite présentés en services (type NodePort) Nous utilisons ensuite un contrôleur Ingress (Type Nginx) qui va effectuer le LoadBalancing (L7) entre les Pods Les règles définies au niveau du Ingress permettent le routage entre les 2 services (nginx-blue / nginx-green) selon l'URL d'accès Le controleur Ingress est présenté en service NodePort et est accessible sur chaque node de notre cluster K8s sur un port externe (ici 32078) (NB: l'accès via le Master est ici autorisé mais pourrait être désactivé selon configuration souhaitée) Les NodePorts (32078) sont présentés à l'extérieur via le service LoadBalancer de la Edge Gateway Ceci permet l'équilibrage de charge entre les différents nodes du cluster. |
![]() |
Déploiement Nginx-Blue:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-blue-deployment labels: app: nginx-blue spec: replicas: 3 selector: matchLabels: app: nginx-blue template: metadata: labels: app: nginx-blue spec: containers: - name: nginx-blue image: cauchabie/ocb-testing:nginx-blue ports: - containerPort: 80
Déclaration du service:
Installation d'un controleur Ingress Suivre la documentation:https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
Création d'un service Ingress pour exposer nos services nginx-blue et nginx-green:
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: my-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: nginx-blue http: paths: - backend: serviceName: myservice-blue servicePort: 80 - host: nginx-green http: paths: - backend: serviceName: myservice-green servicePort: 80
Enfin, configuration du service LoadBalancer sur la Edge Gateway (VCloud):
Pool créé avec les 3 nodes du cluster; sur le port d'écoute du contrôleur Ingress:
Enfin, création du serveur virtuel pour accès externe:
Etape suivante: Configurer un noeud NFS