본문 바로가기
DevOps

Minikube 환경에서 NodePort 사용하기

by NEMNE 2022. 5. 21.

Minikube는 별도의 쿠버네티스 클러스터를 구성하지 않고 빠르게 로컬 쿠버네티스 클러스터를 구성해준다.

아무래도 로컬 환경으로 사용하다보니 쿠버네티스에서 사용되는 일부 오브젝트들을 사용하기 까다로운 경우가 있다.

 

서비스 타입 중 하나인 NodePort 역시 도커 드라이버를 통해 Minikube를 구성할 경우

Node IP를 직접적으로 사용하기 어려운 경향이 있다.

 

이를 해결하기 위해서 tunnel과 함께 minikube service라는 기능을 사용해야 한다.

 

먼저 상황을 가정하기 위해 deploy.yml과 svc-np.yml을 만들어 봤다.

 

depoly.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deploy
spec:
  replicas: 3
  selector:           # deployment - pod 대응용
    matchLabels:
      app: web
  template:           # 여기서부터 파드 템플릿
    metadata:
      labels:
        app: web      # 파드의 라벨
    spec:
      containers:
      - name: nginx
        image: nginx:latest

 

svc-np.yml

apiVersion: v1
kind: Service
metadata:
  name: web-service-np
spec:
  selector:
    app: web
  ports:
  - protocol: TCP
    port: 80
  type: NodePort

 

이제 2개의 파일 모두 실행을 시켜준다.

정상적으로 Deployment, NodePort 모두 실행되고 있는 것을 알 수 있다.

 

이제 minikube에서 minikube service web-service-np --url를 실행해준다.

 

 

이제 현재 터미널을 종료하지 않고 새로운 터미널을 열어 ps -ef | grep docker@127.0.0.1를 실행시켜준다.

 

NodePort의 Cluster IP와 port가 minikube에서 지정한 61544 포트에 바인딩되는 것을 확인할 수 있다.

이제 127.0.0.1:바인딩된포트번호를 추가하면 minikube 환경에서 클러스터 외부에서 내부 파드에 접근할 수 있게 된다.