web-dev-qa-db-fra.com

Comment exposer NodePort à Internet sur GCE

Comment puis-je exposer un service de type NodePort à Internet sans en utilisant le type LoadBalancer? Chaque ressource que j'ai trouvée le faisait en utilisant l'équilibreur de charge. Mais je ne veux pas que l'équilibrage de charge soit coûteux et inutile pour mon cas d'utilisation, car j'exécute une instance de l'image postgres qui monte sur un disque persistant et je voudrais pouvoir me connecter à ma base de données à partir de mon PC utilisant pgAdmin. Si cela est possible, pourriez-vous fournir une réponse un peu plus détaillée, car je suis nouveau sur Kubernetes, GCE et les réseaux.

Juste pour mémoire et un peu plus de contexte, j'ai un déploiement exécutant 3 répliques de mon serveur API auquel je me connecte via l'équilibreur de charge avec set loadBalancerIP et un autre déploiement qui exécute une instance de postgres avec le service NodePort via lequel mes serveurs API communiquent avec mon db. Et mon problème est que le maintien de la base de données sans accès public est difficile.

25
Hnus

utiliser NodePort comme type de service fonctionne immédiatement, par exemple comme ça:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
    - port: 443
      nodePort: 30443
      name: https
  selector:
    name: nginx

Plus de détails peuvent être trouvés dans la documentation . L'inconvénient de l'utilisation de NodePort est que vous devez vous occuper vous-même de l'intégration avec le pare-feu de vos fournisseurs. Un port de départ pour cela peut également être trouvé dans la section Configuring Your Cloud Provider's Firewalls de la documentation officielle.

Pour GCE, l'ouverture de ce qui précède au public sur tous les nœuds pourrait ressembler à:

gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443

Une fois que cela est en place, vos services doivent être accessibles via l'une des adresses IP publiques de vos nœuds. Vous les trouverez avec:

gcloud compute instances list
31
pagid

Vous pouvez exécuter kubectl dans une fenêtre de terminal (shell de commande ou d'alimentation dans Windows) pour transférer le déploiement postgresql vers votre hôte local.

kubectl port-forward deployment/my-pg-deployment 5432:5432

Pendant que cette commande est en cours d'exécution (elle s'exécute au premier plan), vous pouvez utiliser pgAdmin pour pointer vers localhost: 5432 pour accéder à votre pod sur le gke. Fermez simplement le terminal une fois que vous avez fini d'utiliser pgadmin.

1
Raj