web-dev-qa-db-fra.com

IP sortante statique dans Kubernetes

J'exécute un cluster k8s dans google cloud (GKE) et un serveur MySQL dans aws (RDS). Les pods doivent se connecter au RDS qui autorise uniquement les connexions à partir de certaines IP. Comment puis-je configurer le trafic sortant pour avoir une IP statique?

29
Shouichi

J'ai eu le même problème pour me connecter à un serveur sftp à partir d'un pod. Pour résoudre ce problème, vous devez d'abord créer une adresse IP externe:

gcloud compute addresses create {{ EXT_ADDRESS_NAME }} --region {{ REGION }}

Ensuite, je suppose que votre pod est affecté à votre cluster de nœuds de pool par défaut. Extrayez le nom de votre nœud de pool par défaut:

gcloud compute instances list | awk '{ print $1 }' | grep default-pool

Effacez l'IP externe par défaut de l'instance vm:

gcloud compute instances delete-access-config {{ VM_DEFAULT-POOL_INSTANCE }} --access-config-name external-nat

Ajoutez votre IP statique externe créée avant:

gcloud compute instances add-access-config {{ VM_DEFAULT-POOL_INSTANCE }} --access-config-name external-nat --address {{ EXT_ADDRESS_IP }}

Si votre pod n'est pas attaché au nœud du pool par défaut, n'oubliez pas de le sélectionner avec un nœudSelector:

nodeSelector:
    cloud.google.com/gke-nodepool: {{ NODE_NAME }} 
14
Luc Charpentier

J'ai fait des recherches et j'ai trouvé deux ou trois choses.

La chose que nous recherchons s'appelle "IP de sortie" ou NAT-as-a-Service et elles ne sont pas encore disponibles dans GKE.

Dans tous les cas, nous avons deux options différentes:

  1. créer un NAT Gateway VM qui agit comme un proxy de sortie. Voici un bel article qui en parle ( google cloud NAT passerelle )
  2. attribuer des adresses IP statiques au cluster de conteneurs VM instances

J'espère que cela aide!

6
Michele Orsi

Vous pouvez utiliser kubeip, un pod qui, pour chaque nouveau nœud, attribuera une adresse IP à partir d'un pool prédéfini.

0
Marcin Bilski