•
AWS에서 컨테이너 200% 활용하기(AWS)
컨테이너란 무엇일까요?
•
컨테이너는 격리된 자신만의 환경을 가지게 되면 다른 컨테이너의 간섭을 받지 않음.
•
컨테이너는 리눅스 커널을 공유하면서 프로세스만 실행하면 된다.
서버리스로 컨테이너 운영하기
AWS App Runner
•
웹 애플리케이션 배포를 위해 다양한 서비스에 대한 설정 필요 없이 클릭 몇번으로 배포 가능
오케스트레이션 서비스로 컨테이너로 운영하기
•
컨테이너들을 여러 서버들에 배치하고 운영하는 것을 컨테이너 오케스트레이션이라고 함.
•
Control Plane
◦
컨테이너의 상태를 관리하고 명령을 전달하는 부분
•
Data Plane
◦
실제 컨테이너가 실행되는 부분
•
선언적으로 상태를 관리
•
Control Plane은 현재 상태와 정의된 상태(원하는 상태)가 맞는지 보고 다를 경우 그 상태 맞춤
Amazon ECS(Elastic Container Service)
•
EC2/Farget 유형 모두 ECS Agent가 설치되어 ECS 클러스터와 통신
•
서비스
◦
오토 스케일링 그룹을 만들어서 컨테이너를 실행할 EC2 인스턴스들을 생성하고, 원하는 수 만큼의 작업을 유지
Amazon EKS(Elastic Kubernetes Service)
•
ClusterIP
◦
Pod간 통신을 위해 클러스터 내부에서만 접근 가능한 서비스 유형
•
NodePort
◦
각 워커 노드에 동일한 포트를 오픈해서 어떤 노드로 들어오든 대상 Pod로 요청을 전달
•
LoadBalancer
◦
NodePort를 통해 포트를 오픈한 가가 워커노드 앞단에 로드밸런서를 생성하여 트래픽을 분배하는 서비스
기존 애플리케이션을 컨테이너화 하기
AWS App2Container
•
기존 애플리케이션을 컨테이너화하는 것을 손쉽게 해줄 수 있다.
•
App2Container는 CLI 도구로 제공이 되는데, 현재는 Java와 NET을 지원
•
App2Container 실행하면 애플리케이션에 대해 탐색&분석한 결과각 Analysis.json파일에 저장됨.
•
Analysis.json 파일 기반으로 컨테이너화 수행
•
배포를 위한 Deployment.json 파일, Dockerfile 및 컨테이너 이미지 생성
•
배포 아티팩트 생성
◦
ECS 생성 관련 설정 파일 생성
◦
S3 버킷 저장
◦
작업 정의 파일 생성
◦
ECR에 Docker Image Push
•
배포 명령 실행 시..
◦
CloudFormation 스택을 생성해서 AWS에 ECS 클러스터와 서비스 생성
•
추가적으로 파이프라인 명령을 수행하면…
◦
Pipeline.json 파일을 기반으로 코드 시리즈를 사용하여 CI/CD 파이프라인을 생성