OCI OKE - MongoDB 기반 방명록 애플리케이션 배포

by Velucid May 18, 2021

Topics

OCI OKE(Oracle Kubernetes Engine) 따라하기


내용 설명

OCI OKE(Oracle Kubernetes Engine)에서 Guestbook(방명록) 애플리케이션을 배포하는 과정을 보여드립니다.

OCI Load Balancer를 통해 외부 사용자의 접근이 가능하며, 이는 3 개의 Replica로 구성된 PHP 기반 Guestbook으로 트래픽을 분배합니다. 방문 이력 데이터는 MongoDB에 저장/관리 됩니다.

Guestbook 애플리케이션의 서비스 구조

Guestbook Services

1) MongoDB 배포 및 구성 확인

먼저, MongoDB를 Cluster에 배포하는 과정을 살펴 봅니다. NAT Gateway를 통해 Docker Hub를 통해서 직접 MongoDB 이미지를 가져옵니다.

참고: 외부 접근이 불가능한 환경에서는, 도커 이미지를 OCI Repository에 등록하여, 보다 안전하게 관리하고 사용할 수 있습니다.

MongoDB 이미지는 Docker Hub에 공식 등록된 mongo:4.2를 사용합니다.

2) MongoDB 접속 및 테스트

MongoDB에는 등록된 사용자 데이터가 없음을 확인 합니다. 추후에 Guestbook을 통해 자동 생성된 방명록 테이블을 확인 가능합니다.

3) MongoDB 서비스 생성

MongoDB 접속을 위한 K8S Service를 생성합니다. Service의 용도는 항상 고정된 IP로 MongoDB에 대한 접근을 가능하게 하기 위해서 생성합니다. 노드의 재시작 등 여러 이유로 MongoDB Pod가 제시작 하면, 해당 Pod의 IP는 항상 바뀌게 됩니다. ClusterIP Service를 생성해 놓으면, 이를 통해 항상 고정된 네트워크 경로 설정이 가능해집니다.

4) Guestbook 배포

Docker Hub에 공식 등록된 paulczar/gb-frontend:v5 이미지를 사용합니다. Guestbook은 PHP 기반의 애플리케이션이며, "mongo"라는 이름으로 등록된 ClusterIP 서비스를 자동으로 연계하여 리파지토리로 사용합니다. 그러므로 MongoDB Pod 및 Service의 이름을 반드시 "mongo"로 배포해야 합니다.

5) OCI Load Balancer 배포

OCI OKE Cluster를 배포하며, 내부적으로 OCI Load Balancer를 사용하도록 K8S Cluster가 자동을 설정되게 됩니다. 별도의 복잡한 연계 과정 및 Menifest 파일 설정 없이, Service type를 LoadBalancer로 설정하면 자동으로 OCI Load Balancer가 생성되고 K8S Cluster와 연동되어 사용할 수 있습니다.

OCI LB Menu

OCI-LB-Backends

6) Guestbook 테스트

Load Balancer 서비스의 EXTERNAL-IP로 등록된 IP를 통해 브라우저로 접근 합니다.

Guestbook

Guestbook

Guestbook

7) MongoDB 입력 내용 확인

8) 방명록 애플리케이션 삭제


참고 자료