Azure Functions의 Linux 컨테이너 지원
Azure Functions에서 실행할 개별 함수를 계획하고 개발할 때 일반적으로 코드 자체에 집중합니다. Azure Functions를 사용하면 코드 프로젝트만 Azure의 함수 앱에 쉽게 배포할 수 있습니다. Linux에서 실행되는 함수 앱에 코드 프로젝트를 배포하면 해당 프로젝트는 자동으로 만들어진 컨테이너에서 실행됩니다. 이 컨테이너는 Functions에 의해 관리됩니다.
Functions는 컨테이너화된 함수 앱 배포도 지원합니다. 컨테이너화된 배포에서는 지원되는 기반 이미지의 로컬 Docker 컨테이너에 자체 함수 앱 인스턴스를 만듭니다. 그런 다음 이 컨테이너화된 함수 앱을 Azure의 호스팅 환경에 배포할 수 있습니다. 고유의 함수 앱 컨테이너를 만들면 함수 코드의 즉각적인 런타임 환경을 사용자 지정하거나 제어할 수 있습니다.
Important
자체 컨테이너를 만들 때 컨테이너의 기본 이미지를 지원되는 최신 기본 이미지로 업데이트해야 합니다. Azure Functions에 지원되는 기본 이미지는 언어별로 다르며 Azure Functions 기본 이미지 리포지토리에서 찾을 수 있습니다.
Functions 팀은 이러한 기본 이미지에 대한 월별 업데이트를 게시하기 위해 최선을 다하고 있습니다. 정기 업데이트에는 Functions 런타임 및 언어 모두에 대한 최신 부 버전 업데이트 및 보안 수정 사항이 포함됩니다. 정기적으로 최신 기본 이미지에서 컨테이너를 업데이트하고 업데이트된 버전의 컨테이너를 다시 배포해야 합니다.
컨테이너 호스팅 옵션
Azure에서 컨테이너화된 함수 앱을 호스팅하기 위한 몇 가지 옵션이 있습니다.
호스팅 옵션 | 이점 |
---|---|
Azure Container Apps | Azure Functions는 Azure Container Apps에서 컨테이너화된 함수 앱을 개발, 배포 및 관리하기 위한 통합 지원을 제공합니다. 이렇게 하면 Azure Portal에서 동일한 Functions 도구 및 페이지를 사용하여 앱을 관리할 수 있습니다. 다른 마이크로 서비스, API, 웹 사이트, 워크플로 또는 컨테이너 호스팅 프로그램과 동일한 환경에서 Azure에서 이벤트 기반 함수를 실행해야 하는 경우 Azure Container Apps를 사용하여 함수 앱 컨테이너를 호스트합니다. Container Apps 호스팅을 사용하면 오픈 소스 모니터링, mTLS, Dapr 및 KEDA에 대한 기본 제공 지원을 통해 관리되는 Kubernetes 기반 환경에서 함수를 실행할 수 있습니다. 크기 조정을 0으로 지원하고 사용량에 대한 종량제 호스팅 모델을 제공합니다. 워크로드 프로필을 사용하여 전용 하드웨어(GPU)를 요청할 수도 있습니다. Azure에서 컨테이너화된 함수 앱을 실행하기 위한 권장 호스팅 옵션입니다. |
Azure Arc 지원 Kubernetes 클러스터(미리 보기) | Azure Arc 지원 Kubernetes 클러스터에서 코드 전용 배포 또는 사용자 지정 Linux 컨테이너로 함수 앱을 호스팅할 수 있습니다. Azure Arc를 사용하면 Kubernetes 클러스터를 연결하여 Azure에서 관리하고 구성할 수 있습니다. Azure Arc 지원 Kubernetes 클러스터에서 Azure Functions 컨테이너 호스팅은 현재 미리 보기 상태입니다. |
Azure Functions | Elastic Premium 계획 또는 전용 계획에서 컨테이너를 실행하여 Azure Functions에서 컨테이너화된 함수 앱을 호스트할 수 있습니다. 프리미엄 플랜 호스팅은 동적 크기 조정의 이점을 제공합니다. 기존의 사용되지 않은 App Service 요금제 리소스를 활용하기 위해 전용 플랜 호스팅을 사용할 수 있습니다. |
Kubernetes | Azure Functions 런타임은 원하는 위치와 방법으로 호스팅하는 유연성을 제공하므로 Kubernetes 클러스터에서 직접 함수 앱 컨테이너를 호스팅하고 관리할 수 있습니다. KEDA(Kubernetes-based event-driven autoscaling)은 Azure Functions 런타임, 도구와 결합하여 Kubernetes에서 이벤트 기반 스케일을 제공합니다. KEDA를 사용하거나 직접 배포를 통해 Kubernetes에서 컨테이너화된 함수 앱을 실행하는 것은 기여자와 커뮤니티에서 제공하는 최선의 지원을 통해 무료로 사용할 수 있는 오픈 소스 작업이라는 점을 유념해야 합니다. AKS(Azure Kubernetes Service)에 배포하는 경우에도 클러스터에서 고유한 함수 앱 컨테이너를 유지 관리할 책임이 있습니다. |
기능 지원 비교
컨테이너에서 함수 앱을 실행할 때 Azure Functions의 다양한 기능과 동작이 지원되는 정도는 선택한 컨테이너 호스팅 옵션에 따라 달라집니다.
기능/동작 | Container Apps(통합) | Container Apps(직접) | 프리미엄 계획 | 전용 계획 | Kubernetes |
---|---|---|---|---|---|
기술 지원 | 예 | 아니요 | 예 | 예 | 아니요 |
Functions 포털 통합 | 예 | 아님 | 예 | 예 | 아님 |
이벤트 기반 크기 조정 | 예5 | 예(크기 조정 규칙) | 예 | 아니요 | 아니요 |
최대 크기 조정(인스턴스) | 10001 | 10001 | 1002 | 10-303 | 클러스터에 따라 다름 |
0으로 크기 조정 인스턴스 | 예 | 예 | 아니요 | 아니요 | KEDA |
실행 시간 제한 | 바인딩되지않은 6 | 바인딩되지않은 6 | 바인딩되지않은 7 | 바인딩되지않은 8 | 없음 |
핵심 도구 배포 | func azurecontainerapps |
아니요 | 아니요 | 아니요 | func kubernetes |
수정 버전 | 아님 | 예 | 아님 | 아님 | 아님 |
배포 슬롯 | 아님 | 아님 | 예 | 예 | 아님 |
스트리밍 로그 | 예 | 예 | 예 | 예 | 아님 |
콘솔 액세스 | 현재 사용할 수 없음4 | 예 | 예(Kudu 사용) | 예(Kudu 사용) | 예(Pod에서 사용 kubctl ) |
콜드 시작 완화 | 최소 복제본 | 규칙 크기 조정 | 항상 준비/미리 준비된 인스턴스 | 해당 없음 | n/a |
App Service 인증: | 현재 사용할 수 없음4 | 예 | 예 | 예 | 아님 |
사용자 지정 도메인 이름 | 현재 사용할 수 없음4 | 예 | 예 | 예 | 아님 |
프라이빗 키 인증서 | 현재 사용할 수 없음4 | 예 | 예 | 예 | 아님 |
가상 네트워크 | 예 | 예 | 예 | 예 | 예 |
가용성 영역 | 예 | 예 | 예 | 예 | 예 |
진단 | 현재 사용할 수 없음4 | 예 | 예 | 예 | 아님 |
전용 하드웨어 | 예(워크로드 프로필) | 예(워크로드 프로필) | 아님 | 예 | 예 |
전용 GPU | 예(워크로드 프로필) | 예(워크로드 프로필) | 아님 | 예 | 예 |
구성 가능한 메모리/CPU 수 | 예 | 예 | 아니요 | 아님 | 예 |
"무료 권한 부여" 옵션 | 예 | 예 | 아니요 | 아니요 | 아니요 |
가격 정보 | Container Apps 청구 | Container Apps 청구 | 프리미엄 플랜 청구 | 전용 요금제 청구 | AKS 가격 책정 |
서비스 이름 요구 사항 | 2-32자: 소문자, 숫자 및 하이픈으로 제한됩니다. 문자로 시작하고 영숫자로 끝나야 합니다. | 2-32자: 소문자, 숫자 및 하이픈으로 제한됩니다. 문자로 시작하고 영숫자로 끝나야 합니다. | 64자 미만: 영숫자 및 하이픈으로 제한됩니다. 하이픈으로 시작하거나 끝낼 수 없습니다. | 64자 미만: 영숫자 및 하이픈으로 제한됩니다. 하이픈으로 시작하거나 끝낼 수 없습니다. | 253자 미만: 영숫자 및 하이픈으로 제한됩니다. 영숫자 문자로 시작하고 끝나야 합니다. |
- Container Apps에서 기본값은 10개의 인스턴스이지만 전체 최대 1,000개 인 최대 복제본 수를 설정할 수 있습니다. 이 설정은 사용할 수 있는 코어 할당량이 충분한 한 적용됩니다. Azure Portal에서 함수 앱을 만들 때는 300개의 인스턴스로 제한됩니다.
- 일부 지역에서는 프리미엄 플랜의 Linux 앱이 인스턴스 100개까지 크기 조정될 수 있습니다. 자세한 내용은 프리미엄 플랜 문서를 참조하세요.
- 다양한 App Service 요금제 옵션에 대한 구체적인 한도는 App Service 요금제 한도를 참조하세요.
- 기능 패리티는 Azure Container Apps에서 통합 호스팅의 목표입니다.
- 대부분의 트리거에서 지원하는 KEDA가 필요합니다. 이벤트 기반 크기 조정을 지원하는 트리거를 알아보려면 Container Apps 호스팅에 대한 고려 사항을 참조하세요.
- 최소 복제본 수가 0으로 설정되면 기본 시간 제한은 앱에서 사용되는 특정 트리거에 따라 달라집니다.
- 최대 실행 시간 제한 기간은 적용되지 않습니다. 그러나 함수 실행에 지정된 유예 기간은 규모 감축 중에 60분이며 플랫폼 업데이트 중에는 10분의 유예 기간이 지정됩니다.
- App Service 요금제를 Always On으로 설정해야 합니다. 플랫폼 업데이트 중에는 10분의 유예 기간이 제공됩니다.
시작
Linux 컨테이너에서 Azure Functions 작업을 시작하려면 다음 링크를 사용합니다.
다음 작업을 수행하려고 합니다. | 문서 참조: |
---|---|
첫 번째 컨테이너화된 함수 만들기 | 로컬 Linux 컨테이너에서 함수 앱 만들기 |
Azure Container Apps에 함수 만들기 및 배포 | Azure Container Apps에서 첫 번째 컨테이너화된 함수 만들기 |
Azure Functions에 컨테이너화된 Functions 만들기 및 배포 | 첫 번째 컨테이너화된 Azure Functions 만들기 |
Azure Arc 지원 Kubernetes에 함수 만들기 및 배포 | Azure Arc에서 첫 번째 컨테이너화된 Azure Functions 만들기(미리 보기) |