Container Instances를 구성할 때 선택한 Shape에 대해 일반 Computing Instance와 동일한 가격으로 CPU 및 메모리 비용을 지불합니다. 이 외에 Container Instances를 사용하기 위한 별도의 추가 비용은 발생하지 않습니다.
리소스의 경우 기본 Computing Shape에서 제공하는 모든 CPU, 메모리를 단일 Container Instance에 할당할 수 있습니다. 예를 들어 E3, E4 Flex Shape의 경우 최대 64 코어(128 vCPU) 및 1,024GB 메모리를 할당할 수 있습니다. 자세한 Compute Shape에 대한 정보는 아래 링크를 참고합니다.
먼저 OCI Container Instance를 프로비저닝하기 전에 테스트를 위한 컨테이너 이미지가 필요합니다. 여기서는 SpringBoot 프레임워크로 간단히 Oracle Database의 테이블을 조회하여 JSON으로 응답하는 RESTful 서비스를 작성후 이미지로 빌드하여 Oracle Cloud Infrastructure Registry(Container Registry 혹은 OCIR이라고 부름)에 푸시하고, Container Instances에서 이를 활용하여 프로비저닝 하도록 하겠습니다.
먼저 OCIR에 올릴 이미지를 빌드합니다. OCIR에 올리기 위한 이미지 이름은 다음과 같은 형식을 갖습니다. registy url은 리전키.ocir.io와 같은 형태를 가집니다. 리전키는 Regions and Availability Domains에서 확인할 수 있습니다.
[registry url]/[tenancy namespace]/[image name]:[tag]
실제 사용할 이미지로 빌드합니다.
$ docker build --tag icn.ocir.io/axwawciiyibv/springboot-movie-people-api:latest .
OCIR에 로그인 합니다.
$ docker login icn.ocir.io -u [tenancy namespace]/[username]
이미지를 OCIR에 푸시 합니다.
$ docker push icn.ocir.io/axwawciiyibv/springboot-movie-people-api:latest
OCIR에 이미지가 올라온 것을 확인할 수 있습니다.
Container Instance 생성을 위해 메뉴 > 개발자 서비스(Developer Services) > 컨테이너 인스턴스(Container Instances)로 이동한 후 컨테이너 인스턴스 생성(Create Container Instance) 버튼을 클릭합니다.
Container instance 이름, 구획, 배치할 가용성 도메인, Shape과 CPU/Memeory, 네트워킹 구성을 합니다. 네트워킹에서는 미리 생성한 VCN을 활용할 것이며, SpringBoot 서비스에서 사용할 8080 포트를 Security List에서 오픈해줘야 합니다. VCN 생성은 아래 포스트를 참고합니다.
OCI에서 VCN Wizard를 활용하여 빠르게 VCN 생성하기
Container instance 이름, 구획, 배치할 가용성 도메인, Shape과 CPU/Memeory 설정
네트워킹 설정
다음을 클릭한 후 Container 설정을 합니다. 컨테이너의 경우 한 개 이상의 컨테이너를 추가할 수 있습니다. 이미지 선택을 클릭한 후 앞에서 OCIR에 올린 이미지를 선택합니다. 사용자 이름과 암호는 앞서 이미지 푸시할 때 사용한 아이디와 암호를 사용합니다. 외부 레지스트리의 경우 기본은 도커허브(index.docker.io)이며, 그외 다른 3-party의 레지스트리(AWS ECR, Harbor, 다른 테넌시의 OCIR등)도 가능합니다.
마지막으로 다음을 클릭한 후 생성 버튼을 클릭합니다.
정상적으로 Container Instance가 생성되었습니다.
이제 공용 IP 주소(Container Instance 상세 페이지에서 확인)를 활용하여 서비스를 호출해봅니다.
http://[공용 IP 주소]:8080/moviepeople
이 글은 개인적으로 얻은 지식과 경험을 작성한 글로 내용에 오류가 있을 수 있습니다. 또한 글 속의 의견은 개인적인 의견으로 특정 회사를 대변하지 않습니다.
Donghu Kim CLOUDNATIVE
oci container instances