Azure Container Instance ACI
· 컨테이너 실행
· 컨테이너 종료 시 수행되는 동작 제어
· 컨테이너 시작 시 환경변수 이용 컨테이너 구성 (--environment-variables)
· 컨테이너 시작 시 보안 환경변수 이용 (--secure-environment-variables)
· 컨테이너 종료 시 데이터볼륨 연결 데이터보존
애플리케이션, 작업 자동화
격리된 컨테이너 시나리오 가능
· 빠른시작
· 초당 청구
· 하이퍼바이저 수준 격리 보안 / 애플리케이션의 완전 격리
· 사용자 지정 크기 가능
· 영구 스토리지 (컨테이너에도 Auzre 파일 공유 가능)
· 리눅스, 윈도우
오케스트레이션 필요한 시나리오의 경우 AKS 이용
예제
웹앱을 호스트하는 컨테이너 배포
DNS이름을 이용하여, 인터넷에 노출도 가능
az container create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer \
--image microsoft/aci-helloworld \
--ports 80 \
--dns-name-label $DNS_NAME_LABEL \
--location eastus
az container show \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer \
--query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
--out table
웹사이트 확인
다시 시작 정책 |
설명 |
Always |
컨테이너 그룹의 컨테이너가 항상 다시 시작됩니다. 이 정책은 웹 서버와 같은 장기 실행 작업에 적합합니다. 컨테이너를 만들 때 다시 시작 정책이 지정되지 않은 경우 적용되는 기본 설정입니다.
|
Never |
컨테이너 그룹의 컨테이너가 절대로 다시 시작되지 않습니다. 컨테이너가 한 번만 실행됩니다.
|
OnFailure |
컨테이너 그룹의 컨테이너가 컨테이너에서 실행된 프로세스가 실패할 때만(0이 아닌 종료 코드로 종료될 때) 다시 시작됩니다. 컨테이너가 한 번 이상 실행됩니다. 이 정책은 단기 작업을 실행하는 컨테이너에 적합합니다.
|
추가 예시
az container create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer-restart-demo \
--image microsoft/aci-wordcount:latest \
--restart-policy OnFailure \
--location eastus
microsoft/aci-wordcount:latest 템플릿
셰익스피어의 Hamlet 텍스트를 분석하고, 가장 많이 쓰이는 10개의 단어를 표준 출력에 쓰고 종료하는 Python 스크립트임.
작업이라서, 아래 코드로, 종료여부를 확인해야됨. 결과 출력은 로그로됨
az container show \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer-restart-demo \
--query containers[0].instanceView.currentState.state
로그확인
추가예제 : 환경변수 이용
Azure Cosmos DB 인스턴스를 만들고 환경 변수를 사용하여 연결 정보를 Azure Container Instance에 전달해보자
COSMOS_DB_ENDPOINT, COSMOS_DB_MASTERKEY 환경변수
코스모스DB만들기 az comosdb create 명령
COSMOS_DB_ENDPOINT=$(az cosmosdb create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name $COSMOS_DB_NAME \
--query documentEndpoint \
--output tsv)
키 가져오기
COSMOS_DB_MASTERKEY=$(az cosmosdb list-keys \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name $COSMOS_DB_NAME \
--query primaryMasterKey \
--output tsv)
이렇게 값 확인가능
위에 값을 가져온 환경변수 이용하여 컨테이너 create
--environmenet-variables 이용
az container create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name aci-demo \
--image microsoft/azure-vote-front:cosmosdb \
--ip-address Public \
--location eastus \
--environment-variables \
COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \
COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
컨테이너 속성 쿼리방법
az container show \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name aci-demo \
--query ipAddress.ip \
--output tsv
기존 환경변수 보는 방법
az container show \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name aci-demo \
--query containers[0].environmentVariables
아래와 같이 다 조회됨.
해당 값을 가리고 싶으면
--secure-environment-variables
이용하면 됨.
az container create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name aci-demo-secure \
--image microsoft/azure-vote-front:cosmosdb \
--ip-address Public \
--location eastus \
--secure-environment-variables \
COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \
COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
기본적으로 ACI 는 상태비저장임.
컨테이너 중지 시 모든 값 소실
외부저장소 볼륨 탑재해야됨
파일공유만들기
STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
az storage account create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name $STORAGE_ACCOUNT_NAME \
--sku Standard_LRS \
--location eastus
변수에 만든 파일공유 연결문자열 저장하기
Export 라는 걸 쓰네, 위에서 코스모스DB이름 가져올때는 안썼는데.. 길어서 그런가
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name $STORAGE_ACCOUNT_NAME \
--output tsv)
export 부분은 곧 실행하게 될 다른 CLI 명령에 이 변수가 액세스할 수 있게 해줍니다.
az storage share create --name aci-share-demo
STORAGE_KEY=$(az storage account keys list \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--account-name $STORAGE_ACCOUNT_NAME \
--query "[0].value" \
--output tsv)
값 확인 시 echo 붙여도 되고 안붙여도 확인가능
컨테이너 생성 시 영구볼륨 같이 탑재
az container create \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name aci-demo-files \
--image microsoft/aci-hellofiles \
--location eastus \
--ports 80 \
--ip-address Public \
--azure-file-volume-account-name $STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name aci-share-demo \
--azure-file-volume-mount-path /aci/logs/
az container show \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name aci-demo-files \
--query ipAddress.ip \
--output tsv
파일공유 스토리지에 저장된 파일보기
az storage file list -s aci-share-demo -o table
az storage file download -s aci-share-demo -p 1551654589974.txt
다운로드완료
열어보기 Shell에서 바로
이런식으로, 데이터 영구보존 가능함.
컨테이너 로그확인
az container logs \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer
아래와 같이 긴 로그 확인 가능
az container attach 명령은 컨테이너 시작 중에 진단 정보를 제공합니다. 컨테이너가 시작되면 표준 출력 및 표준 오류 스트림도 로컬 터미널에 씁니다.
az container attach \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer
컨테이너에서 명령 실행 : 예시, 쉘명령
az container exec \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer \
--exec-command /bin/sh
쉘접속됨, 간단한 명령 호출 가능
Exit로 나옴
컨테이너의 CPU 및 메모리 사용량 모니터링
컨테이너ID를 먼저 가져오기
CONTAINER_ID=$(az container show \
--resource-group 196a7813-f063-4037-8414-a8ddf757801a \
--name mycontainer \
--query id \
--output tsv)
Azure 모니터 조회 명령
az monitor metrics list \
--resource $CONTAINER_ID \
--metric CPUUsage \
--output table
혹은 메트릭에 MemoryUsage
물론 Azure Portal에서도 확인 가능함.
Microsoft OneNote 2016에서 작성
'기술(Azure 만...) > [MS]Azure' 카테고리의 다른 글
Azure Blob Shared Access Signature (SAS), Soft Delete (0) | 2019.03.10 |
---|---|
Function 조금, Cognitive service 조금 (0) | 2019.03.10 |
Luis Bot service on Azure Test결과 (0) | 2019.01.25 |
Azure CLI VM,웹서버,Scale,JMESPath (0) | 2019.01.17 |
Azure 기초 개념 (0) | 2019.01.17 |