최근 리눅스 컨테이너 기술의 발달로 독립적인 컨테이너를 사용하여 개발부터 운영까지 활용하고 있다. docker는 이런 컨테이너 기술에서 빠질 수 없는 서비스가 되었고 docker를 사용하여 쉽게 개발 배포하는 플랫폼 서비스들이 등장 하였다. 퍼블릭 클라우드 서비스들은 이런 컨테이너 이미지를 쉽게 사용할 수 있는 플랫폼을 제공하기 시작했고 퍼블릭 클라우드에서 비교적 저렴한 가격에 서비스를 운영하는 여러가지 방법이 소개되고 있다.

최근 클라우드 운영의 안정성과 문제 해결을 위해 쉽게 레퍼런스를 찾을 수 있는 AWS 의 Lightsail 을 많이 사용하고 있는데 Lightsail 에 새롭게 추가된 컨테이너 서비스를 소개한다.

Containers 메뉴

Lightsail 홈 화면에 기존에는 없었던 Containers 라는 탭이 추가된 것을 확인할 수 있다.

Create Container service 버튼을 클릭하면 컨테이너 서비스를 생성하는 화면이 나타나는데  location, capacity 등 컨테이너 운영에 필요한 정보를 설정할 수 있다.

Location 설정

기본적으로 한국 서울 리전에서 Lightsail 을 시작하면 Seoul, all zones 으로 선택 되어 있다. 만약 다른 국가 리전을 선택하려면 Change AWS Region 버튼을 선택하고 국가를 선택하면 된다.

Capacity 설정

다음은 컨테이너를 운영하기 위한 인스턴스의 타입과 환경을 설정하게 되는데 기본적으로 Micro 타입이 지정되어 있는데 노드당 $10 가격으로 vCPU 와 RAM 의 성능에 따라서 가격 정책이 달라 필요한 성능에 맞게 선택하면 된다. 테스트에서는 기본적으로 지정되어 있는 Micro 타입으로 진행한다.

컨테이너 서비스의 타입을 지정하면 Scale 을 설정할 수 있다. 기본적으로 1 Scale로 동작하지만 필요에 의해서 여러대를 운영할 수 있다. 복잡한 스케일 환경 설정 없이 단순한 인터페이스로 스케일 환경을 구축할 수 있다. Micro 타입($10)에 2 Scale 을 설정하게 되면 $10 X 2 = $20 비용이 발생한다. 스케일 역시 자신의 운영환경에 맞춰 설정하면 된다.

컨테이너 이미지 설정

최초 컨테이너 서비스를 생성할 때 어떤 서비스를 포함할지 설정할 수 있다. Set up deployment  를 클릭하면 필요한 컨테이너 이미지를 추가하거나 설정할 수 있다.

기본적으로 Nginx 또는 Redis 서버가 포함된 컨테이너를 지정할 수 있는데 예를 들어 Nginx 를 선택하게 되면 컨테이너 이름을 설정할 수 있다. 기본적으로 제공하고 있는 Nginx 컨테이너는 Nginx 1.19.2 버전에 80번 포트를 사용하고 있고 외부로 공개되는 엔드포인트 또한 80번 포트를 사용하게 된다.

컨테이너 이름을 nginx-demo 로 수정한다.

컨테이너 서비스의 identify 를 정의하는데 이 때 설정하는 이름이 Lightsail 의 url 도메인으로 만들어지게 된다.

Lightsail 의 identify 설정까지 완료하면 앞에 설정한 정보를 요약으로 한번 더 확인하게 된다. 그리고 Create container service 버튼을 클릭하면 컨테이너 서비스가 생성된다.

컨테이너 서비스가 완벽하게 생성되는 시간은 Lightsail 의 인스턴스형 서비스를 생성할 때 보다 시간이 좀 더 필요하다. 서비스가 생성되기 까지는 서비스에 접근은 할 수 없지만 인스턴스가 생성되어 deploy 되고 있는 정보를 확인할 수 있다.

몇 분 뒤 Status 가 Deploying 에서 Active 로 변경되면 완벽하게 생성되어 서비스가 정상적으로 운영된다.

앞의 예제는 Nginx 가 설치되어 운영되는 컨테이너를 배포했다. 퍼블릭 엔드포인트를 80 번 포트로 설정했기 때문에 컨테이너 서비스가 생성될 때 만들어진 URL 을 브라우저로 접근하면 Nginx 가 동작하고 있는 것을 확인할 수 있다.

Lightsail 의 컨테이너 서비스에서 터미널에 접속하지 않고 컨테이너 서비스의 로그를 확인할 수 있다. Open log 를 클릭해서 로그를 확인하면 컨테이너의 로그를 확인할 수 있다. 앞에 예제에서는 2 Scale 로 설정해서 ELB 가 동작하고 있고 ELB-HealthChecker 가 로드밸런스 상태를 확인하기 위해 접근하고 있는 로그를 확인할 수 있다.

컨테이너 서비스를 운영하기 위해서는 우선 컨테이너 서비스를 위한 운영체제가 필요하다. 보통 리눅스 환경 위에 컨테이너 엔진을 사용해서 컨테이너 서비스를 운영하는데 Lightsail 의 Container service 를 사용하여 운영체제 설치부터 컨테이너 엔진까지 관리형 형태로 간단하게 만들 수 있는 것을 확인했다. 이번 글에서는 Ligtsail 컨테이너 서비스에서 기본적으로 제공하고 있는 Nginx 컨테이너를 사용하여 배포하는 방법을 소개했다. 다음 포스팅에서는 custom container 를 배포하는 방법에 대해서 소개할 예정이다.

References

Lightsail Containers: An Easy Way to Run your Containers in the Cloud | Amazon Web Services
When I am delivering an introduction to the AWS Cloud for developers, I usually spend a bit of time to mention and to demonstrate Amazon Lightsail. It is by far the easiest way to get started on AWS. It allows you to get your application running on your own virtual server in a matter of […]