인프런 커뮤니티 질문&답변

Umi님의 프로필 이미지
Umi

작성한 질문수

대세는 쿠버네티스 [초급~중급]

Ingress - 실습

ingress를 이용해서 클러스터를 외부로 노출시키고 싶을 떄

작성

·

1.6K

1

안녕하세요. 태민님 강의 잘 듣고있습니다.

Ingress를 이용하던 중 궁금증이 생겨 글 남깁니다.

Ingress Controller를 service로 expose함으로써 외부에서 접근할 수 있잖아요?

강의의 경우 NodePort를 이용했던 걸로 기억합니다.

근데 NodePort는 range가 아마 3만번대로 설정이 되어있는 걸로 알고 있는데, LoadBalancer로 노출시키는 방법 외에, 그냥 Node의 80번포트로 접속시키는 방법은 없을까요?

예를 들어 foo.com 에 어떤 노드 하나의 IP(예를 들어 123.123.123.123)만 설정함으로써

foo.com:80접속 =>123.123.123.123:80으로 번역됨=> ingress controller 서비스로 접속=> 다양한 노드의 pod로 요청 뿌려짐.

이러한 작업을 원하는데, LoadBalancer을 이용할 수 없고 NodePort를 이용하는 경우엔

foo.com:80접속 =>123.123.123.123:80으로 번역됨=>노드의 Nginx를 거쳐 80번에 대한 요청이 NodePort로 넘어감 => ingress controller 서비스로 접속=> 다양한 노드의 pod로 요청 뿌려짐.

이렇게 Ngnix나 Apache 등을 중간에 끼워넣어야하나 싶습니다.

질문이 좀 장황할 수 있는 점 죄송합니다. 애매한 부분은 다시 되물어주세요.ㅜㅜ

답변 2

1

Umi님의 프로필 이미지
Umi
질문자

192.168.0.30 은 자신의 내부망 아이피를 말씀하시는 거죠?

저는 제 내부망 IP로 설정하니 잘 되네요! 감사합니다. ㅎㅎ

external IP가 LoadBalancer type을 이용하지 않아도 사용가능한 것이었군요.

1

일프로님의 프로필 이미지
일프로
지식공유자

안녕하세요. 열심히 하시네요!

질문을 잘 적어줘서 어떤부분이 안되는건지 잘 이해가 됩니다

Ingress Controller에 꼽는 Service(실습 1-2 nodePort Service 생성)를 만들때 그대로 하시지 말고 

아래 내용처럼 만드시면 됩니다.

------------------------------------------------
apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx spec: ports: - name: http port: 80 targetPort: 80 protocol: TCP - name: https port: 443 targetPort: 443 protocol: TCP externalIPs: - 192.168.0.30 selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx
------------------------------------------------

보시면 type에 NodePort는 제외하고,  externalIPs로 직접 IP를 설정하고, Port는 그대로 80을 주면됩니다.

그러면 192.168.0.30으로 접근할수 있어요. 80은 아시다시피 넣어도 되고 안넣어도 되고요.

Umi님의 프로필 이미지
Umi

작성한 질문수

질문하기