본문 바로가기

Cloud/Oracle Cloud Infrastructure (OCI)

OCI Kubernetes와 MySQL 서비스를 활용한 어플리케이션 배포 데모 - #1. OKE 클러스터 설치

글 순서

#1. OKE 클러스터 설치

#2. MySQL 서비스 배포

#3. 쿠버네티스 접속 환경 구성

#4. OCI 레지스트리 설정, 도커 이미지 빌드

#5. 도커 이미지 OCIR에 등록, OKE 클러스터에 컨테이너 배포

 

REFERENCES

아래 사이트 및 도서를 참조하여 작성한 문서입니다.

 

OVERVIEW

Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE), Oracle Cloud Infrastructure Registry (OKIR), MySQL 데이터베이스 서비스를 이용한 어플리케이션 배포 방법입니다.

다음과 같은 아키텍처로 구성했습니다.

 

  • Bastion 호스트에 git, docker, 쿠버네티스 관리 유틸리티와 설정 파일을 구성합니다.
  • 어플리케이션 코드와 도커 및 쿠버네티스 매니페스트 파일을 정의한 소스를 GitHub에서 Bastion 호스트에 복제하여 내려받습니다.
  • 파이썬 웹 프레임웍 Flask를 이용해서 파이썬 코드로 작성된, 데이터베이스 연결 어플리케이션을 도커 이미지로 빌드합니다.
  • OCI 레지스트리에 빌드한 이미지를 업로드합니다.
  • 쿠버네티스 매니페스트 파일 (.yaml)에 정의된 내용을 바탕으로 빌드된 이미지를 쿠버네티스 클러스터에 배포합니다.
  • 로드밸런서를 통해 외부로 노출된 어플리케이션의 서비스를 확인합니다.

 

OKE 클러스터 설치

Developer Services > Containers & Artifacts > Kubernetes Clusters (OKE) 화면으로 이동해서 OKE 클러스터를 생성합니다. Create Cluster를 클릭합니다.

사용자 지정으로 클러스터를 생성할 수도 있으나, 여기에서는 Quick create을 선택하여 클러스트를 생성했습니다. Launch workflow를 클릭합니다.

 

클러스터 이름을 “demo-cluster”로 입력했고, Public Endpoint, Private workers를 선택해서 클러스터를 생성했습니다. Shape은 디폴트로 설정했습니다.

 

트러블슈팅 등을 위해 워커 노드에 SSH 연결이 필요할 수도 있으므로 SSH 퍼블릭 키를 설정했습니다. show advanced options을 클릭해서 나오는 Add an SSH Key 섹션에서 Upload a public key file을 선택하고 SSH public key를 업로드했습니다. Next를 클릭합니다.

 

앞서 설정한 내용을 확인하고 Create cluster를 클릭합니다.

 

OKE 클러스터의 네트웍 자원이 만들어지고 나면 Close를 클릭합니다.

 

OKE 클러스터가 생성되고 있습니다.

 

데이터베이스 네트웍 구성

전체적으로 네트웍 구성은 OKE가 생성한 VCN을 활용했으나, MySQL 데이터베이스용 프라이빗 서브넷을 아래와 같이 별도로 생성했습니다. 테스트 용도이기 때문에 네트웍 구성을 단순화하기 위해 OKE 클러스터의 네트웍 워커 노드가 사용하는 라우트 테이블, 시큐리티 리스트를 활용했습니다.

 

MySQL 서비스가 속할 db-subnet (프라이빗 서브넷, 10.0.30.0/24) 이 사용하는 시큐리티 리스트를 아래와 같이 설정했습니다.

  • oke-nodesubnet (10.0.10.0/24) 에서 오는 모든 포트 개발
  • oke-svclbsubnet (10.0.20.0/24) 에서 오는 3306 포트 개발
  • oke-ApiEndpointsubnet (10.0.0.0/28) 에서 오는 22, 3306 포트 개발

 

그리고 Bastion 호스트 네트웍 구성을 단순화하기 위해 OKE 클러스터 API 엔드포인트 서브넷의 네트웍을 이용했습니다.

 

<END>