Azure Container Apps에서 컨테이너 탐색

완료됨

Azure Container Apps는 Kubernetes 및 컨테이너 오케스트레이션의 세부 정보를 관리합니다. Azure Container Apps의 컨테이너는 원하는 런타임, 프로그래밍 언어 또는 개발 스택을 사용할 수 있습니다.

Azure Container App의 컨테이너가 수정 스냅샷 내의 pod에서 그룹화되는 방법을 보여주는 다이어그램

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) 컨테이너 이미지가 필요합니다.