작성
·
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
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은 아시다시피 넣어도 되고 안넣어도 되고요.