왜 Minikube에서 만든 서비스는 호스트 브라우저에서 접근이 안될까??
Minikube에서 Nginx와 mongo-express 서비스를 External-service로 만들어보고,
Internal-service로 만들어서 Ingress를 활용해 연결도 해보았다.
그런데 minikube에는 minikube만의 IP가 있다.(이하 mini IP)
Virtual Box 같은 VM 에서 minikube를 사용하는 경우에 External-service를 생성하면 curl http://<miniIP>:port
와 같이 반드시 minikube IP를 사용해서 접근해야 한다.
그리고 이런 접근 방법 때문에 Linux 내부 IPtable을 사용한 포트포워딩과 VM 자체 포트포워딩을 통해 VM의 IP와 minikube IP를 엮어주려 해봐도 뭐가 문제인지 서로 이어지지가 않았다.
Docker만을 사용해서 순수 컨테이너의 80번 포트로 열린 Nginx는 호스트 컴퓨터에서(내 컴퓨터 브라우저) 아주 잘만 열렸다.
그래서 VM의 포트포워딩 문제가 아니라, Minikube가 자체적으로 외부 노출 기능을 막아놓았기 때문에 호스트에서 VM의 서비스에 접근하지 못하는 문제가 생겼다고 생각했다.
아닐 수도 있지만 맞을 것이다..
결국 정말 오랜 기간 끝에 어떻게 Service를 Host 컴퓨터에서 확인할 수 있는지.. 방법을 찾아냈다.
1. Minikube 대쉬보드를 호스트에서 확인하는 방법을 알아보자
Minikube에는 기본적으로 써드파티 앱을 설치할 수 있는 addons가 있다.
Minikube가 설치된 VM의 터미널에 kubectl addons list
를 입력해보면 아래와 같은 화면이 나올 것이다.
ADDON NAME 열에 dashboard가 보인다.
dashboard는 Minikube가 설치되면서 자동으로 addon 된다.
아마 STATUS에 기본적으로 체크 표시가 되어있을 것이다.
만약 안되어 있다면 minikube addons enable dashboard
를 입력해서 dashboard를 활성화 하자.
이제 쿠버네티스 프록시 서버를 외부로 노출해야 한다.
1. kubectl proxy --address='0.0.0.0' --disable-filter=true
명령을 입력하자.
이러한 문장이 나올 것이다.
2. 이제 호스트 브라우저에서 <VM의IP>:8001 주소에 접근해보자.
.. 뭐 이런 알수없는 api endpoint가 나올 것이다.
표시된 url을 모두 살펴봐도 dashboard와 관련된 부분은 없다.
그런데 /api/v1 이라는 endpoint가 보인다.
3. <IP>:8001/api/v1/ 으로 접속해보자.
방금과 비슷하지만 조금 다르게 뭔가 쿠버네티스의 정보들이 나오는 느낌이다.
조금 내려보면
이렇게 namespaces 관련 정보가 있음을 알 수 있었다.
4. <IP>:8001/api/v1/namespaces 으로 접속해보자.
우리가 kubectl get namespace
명령을 입력했을 때 나오는 namespace들이 적혀있는것을 볼 수 있다.
그 중에 kubernetes-dashboard 라는 namespace를 찾을 수 있었다.
5. <IP>:8001/api/v1/namespaces/kubernetes-dashboard 으로 접속해보자
이제 별다른 힌트를 찾을 수 없었다.
하지만 url자체가 힌트이다.
kubernetes-dashboard인 namespace에는 외부의 요청을 받기 위해 service가 있을 것이다. 그리고 서비스는 http프로토콜을 사용해 요청을 전달할 것이다.
이 이상 진행하진 못했다. 그래서 구글링을 더 했고 답을 찾았다.
<IP>:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
위 주로소 접근하면 대시보드를 볼 수 있다.
2. mongo-express 애플리케이션에 접근하기
http://<IP>:8001/api/v1/namespaces/default/services/http:mongo-express-service:/proxy/
해결 되지 못한 궁금증 - minikube로는 배포는 불가능 한건가?
'DevOps > Kubernetes' 카테고리의 다른 글
[kubernetes] #10 쿠버네티스 영속성 데이터와 볼륨 (0) | 2022.03.14 |
---|---|
[kubernetes] #9 쿠버네티스 Ingress 란? (0) | 2022.03.09 |
[kubernetes] #8 네임스페이스를 통해 컴포넌트 구성하기 (0) | 2022.03.06 |
[kubernetes] #7 Demo 프로젝트: MongoDB + MongoExpress (0) | 2022.03.03 |
[kubernetes] #6 쿠버네티스 YAML 설정 파일 (0) | 2022.03.02 |