AWS, lightsail 컨테이너 서비스 테스트

lightsail 컨테이너 서비스 테스트

개인 프로젝트를 진행하며 container 서비스를 쓸일이 있어서 aws container 서비스중 저렴하다는 lightsail 컨테이너 서비스를 사용해보기로 했다.

lightsail continer service

아래와 같이 웹에서 리전을 선택하고 서비스 사양과 이미지를 선택하면 간단히 생성이 가능하다.

Web 에서 컨테이너를 생성하는 화면

나는 직접 만든 서버를 클러스터로 사용할 목적이므로, 일단 로컬머신에서 이미지를 생성하기로 했다.

1. docker, local image 생성

아래와 같이 로컬 도커 이미지를 생성했다.

docker build -t magnolia:$(NOW_DAY) -f Dockerfile .

2. 컨테이너 서비스 생성

aws cli 로 lightsail 를 제어해야 하므로 lightsail 플러그인 설치안내 페이지에서 OS 환경에 맞는 플러그인을 설치하도록 한다. (aws cli 부터 설치해야 하는 경우는 AWS Cli 설치안내 페이지를 참조한다)

1) aws configure 확인

예전에 설정 해놓은 것이 정상 작동 하는지 확인해봤다.

~/.aws/credentials 확인

2) container service 생성

아래와 같은 명령으로 컨테이너 서비스를 생성 요청한다.

생성 요청 중에 IAM 계정에 권한이 없어서 오류가 나서 다음 권한을 추가했다.

그 후 아래와 같은 명령으로 생성요청 재시도 했고 컨테이너 생성을 확인했다.

aws lightsail create-container-service \
--region ap-northeast-2 \
--service-name snaptok \
--power micro \
--scale 1
aws lightsail update-container-service \
--region ap-northeast-2 \
--service-name snaptok \
--scale 2
이 명령으로 scale 을 조정 할 수 있다

3. 컨테이너 배포

1) local image push

aws lightsail push-container-image \
--region ap-northeast-2 \
--service snaptok \
--label 20230117 \
--image magnolia:20230117

아래와 같이 컨테이너 서비스에 이미지가 등록된 것을 확인 할 수 있다.

2) 이미지 배포

이미지 자체에 문제가 있어 Dockerfile 을 여러번 수정해서 배포에 성공했다.

하지만 ElasticCache 서비스에 접속할 방법이 없었다.

lightsail 인스턴스는 peering 을 지원하지만 container 에서 외부 aws 서비스에 접근할 수 있는 방법은 찾지 못했고, MQTT 서버를 클러스터 구성할 생각이였으나 IP 등 환경 정보를 설정할 수 있는 방법이 모호했다.