Azure Container Apps에서 컨테이너 탐색
Azure Container Apps는 Kubernetes 및 컨테이너 오케스트레이션의 세부 정보를 관리합니다. Azure Container Apps의 컨테이너는 원하는 런타임, 프로그래밍 언어 또는 개발 스택을 사용할 수 있습니다.
Azure Container Apps는 Linux 기반 x86-64(linux/amd64
) 컨테이너 이미지를 지원합니다. 필수 기본 컨테이너 이미지는 없으며 컨테이너가 충돌하면 자동으로 다시 시작됩니다.
구성
다음 코드는 컨테이너 앱 리소스 템플릿의 properties.template
섹션에 있는 containers
배열의 예입니다. 발췌한 내용은 ARM(Azure Resource Manager) 템플릿을 사용할 때 컨테이너를 설정할 때 사용할 수 있는 몇 가지 구성 옵션을 보여 줍니다. 템플릿 ARM 구성 섹션을 변경하면 새 컨테이너 앱 수정 버전이 트리거됩니다.
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"env": [
{
"name": "HTTP_PORT",
"value": "80"
},
{
"name": "SECRET_VAL",
"secretRef": "mysecret"
}
],
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/myfiles",
"volumeName": "azure-files-volume"
}
]
"probes":[
{
"type":"liveness",
"httpGet":{
"path":"/health",
"port":8080,
"httpHeaders":[
{
"name":"Custom-Header",
"value":"liveness probe"
}]
},
"initialDelaySeconds":7,
"periodSeconds":3
// file is truncated for brevity
여러 컨테이너
단일 컨테이너 앱에서 여러 컨테이너를 정의하여 사이드카 패턴구현할 수 있습니다. 컨테이너 앱의 컨테이너는 하드 디스크 및 네트워크 리소스를 공유하고 동일한 애플리케이션 수명 주기를 경험합니다.
사이드카 컨테이너의 예는 다음과 같습니다.
- 공유 볼륨의 기본 앱 컨테이너에서 로그를 읽고 로깅 서비스로 전달하는 에이전트입니다.
- 공유 볼륨의 기본 앱 컨테이너에서 사용하는 캐시를 새로 고치는 백그라운드 프로세스입니다.
메모
단일 컨테이너 앱에서 여러 컨테이너를 실행하는 것은 고급 사용 사례입니다. 마이크로 서비스 아키텍처를 구현하는 경우와 같이 여러 컨테이너를 실행하려는 대부분의 경우 각 서비스를 별도의 컨테이너 앱으로 배포합니다.
컨테이너 앱에서 여러 컨테이너를 실행하려면 컨테이너 앱 템플릿의 컨테이너 배열에 둘 이상의 컨테이너를 추가합니다.
컨테이너 레지스트리
Container Apps 구성에서 자격 증명을 제공하여 프라이빗 레지스트리에 호스트되는 이미지를 배포할 수 있습니다.
컨테이너 레지스트리를 사용하려면 컨테이너 앱 리소스 템플릿의 properties.configuration 섹션에서 레지스트리 배열에 필요한 필드를 정의합니다. passwordSecretRef 필드는 암호를 정의한 비밀 배열 이름에서 비밀의 이름을 식별합니다.
{
...
"registries": [{
"server": "docker.io",
"username": "my-registry-user-name",
"passwordSecretRef": "my-password-secret-name"
}]
}
레지스트리 정보가 추가되면 저장된 자격 증명을 사용하여 앱이 배포될 때 프라이빗 레지스트리에서 컨테이너 이미지를 끌어올 수 있습니다.
제한
Azure Container Apps에는 다음과 같은 제한 사항이 있습니다.
- 권한 있는 컨테이너: Azure Container Apps는 권한 있는 컨테이너를 실행할 수 없습니다. 프로그램에서 루트 액세스가 필요한 프로세스를 실행하려고 하면 컨테이너 내의 애플리케이션에 런타임 오류가 발생합니다.
-
운영 체제: Linux 기반(
linux/amd64
) 컨테이너 이미지가 필요합니다.