[GCP] Node.js(NestJS) 클라우드 배포 : (6) Kubernetes - 명령어와 네트워크 설정
이전 포스팅에서 GCP의 쿠버네티스 클러스터를 생성하고, 클러스터 내부의 데이터베이스와 Application 작업을 생성해보는 과정까지를 거쳤다.
이번 포스팅에서는 Cloud Shell을 통해 Kubernetes 클러스터에 접속해보고, 클러스터 내부간의 연결 및, 클러스터 외부에서 Application에 접근을 가능하도록 하기 위해서 네트워크 설정을 해보도록 하겠다.
쿠버네티스에 관한 내용은 아래 포스팅에 남겨두었으니 참고하면 좋을 것 같다.
https://sjh9708.tistory.com/99
Kubernetes Cluster 접속
우리는 이전 포스팅에서 Kubernetes 클러스터를 생성하고, Database와 Application에 해당하는 Deployments(작업)을 만들어 주었었다. 이제 클러스터에 접속하여 해당 Deployment가 관리하는 Pod들이 잘 작동하는지 확인하는 작업을 해보도록 하겠다.
우선 Kubernetes 클러스터의 Shell에 접속해보겠다.
생성했던 클러스터에서 연결 버튼을 클릭해주자.
Cloud Shell은 구글에서 무료로 제공하는 컴퓨터로, 클러스터에 접속하여 Shell 명령어를 날릴 수 있도록 해준다. CLOUD SHELL에서 실행을 클릭하여 접속해보자.
Shell에 접속하면 위의 명령줄 엑세스를 자동으로 생성해주어, Kubernetes Cluster에 접속 가능하게 해 준다.
Kubernetes 명령어
Pod와 Deployment 목록 조회
kubectl get pods
Pods: Kubernetes에서 가장 기본적인 배포 단위로, 하나 이상의 컨테이너 그룹을 함께 묶는 역할을 한다. 동일한 호스트에서 실행되며 개별 컨테이너의 수명 주기와 네트워킹을 관리합니다.
kubectl get deployments
Deployments: Deployment는 Pod의 관리를 담당하는 추상화 레이어로, 여러 개의 Pod 인스턴스를 관리하고 스케일링, 롤링 업데이트, 롤백과 같은 작업을 수행한다.
Pod의 실행 로그 보기
kubectl logs POD_NAME
Pod 컨테이너 내부 접속하기
kubectl exec -it POD_NAME /bin/bash
Kubernetes 네트워크 설정 연결
NestJS Application에 해당하는 로그의 내용을 살펴보면, 데이터베이스에 접속할 수 없다는 오류가 뜬다.
이는 클러스터 내부 간에서 Connection이 실패했음을 추측할 수 있고, 이에 따라 네트워크 설정을 해주어야 할 필요성이 있다.
데이터베이스 서비스 클러스터 IP 노출
Kubernetes Engine → 작업부하 → 데이터베이스에 해당하는 Deployment로 들어가주자.
노출 중인 서비스 섹션이 있는 노출을 클릭해주자.
포트 매핑에서 컨테이너 외부에서 데이터베이스에 접근 가능하도록 포트를 뚫어주도록 하겠다.
- 포트 : 외부에서 내부로 들어오는 요청을 받을 수 있는 포트
- 대상 포트 : 컨테이너 내부에서 실행 중인 애플리케이션의 포트
서비스 유형은 클러스터 IP로 설정하며, 같은 클러스터 내부에서만 접속할 수 있도록 설정하는 것이다.
네트워크 서비스가 생성되었다면, Kubernetes Engine → 서비스 및 수신으로 들어와 다음과 같이 확인이 가능하다.
App Deployment 재실행 및 DB 연결 확인
kubectl rollout restart DEPLOYMENT_NAME
해당 명령어를 통해 Application 작업 단위의 Pod들을 재실행시켜주었다.
로그를 확인해보면, 이제 데이터베이스에 정상적으로 연결된 것을 확인할 수 있었다.
Application 서비스 부하분산기 노출
이번에는 Application을 외부에서도 접속 가능하도록 하기 위해서 부하분산기를 달아 노출시켜보도록 하겠다.
Kubernetes Engine → 작업부하 → App에 해당하는 Deployment로 들어가주자.
노출 중인 서비스 섹션이 있는 노출을 클릭해주자.
마찬가지로 포트 매핑에서 컨테이너 외부에서 접근 가능하도록 포트를 뚫어주도록 하겠다.
서비스 유형은 부하분산기로 설정하며, 클러스터 외부에서 클러스터 내부로 접속할 수 있도록 설정하는 것이다.
이제 네트워크 서비스가 생성되었다면, 엔드포인트를 통해서 클러스터 외부에서 접속이 가능해질 것이다.
'Cloud > GCP' 카테고리의 다른 글
[GCP] Node.js(NestJS) 클라우드 배포 : (8) CI/CD with Kubernetes (1) | 2023.10.06 |
---|---|
[GCP] Node.js(NestJS) 클라우드 배포 : (7) Kubernetes Ingress HTTPS 적용과 도메인 연결 (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 |