Kubernetes

kubectl port-forward Shell Script

아르비스 2022. 4. 1. 13:25

쿠버네티스를 사용하다보면 서비스를 포트포워딩을 통해서 외부에 노출시켜야 할 경우가 많다.

하지만, 매번 kubectl port-forward 명령어를 치기도 불편하고, 가장 큰 문제는 Backgroud 실행이 아닌 foreground 실행만 지원한다는 것이다.

또한, 실행하는 것도 timeout 이슈가 발생한다.

https://stackoverflow.com/questions/47484312/kubectl-port-forwarding-timeout-issue

 

kubectl port forwarding timeout issue

While using kubectl port-forward function I was able to succeed in port forwarding a local port to a remote port. However it seems that after a few minutes idling the connection is dropped. Not sur...

stackoverflow.com

 그래서 서비스를 위한 실행 종료하는 스크립트를 만들어 실행한다.

 

1. Foreground 무한 실행 스크립트 

#start-forwarding.sh

#sleep 1을 추가하여 CPU사용량 줄이기
while true :
do
     kubectl port-forward service/nginx2 --address 0.0.0.0 80:80
     sleep 1
done

 

실행은 ./start-forwarding.sh

종료는 Ctrl + C

 

2. Background 실행 스크립트

#start-forwarding-bg.sh

nohup kubectl port-forward service/nginx2 --address 0.0.0.0 80:80 &

 

실행은 ./start-forwarding.sh

 

3. 종료 스크립트

#!/bin/sh

PID=`ps -ef | grep 'port-forward service/nginx2' | grep -v "grep" | awk '{print$2}'`

echo "kill .. $PID"
kill -9 $PID

 

2. 에 대한 종료만 3으로 가능하며, 1번의 실행경우 Ctrl + C로 종료해야 한다.