Azure Container Instances 살펴보기
ACI(Azure Container Instances)는 간단한 애플리케이션, 작업 자동화 및 빌드 작업 등 격리된 컨테이너에서 작동할 수 있는 모든 시나리오에 적합한 솔루션입니다. 몇 가지 이점은 다음과 같습니다.
- 빠른 시작: ACI는 VM(가상 머신)을 프로비전하고 관리할 필요 없이 몇 초 만에 Azure에서 컨테이너를 시작할 수 있습니다.
- 컨테이너 액세스: ACI는 IP 주소 및 FQDN(정규화된 도메인 이름)을 사용하여 컨테이너 그룹을 인터넷에 직접 노출할 수 있습니다.
- 하이퍼바이저 수준 보안: VM에서 하는 것처럼 애플리케이션을 완전히 격리합니다.
- 고객 데이터: ACI 서비스는 컨테이너 그룹이 정상적으로 실행되도록 보장하는 데 필요한 최소한의 고객 데이터를 저장합니다.
- 사용자 지정 크기: ACI는 CPU 코어 및 메모리의 정확한 사양을 허용하여 최적의 활용도를 제공합니다.
- 영구 스토리지: 컨테이너에 직접 Azure 파일 공유를 탑재하여 상태를 검색하고 유지합니다.
- Linux 및 Windows: 동일한 API를 사용하여 Windows 및 Linux 컨테이너를 모두 예약합니다.
여러 컨테이너 간 서비스 검색, 자동 크기 조정 및 조정된 애플리케이션 업그레이드를 포함하여 전체 컨테이너 오케스트레이션이 필요한 시나리오에는 AKS(Azure Kubernetes Service)를 사용하는 것이 좋습니다.
컨테이너 그룹
Azure Container Instances의 최상위 리소스는 컨테이너 그룹입니다. 컨테이너 그룹은 같은 호스트 컴퓨터에서 예약되어 있는 컨테이너 컬렉션입니다. 컨테이너 그룹의 컨테이너는 수명 주기, 리소스, 로컬 네트워크, 스토리지 볼륨을 공유합니다. 개념적으로 Kubernetes의 Pod와 비슷합니다.
다음 다이어그램은 여러 컨테이너가 포함된 컨테이너 그룹의 예를 보여줍니다.
이 예제 컨테이너 그룹은 다음과 같습니다.
- 단일 호스트 컴퓨터에서 예약됩니다.
- DNS 이름 레이블이 할당됩니다.
- 1개의 노출 포트가 있는 단일 공용 IP 주소를 노출합니다.
- 두 개의 컨테이너로 구성됩니다. 하나의 컨테이너는 포트 80을 수신하고, 다른 컨테이너는 포트 5000을 수신합니다.
- 볼륨 탑재로 2개의 Azure 파일 공유가 포함되어 있으며, 각 컨테이너는 공유 중 하나를 로컬에서 탑재합니다.
참고
다중 컨테이너 그룹은 현재 Linux 컨테이너만 지원합니다. Windows 컨테이너의 경우 Azure Container Instances는 단일 인스턴스 배포만 지원합니다.
배포
다중 컨테이너 그룹을 배포하는 두 가지 일반적인 방법은 Resource Manager 템플릿 또는 YAML 파일을 사용하는 것입니다. 컨테이너 인스턴스를 배포할 때 추가 Azure 서비스 리소스(예: Azure Files 공유)를 배포해야 하는 경우 Resource Manager 템플릿을 권장합니다. YAML 형식이 좀 더 간결하기 때문에 배포에 컨테이너 인스턴스만 포함된 경우에는 YAML 파일을 사용하는 것이 좋습니다.
리소스 할당
Azure Container Instances는 인스턴스의 리소스 요청을 그룹에 추가하여 CPU, 메모리, 선택적으로 GPU(미리 보기) 등의 리소스를 컨테이너 그룹에 할당합니다. CPU 리소스 사용을 예로 들면, 각각 CPU 1개를 요청하는 인스턴스 2개로 만든 컨테이너 그룹에는 CPU 2개가 할당됩니다.
네트워킹
컨테이너 그룹은 IP 주소와 해당 IP 주소에서 포트 네임스페이스를 공유합니다. 외부 클라이언트가 그룹 내 컨테이너에 도달하게 지원하려면 IP 주소와 컨테이너에서 해당 포트를 공개해야 합니다. 그룹 내의 컨테이너는 포트 네임스페이스를 공유하기 때문에 포트 매핑이 지원되지 않습니다. 그룹 내의 컨테이너는 노출한 포트가 그룹의 IP 주소에서 외부에 노출되지 않더라도 이러한 포트의 localhost를 통해 서로 연결할 수 있습니다.
스토리지
컨테이너 그룹 내에서 탑재할 외부 볼륨을 지정할 수 있습니다. 해당 볼륨을 그룹의 개별 컨테이너 내에 있는 특정 경로에 매핑할 수 있습니다. 지원되는 볼륨은 다음과 같습니다.
- Azure 파일 공유
- 비밀
- 빈 디렉터리
- 복제된 git 리포지토리
일반적인 시나리오
다중 컨테이너 그룹은 단일 기능 태스크를 몇몇 컨테이너 이미지로 분할하려는 경우에 유용합니다. 이러한 이미지는 여러 팀에서 제공될 수 있으며, 이에 따른 리소스 요구 사항도 다를 수 있습니다.
사용 예는 다음과 같습니다.
- 웹 애플리케이션을 처리하는 컨테이너와 원본 제어에서 최신 콘텐츠를 풀링하는 컨테이너
- 애플리케이션 컨테이너 및 로깅 컨테이너. 로깅 컨테이너는 주 애플리케이션에서 출력한 로그 및 메트릭을 수집하여 장기 스토리지로 기록합니다.
- 애플리케이션 컨테이너 및 모니터링 컨테이너. 모니터링 컨테이너는 애플리케이션이 올바르게 실행 중이고 응답하고 있는지 확인하기 위해 애플리케이션에 정기적으로 요청을 보내고, 그렇지 않은 경우 경고를 올립니다.
- 프런트 엔드 컨테이너 및 백 엔드 컨테이너. 프런트 엔드는 웹 애플리케이션에 서비스를 제공할 수 있고, 백 엔드는 서비스를 실행하여 데이터를 검색할 수 있습니다.