ProHoster > Blog > Administrazioa > Nola ireki tcpserver eta netcat-ekin Kubernetes pod edo edukiontzi batean tunel bat
Nola ireki tcpserver eta netcat-ekin Kubernetes pod edo edukiontzi batean tunel bat
Ohar. itzul.: LayerCI-ren sortzailearen ohar praktiko hau Kubernetes-en (eta gehiago) aholku eta trikimailu izenekoen ilustrazio bikaina da. Hemen proposatzen den irtenbidea bakanetako bat baino ez da eta, beharbada, ez da agerikoena (kasu batzuetan, komenigarria izan daiteke iruzkinetan lehen aipatutako K8entzako "bertakoa" kubectl port-forward). Hala ere, arazoa gutxienez erabilgarritasun klasikoak erabiltzearen eta horiek konbinatzearen ikuspegitik aztertzeko aukera ematen du - aldi berean sinplea, malgua eta indartsua (ikus "beste ideia batzuk" amaieran inspirazio bila).
Imajinatu egoera tipiko bat: zure tokiko makinaren ataka bat nahi duzu trafikoa pod/edukiontzi batera (edo alderantziz) era magikoki birbidal dezan.
Erabilera posibleak
Egiaztatu zer itzultzen duen HTTP amaierako puntuak /healthz pod ekoizpen klusterrean.
Konektatu TCP arazketa bat tokiko makinako pod-era.
Lortu ekoizpen datu-baserako sarbidea datu-base lokaleko tresnetatik, autentifikazioarekin trabarik izan gabe (normalean, localhost-ek root eskubideak ditu).
Exekutatu behin-behineko migrazio-script bat eszenatze-kluster batean datuetarako edukiontzirik sortu beharrik gabe.
Konektatu VNC saio bat mahaigain birtual bat exekutatzen duen pod batera (ikus XVFB).
Hitz batzuk beharrezko tresnei buruz
Tcpserver β Kode irekiko erabilgarritasun bat Linux paketeen biltegi gehienetan eskuragarri. Tokiko ataka bat irekitzeko eta stdin/stdout bidez jasotako trafikoa berbideratzeko aukera ematen du zehaztutako edozein komandotatik:
Komando honi esker, pod-ak 8000 atakarako sarbidea ahalbidetzen du tokiko makinan.
Bash gidoia
Kubernetes produkzio-kluster bat kudeatzeko aukera ematen dizun Bash-erako script berezi bat idatzi nuen GeruzaCIgoian deskribatutako metodoa erabiliz:
kubetunnel() {
POD="$1"
DESTPORT="$2"
if [ -z "$POD" -o -z "$DESTPORT" ]; then
echo "Usage: kubetunnel [pod name] [destination port]"
return 1
fi
pkill -f 'tcpserver 127.0.0.1 6666'
tcpserver 127.0.0.1 6666 kubectl exec -i "$POD" nc 127.0.0.1 "$DESTPORT"&
echo "Connect to 127.0.0.1:6666 to access $POD:$DESTPORT"
}
Funtzio hau gehitzen baduzu ~/.bashrc, erraz ireki dezakezu tunel bat pod batean komandoarekin kubetunnel web-pod 8080 eta egin curl localhost:6666.
Tunelerako Docker lerro nagusia ordezkatu dezakezu: