반응형

 


 

만약, Kubernetes cluster network 외부에서 kubernetes service에 access한다고 가정하면

아래와 같이 kubectl port-forward 명령으로 외부 IP traffic을 허용할 수 있다.

 

 

Example: Jenkins Web Dashboard 접속한다고 가정하고 테스트해보기

  • 구성 예시:
    • kubernetes service의 port는 8080
    • Web browser로 접속할 port는 8180

 

 

 

 

즉, 외부에서 8180으로 접속시도하면, 8080으로 port forward하도록 하려면, 아래와 같이 명령을 수행하면 된다.

 

##
## --addresss=0.0.0.0은 모든 IP Address를 수용하겠다는 뜻이다.
##
## 8180:8080은 Kubernetes Cluster 외부의 Client가 8180 포트로 접속 요청하면
## Kubernetes Cluster 내부의 8080 서비스 포트로 Forward해주겠다는 뜻이다.
##

$ kubectl  port-forward  --address=0.0.0.0 \
     $(kubectl get pod -l app.kubernetes.io/name=jenkins -o jsonpath='{.items[0].metadata.name}') \
     8180:8080

 

위와 같이 설정하고 Web browser에서 bastion node로 접속 시도한다.  (아래 예제 명령처럼 접속한다.)

 

$  curl  http://bastion.my-kube.node:8180/

 

 

위 예시는 Pod Name을 이용한 것이고, Service 이름을 이용해서도 port-forward 설정할 수 있다. (아래 명령을 참고)

##
## Cluster 밖의 Client가 9999 port 번호로 요청하면,
## 80 port 번호로 바꾸어서 almighty 네임스페이스의 almighty 서비스로 forwarding한다.
##

$ kubectl port-forward --address=0.0.0.0 -n almighty service/almighty 9999:80
Forwarding from 0.0.0.0:9999 -> 8080
Handling connection for 9999
...

 

 

 


참고:
kubectl port-forward 명령을 수행한 node가 bastion이라면, web browser가 접속할 Server(Target) 주소도 bastion의 IP address이어야 한다.

 

 

게시물 작성자: sejong.jeonjo@gmail.com

 

 

+ Recent posts