[GCP] Node.js(NestJS) 클라우드 배포 : (7) Kubernetes Ingress HTTPS 적용과 도메인 연결
이전 포스팅에서 GCP의 쿠버네티스 클러스터를 생성하고, 클러스터 내부의 데이터베이스와 Application 작업을 생성하고, 네트워크 연결까지를 다루었다.
이번 포스팅에서는 Kubernetes Ingress 설정과 이를 통해서 HTTPS 적용을 해보도록 하겠다.
Kubernetes Ingress
Kubernetes 클러스터 내에서 HTTP 및 HTTPS와 같은 웹 트래픽을 관리하고 라우팅하기 위한 API 및 리소스이다.
클러스터 외부에서 내부로 들어오는 HTTP/HTTPS 요청을 처리하고 여러 서비스들 앞에서 라우터 역할을 하고, 클러스터의 진입점 역할을 한다. 웹 애플리케이션의 경로 기반 라우팅, 로드 밸런싱, SSL/TLS 암호화, 호스트 기반 라우팅 등 다양한 설정을 지원한다.
즉 Kubernetes의 로드 밸런서 역할을 한다고 보면 되고, 기존의 로드밸런서(외부 부하 분산기)를 생성한 이후, Ingress로 업그레이드하는 개념이라고 받아들이면 쉽다.
우리가 사용해볼 GKE Ingress 컨트롤러는 HTTPS 로드 밸런서의 역할을 수행할 수 있다.
Service에 Ingress 생성 및 등록하기
서비스 및 수신 -> 사용할 서비스 체크 -> 인그레스 만들기를 클릭한다.
Ingress는 외부 부하 분산기에만 생성이 가능하다. 우리는 Application에 HTTPS를 적용시킬 것이므로 해당 서비스를 선택해주자.
1. Backend Configuration
Backend는 로드밸런서와 클러스터 내부 사이의 설정을 정의하는 곳이다. 해당 부분에서는 현재 목적으로는 특별히 따로 설정해야 하는 부분은 없다.
2. Host and Path Rules
라우팅 규칙에 따라서 어떤 Deployment Service로 매핑시킬지를 정의하는 부분이다.
현재는 모든 라우팅 규칙을 NestJS 서비스로 매핑시키려고 한다. 따라서 Backends 부분만 Application Service를 넣어주면 된다.
3. Frontend Configuration
우리는 HTTPS를 적용시킬 것이므로 프로토콜을 HTTPS로 변경해주자.
HTTPS의 인증서가 필요하므로 인증서 추가를 클릭하여 생성해주자. 이전 포스팅에서 GCP에서 HTTPS 인증서를 발급받는 과정과 유사하므로, 만드는 과정을 모르겠다면 아래 포스팅을 참고하자
https://sjh9708.tistory.com/98
Ingress가 만들어지는 데에 시간이 조금 걸린다. 빨간불이 들어오더라도 당황하지 말고, 초록색 불이 켜질 때 까지 기다려주자.
그리고 Ingress는 기본적으로 디폴트 경로 "/"로 Health Check를 하므로, 만약 디폴트 경로에 대한 200 Response가 없다면 App에 만들어 주도록 하자. 그렇지 않으면 Appliciation이 죽은 것으로 간주한다.
부하 분산기 세부 정보를 확인할 수 있다.
도메인 연결
Cloud DNS에서 기존에 도메인을 연결할 때 사용했던 A 레코드를 생성한 Ingress의 IP 주소로 변경하자.
도메인을 Cloud DNS에 등록하는 방법은 아래 포스팅에서 자세히 적어두었다.
https://sjh9708.tistory.com/97
도메인 접속 확인
이제 HTTPS 도메인을 통해 Ingress IP로 App에 접근 가능한 것을 확인할 수 있다.
'Cloud > GCP' 카테고리의 다른 글
[GCP] Node.js(NestJS) 클라우드 배포 : (8) CI/CD with Kubernetes (1) | 2023.10.06 |
---|---|
[GCP] Node.js(NestJS) 클라우드 배포 : (6) Kubernetes - 명령어와 네트워크 설정 (0) | 2023.09.24 |
[GCP] Node.js(NestJS) 클라우드 배포 : (5) Kubernetes - Cluster와 Deployment 생성하기 (0) | 2023.09.24 |
[GCP] Node.js(NestJS) 클라우드 배포 : (4) 로드밸런서와 HTTPS 적용 (0) | 2023.09.10 |
[GCP] Node.js(NestJS) 클라우드 배포 : (3) 도메인 연결 (0) | 2023.09.10 |