반응형
만약, 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
'kubernetes' 카테고리의 다른 글
Istio Web Docs - 읽기 좋은 순서대리 정리 (0) | 2021.07.19 |
---|---|
nsenter (0) | 2021.07.13 |
Kubernetes Ingress Gateway - Concept & Practice (0) | 2021.07.10 |
MetalLB 설치 (2023년 2월 14일에 설치) (1) | 2021.07.08 |
Kubernetes Container에 대한 TCPDUMP 방법 (0) | 2021.07.08 |