Azure Functions의 Azure Container Apps 호스팅

Azure Functions는 Azure Container Apps에서 컨테이너화된 함수 앱을 개발, 배포 및 관리하기 위한 통합 지원을 제공합니다. 다른 마이크로 서비스, API, 웹 사이트, 워크플로 또는 컨테이너 호스팅 프로그램과 동일한 환경에서 Azure에서 이벤트 기반 함수를 실행해야 하는 경우 Azure Container Apps를 사용하여 함수 앱 컨테이너를 호스트합니다. Container Apps 호스팅을 사용하면 오픈 소스 모니터링, mTLS, Dapr 및 KEDA를 기본적으로 지원하는 Kubernetes 기반 환경에서 함수를 실행할 수 있습니다.

Important

Azure Container Apps에서 함수 앱 호스팅에 대한 지원은 현재 미리 보기로 제공됩니다.

Container Apps와 통합하면 기존 함수 프로그래밍 모델을 사용하여 Azure Functions에서 지원하는 기본 프로그래밍 언어 또는 프레임워크로 함수 코드를 작성할 수 있습니다. 이벤트 기반 크기 조정을 사용하여 Functions 트리거 및 바인딩을 계속 가져옵니다. Container Apps는 기본 AKS(Azure Kubernetes Service)의 기능을 사용하는 동시에 Kubernetes API로 작업해야 하는 복잡성을 제거합니다.

또한 이 통합은 기존 Functions 클라이언트 도구와 Azure Portal을 사용하여 컨테이너를 만들고, Container Apps에 함수 앱 컨테이너를 배포하고, 지속적인 배포를 구성할 수 있음을 의미합니다. 네트워크 및 관찰성 구성은 컨테이너 앱 환경 수준에서 정의되며 함수 앱을 포함하여 Container Apps 환경에서 실행되는 모든 마이크로 서비스에 적용됩니다. KEDA, Dapr, Envoy를 비롯한 Container Apps의 다른 클라우드 네이티브 기능도 제공됩니다. Application Insights를 사용하여 함수 실행을 모니터링할 수 있습니다.

호스팅 및 워크로드 프로필

Container Apps에는 서버리스 소비 계획과 워크로드 프로필을 사용하여 배포 리소스를 더 잘 제어하는 전용 계획이라는 두 가지 기본 호스팅 계획이 있습니다. 워크로드 프로필은 환경에 배포된 컨테이너 앱에 사용할 수 있는 컴퓨팅 및 메모리 리소스의 양을 결정합니다. 이러한 프로필은 애플리케이션의 다양한 요구 사항에 맞게 구성됩니다. 사용량 워크로드 프로필은 모든 워크로드 프로필 환경 형식에 추가되는 기본 프로필입니다. 환경을 만들 때 또는 만들어진 후에 환경에 전용 워크로드 프로필을 추가할 수 있습니다. 워크로드 프로필에 대한 자세한 내용은 Azure Container Apps의 워크로드 프로필을 참조 하세요.

컨테이너화된 함수 앱의 Container Apps 호스팅은 Container Apps를 지원하는 모든 지역에서 지원됩니다.

앱에 특정 하드웨어 요구 사항이 없는 경우 기본 소비 워크로드 프로필을 사용하여 소비 계획 또는 전용 계획에서 환경을 실행할 수 있습니다. Container Apps에서 함수를 실행하는 경우 Container Apps 사용량에 대해서만 요금이 청구됩니다. 자세한 내용은 Azure Container Apps 가격 책정 페이지를 참조 하세요.

Azure Container Apps의 Azure Functions는 워크로드 프로필을 사용하여 전용 계획에서 GPU 사용 호스팅을 지원합니다.

기본 소비 계획에서 Container Apps에 함수 앱 컨테이너를 만들고 배포하는 방법을 알아보려면 Azure Container Apps에서 첫 번째 컨테이너화된 함수 만들기를 참조하세요.

워크로드 프로필을 사용하여 Container Apps 환경을 만들고 특정 워크로드에 함수 앱 컨테이너를 배포하는 방법을 알아보려면 Container Apps 워크로드 프로필을 참조 하세요.

컨테이너의 함수

Container Apps 호스팅을 사용하려면 함수 코드를 만들고 기본 Linux 컨테이너에서 실행해야 합니다. Functions는 컨테이너화된 함수 앱을 생성하는 데 사용할 수 있는 언어별 기본 이미지 집합을 기본.

Azure Functions Core Tools를 사용하여 Functions 프로젝트를 만들고 옵션을 포함 --docker 하면 Core Tools는 올바른 기본 이미지로 Dockerfile을 생성하며, 컨테이너를 만들 때 시작점으로 사용할 수 있습니다.

Important

자체 컨테이너를 만들 때 컨테이너의 기본 이미지를 지원되는 최신 기본 이미지로 업데이트해야 합니다. Azure Functions에 지원되는 기본 이미지는 언어별로 다르며 Azure Functions 기본 이미지 리포지토리에서 찾을 수 있습니다.

Functions 팀은 이러한 기본 이미지에 대한 월별 업데이트를 게시하기 위해 최선을 다하고 있습니다. 정기 업데이트에는 Functions 런타임 및 언어 모두에 대한 최신 부 버전 업데이트 및 보안 수정 사항이 포함됩니다. 정기적으로 최신 기본 이미지에서 컨테이너를 업데이트하고 업데이트된 버전의 컨테이너를 다시 배포해야 합니다.

함수 코드를 변경할 때 컨테이너 이미지를 다시 빌드하고 다시 게시해야 합니다. 자세한 내용은 레지스트리의 이미지 업데이트를 참조 하세요.

배포 옵션

Azure Functions는 현재 컨테이너화된 함수 앱을 Azure Container Apps에 배포하는 다음과 같은 방법을 지원합니다.

크기 조정 규칙 구성

Container Apps의 Azure Functions는 이벤트 대상에 따라 크기 조정 매개 변수 및 규칙을 구성하도록 설계되었습니다. KEDA 크기 조정 개체를 구성하는 것에 대해 걱정할 필요가 없습니다. 함수 앱을 만들거나 수정할 때 최소 및 최대 복제본(replica) 개수를 설정할 수 있습니다. 다음 Azure CLI 명령은 Azure Container Registry에서 Container Apps 환경에서 새 함수 앱을 만들 때 최소 및 최대 복제본(replica) 수를 설정합니다.

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

다음 명령은 기존 함수 앱에서 동일한 최소 및 최대 복제본(replica) 개수를 설정합니다.

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

관리되는 리소스 그룹

Container Apps의 Azure Function은 특별히 관리되는 리소스 그룹에서 작동하는 컨테이너 리소스를 실행하므로 사용자, 그룹 또는 서비스 원칙에 따라 관리되는 그룹의 리소스를 의도하지 않거나 무단으로 수정하거나 삭제하지 않도록 방지하여 앱의 일관성을 보호할 수 있습니다. 이 관리되는 리소스 그룹은 Container Apps 환경에서 함수 앱 리소스를 처음 만들 때 만들어집니다. 컨테이너화된 함수 앱에 필요한 Container Apps 리소스는 이 관리되는 리소스 그룹에서 실행되며, 동일한 환경에서 만든 다른 함수 앱은 이 기존 그룹을 사용합니다. 관리되는 리소스 그룹은 모든 함수 앱 컨테이너 리소스가 환경에서 제거된 후 자동으로 제거됩니다. 관리되는 리소스 그룹이 표시되는 동안 관리되는 리소스 그룹을 수정하거나 제거하려고 하면 오류가 발생합니다. 환경에서 관리되는 리소스 그룹을 제거하려면 모든 함수 앱 컨테이너 리소스를 제거하면 제거됩니다. 이러한 관리되는 리소스 그룹에 문제가 발생하는 경우 지원에 문의해야 합니다.

Container Apps 호스팅에 대한 고려 사항

Container Apps에 함수 앱 컨테이너를 배포할 때 다음 사항을 고려해야 합니다.

  • 모든 트리거를 사용할 수 있지만 Container Apps에서 실행할 때 다음 트리거만 동적으로 확장할 수 있습니다(인스턴스 0개).
    • HTTP
    • Azure Queue Storage
    • Azure Service Bus
    • Azure Event Hubs
    • Kafka*
    • 타이머
      *Container Apps에서 호스트되는 경우 프로토콜 ssl 값이 지원되지 않습니다. 다른 프로토콜 값을 사용합니다.
  • 기본 제공 Container Apps 정책 정의의 경우 현재 환경 수준 정책만 Azure Functions 컨테이너에 적용됩니다.
  • 현재는 리소스 그룹 간 또는 구독 간에 Container Apps 호스팅 함수 앱 배포를 이동할 수 없습니다. 대신 새 리소스 그룹, 구독 또는 지역에서 기존 컨테이너화된 앱 배포를 다시 만들어야 합니다.
  • Container Apps를 사용하는 경우 하위 수준의 Kubernetes API에 직접 액세스할 수 없습니다.
  • 확장이 containerapp Azure CLI의 appservice-kube 확장과 충돌합니다. 이전에 Azure Arc에 앱을 게시한 경우 실행하고 az extension list 설치되지 않았는지 확인 appservice-kube 합니다. 이 경우 를 실행 az extension remove -n appservice-kube하여 제거할 수 있습니다.
  • Functions Dapr 확장은 리포지토리에 제공되는 도움말과 함께 미리 보기로 제공됩니다.

다음 단계