Avem o configurație docker swarm pe patru mașini ubuntu aws ec2.
Doi dintre ei acționând ca manageri.
Acum, în loc să ne gestionăm singuri, vrem să facem portarea la un serviciu gestionat precum aks/eks pentru kubernetes.
Nu reușesc să găsesc niciunul până acum, așa că m-am gândit să migrem sarcinile noastre de lucru către kubernetes.
Ca parte a acestuia, rulăm comanda docker service pentru diferite baze de date, astfel încât ori de câte ori este necesară o bază de date de testare (postgres, oracle, mysql, etc) rulăm o comandă în docker swarm pentru a crea un serviciu și obținem un port aleatoriu pe care îl avem conectați-vă folosind ip-ul public al managerului.
Exemplu:
pentru postgres:
docker service create --name postgres_31 -p target=5432 -e POSTGRES_PASSWORD=parola measecretă -e POSTGRES_USER=admin -e POSTGRES_DB=testdb -d postgres:9.6.18
Cele de mai sus vor crea un port aleatoriu pentru postgres pentru portul 5432
ca mai jos, a generat 30048
Deci, utilizatorul se conectează cu ip-ul public al nodului manager și portul 30048 care va redirecționa către portul 5432 al bazei de date.
serviciul docker ls
p45fazswicxc postgres_31 replicat 1/1 postgres:13 *:30048->5432/tcp
În acest fel, am folosit pentru a crea mai multe baze de date de postgres (sau alte baze de date) pe roi (în scopuri de testare pentru echipa de dezvoltare).
Cum să reproduc acest mediu pe kubernetes?
În kubernetes, se pare că generează IP public separat pentru serviciul de tip load balancer pentru fiecare implementare, dar avem nevoie de unul singur.
M-am gândit să păstrez un echilibrator de încărcare azure extern și să redirecționez totul, dar configurația este doar pentru http, cred și poate fi doar pentru un singur port, nu cu mai multe porturi aleatoare, corectați-mă dacă greșesc.