Azure Functions에서 실행할 개별 함수를 계획하고 개발할 때 일반적으로 코드 자체에 집중합니다. Azure Functions를 사용하면 코드 프로젝트만 Azure의 함수 앱에 쉽게 배포할 수 있습니다. Linux 함수 앱에 프로젝트를 배포할 때 코드는 자동으로 생성되고 Functions 관리 도구와 원활하게 통합되는 컨테이너에서 실행됩니다.
Functions는 컨테이너화된 함수 앱 배포도 지원합니다. 컨테이너화된 배포에서는 지원되는 기반 이미지의 로컬 Docker 컨테이너에 자체 함수 앱 인스턴스를 만듭니다. 그런 다음 이 컨테이너화된 함수 앱을 Azure의 호스팅 환경에 배포할 수 있습니다. 고유의 함수 앱 컨테이너를 만들면 함수 코드의 즉각적인 런타임 환경을 사용자 지정하거나 제어할 수 있습니다.
중요합니다
사용자 고유의 컨테이너를 만들 때는 컨테이너의 기본 이미지를 지원되는 최신 기본 이미지로 업데이트해야 합니다. Azure Functions에 지원되는 기본 이미지는 언어별로 다르며 Azure Functions 기본 이미지 리포지토리에서 찾을 수 있습니다.
Functions 팀은 이러한 기본 이미지에 대한 월별 업데이트를 게시하기 위해 최선을 다하고 있습니다. 정기 업데이트에는 Functions 런타임 및 언어 모두에 대한 최신 부 버전 업데이트 및 보안 수정 사항이 포함됩니다. 정기적으로 최신 기본 이미지에서 컨테이너를 업데이트하고 업데이트된 버전의 컨테이너를 다시 배포해야 합니다. 자세한 내용은 사용자 지정 컨테이너 유지 관리를 참조하세요.
컨테이너 호스팅 옵션
Azure에서 컨테이너화된 함수 앱을 호스팅하기 위한 몇 가지 옵션이 있습니다.
호스팅 옵션 | 이점 |
---|---|
Azure Container Apps | Azure Functions는 Azure Container Apps에서 컨테이너화된 함수 앱을 개발, 배포 및 관리하기 위한 통합 지원을 제공합니다. 이 통합을 통해 Azure Portal에서 동일한 Functions 도구 및 페이지를 사용하여 앱을 관리할 수 있습니다. Azure Container Apps를 사용하여 다른 마이크로 서비스, API, 웹 사이트, 워크플로 또는 기타 컨테이너 호스팅 프로그램과 동일한 환경에서 함수 앱 컨테이너를 호스트합니다. Container Apps 호스팅을 사용하면 오픈 소스 모니터링, mTLS, Dapr 및 KEDA에 대한 기본 제공 지원을 통해 관리되는 Kubernetes 기반 환경에서 함수를 실행할 수 있습니다. 크기 조정을 0으로 지원하고 서버리스 종량제 호스팅 모델을 제공합니다. 워크로드 프로필을 사용하여 전용 하드웨어(GPU)를 요청할 수도 있습니다. 컨테이너화된 함수 앱 n Azure에 권장되는 호스팅 옵션입니다. |
Azure Arc 지원 Kubernetes 클러스터(미리 보기) | Azure Arc 지원 Kubernetes 클러스터에서 코드 전용 배포 또는 사용자 지정 Linux 컨테이너로 함수 앱을 호스팅할 수 있습니다. Azure Arc를 사용하면 Kubernetes 클러스터를 연결하여 Azure에서 관리하고 구성할 수 있습니다. Azure Arc 지원 Kubernetes 클러스터에서 Azure Functions 컨테이너 호스팅은 현재 미리 보기 상태입니다. 자세한 내용은 컨테이너 및 Azure Functions 작업을 참조하세요. |
Azure Functions | Elastic Premium 또는 App Service(전용) 계획에서 컨테이너를 실행하여 Azure Functions에서 컨테이너화된 함수 앱을 호스트할 수 있습니다. Container Apps에서 다양한 컨테이너 지원을 위해 Container Apps 호스팅을 사용합니다. 프리미엄 플랜 호스팅은 동적 크기 조정의 이점을 제공합니다. 기존의 사용되지 않은 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에서 사용 kubectl ) |
콜드 시작 완화 | 최소 복제본 | 규칙 크기 조정 | 항상 준비/미리 준비된 인스턴스 | 해당 없음 | 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분의 유예 기간이 제공됩니다.
사용자 지정 컨테이너 유지 관리
사용자 고유의 컨테이너를 만들 때는 컨테이너의 기본 이미지를 지원되는 최신 기본 이미지로 업데이트해야 합니다. Azure Functions에 지원되는 기본 이미지는 언어별로 다르며 Azure Functions 기본 이미지 리포지토리에서 찾을 수 있습니다.
Functions 팀은 이러한 기본 이미지에 대한 월별 업데이트를 게시하기 위해 최선을 다하고 있습니다. 정기 업데이트에는 Functions 런타임 및 언어 모두에 대한 최신 부 버전 업데이트 및 보안 수정 사항이 포함됩니다. 정기적으로 최신 기본 이미지에서 컨테이너를 업데이트하고 업데이트된 버전의 컨테이너를 다시 배포해야 합니다.
Linux의 표준 배포와 같이 기본 이미지가 Functions에서 관리되는 경우 함수 팀에서 릴리스한 일반 기본 이미지 업데이트에 의해 앱이 자동으로 최신 상태로 유지됩니다. 이러한 비정형 컨테이너의 경우 앱이 새 부 버전 또는 패치된 버전의 호스트 런타임이 있는 기본 이미지에서 실행되도록 업데이트됩니다.
사용자 지정 이미지를 사용하여 자체 컨테이너화된 앱을 만들거나 배포하는 경우 릴리스된 기본 이미지를 사용하여 사용자 지정 이미지가 up-to유지되도록 해야 합니다. 이러한 기본 이미지 업데이트에는 새로운 기능 및 향상된 기능 외에도 앱에 중요한 보안 업데이트가 포함될 수 있습니다. 앱이 보호되도록 하려면 최신 상태를 유지하고 있는지 확인합니다.
경우에 따라 이전 기본 이미지를 사용하는 사용자 지정 컨테이너의 앱이 제대로 작동하지 않을 수 있음을 의미할 수 있는 플랫폼 수준 변경을 수행해야 합니다. 이러한 주요 변경의 경우 정기적인 업데이트를 수행하는 앱이 부정적인 영향을 받지 않도록 업데이트된 이미지를 미리 롤아웃합니다. 사용자 지정 컨테이너에서 실행되는 앱의 잠재적인 문제를 방지하려면 릴리스된 최신 부 버전보다 너무 뒤처지지 않도록 합니다. 지원 사례 중에 앱이 이전 또는 지원되지 않는 버전에 있기 때문에 문제가 발생하는 것으로 확인되면 지원을 계속하기 전에 컨테이너를 최신 기본 이미지 버전으로 업데이트하도록 요청합니다.
시작
Linux 컨테이너에서 Azure Functions 작업을 시작하려면 다음 링크를 사용합니다.
다음 작업을 수행하려고 합니다. | 문서 참조: |
---|---|
첫 번째 컨테이너화된 함수 만들기 | 로컬 Linux 컨테이너에서 함수 앱 만들기 |
Azure Container Apps에 함수 만들기 및 배포 | Azure Container Apps에서 첫 번째 컨테이너화된 함수 만들기 |
Azure Functions에 컨테이너화된 Functions 만들기 및 배포 | 첫 번째 컨테이너화된 Azure Functions 만들기 |