ALB Ingress Controller
와 Ingress
리소스를 사용하게 되면 Ingress Controller가 자동으로 클라우드에 관련 리소스들을 생성해주어 웹서버에 대한 ALB 연결 및 SSL 적용을 처리해주게된다. 특정 서버 혹은 쿠버네티스 환경에 특정 서비스가 운영되고 있을 때, 외부로 노출되는 그 서비스만의 Port가 있을 것이다. 예를 들어 Nginx는 80, Airflow UI는 8080, Mysql은 3306 등이다.
만약 서버에 자체적으로 서비스가 운영되고 있는 상황이라면 해당 서비스의 Port만 알면되겠지만, 쿠버네티스 상황에서 운영되고 있다면 NodePort 타입의 Service 리소스를 통해 해당 서비스가 외부로 노출될 수 있도록 Port Mapping이 필요
하다.
통상적으로 NodePort 타입의 Service는 30000-32767
사이의 포트값을 랜덤으로 매핑하며 필요시 해당 범위에 있는 값을 지정해줄 수도 있다.
따라서 해당 서비스가 어떠한 포트번호를 통해 외부에서 접속이 가능한지를 알아야하며 아래 글에서는 쿠버네티스상에 NodePort 타입으로 배포된 Nginx 웹서버의 포트를 사용 할 것이다.
웹서버 포트 확인
> kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc NodePort 198.19.178.141 <none> 80:30260/TCP 24h
ALB를 통하지 않고는 외부로 노출되지 않기 때문에 ALB와의 내부적인 통신에서는 보안 적용이 굳이 필요없기 때문이다.
justnewnew.store
도메인으로 SSL 인증서를 발급받았기 때문에 HTTPS 통신을 위해서는 위에서 생성한 ALB를 DNS A record에 등록해주어야 한다.IPv4 주소를 매핑
시킬 수 있다. 또한 클라우드에서는 클라우드 내부적으로 생성된 리소스를 매핑
시킬 수도 있다.justnewnew.store
도메인 앞에 nginx
라는 별칭을 주고 종류는 LB VPC를 선택하여 앞에서 생성된 ALB 주소를 선택한 후 A record 생성을 완료해준다.LB VPC
선택하여 위에서 생성해준 ALB 선택하여 레코드 생성 후 배포
저 궁금한것이 있는데요 하나의 VPC 내에 Private / Public Subnet을 둘 다 만드신건가요?
아무리 해봐도 하나의 VPC 내에 2개의 Subnet을 만드는 방법이 안보여서요 ㅠㅠ