Azure Functions에 대한 연속 배포

Azure Functions는 소스 컨트롤 저장소에서 함수 앱으로 변경 사항을 지속적으로 배포할 수 있게 해줍니다. 이 워크플로우에서는 코드 업데이트가 프로젝트에서 Azure로 빌드, 패키징, 배포를 트리거합니다. 지원되는 배포 제공자와 릴리스 전략은 호스팅 계획에 따라 다릅니다.

호스팅 계획 추천하는 CI/CD 제공자 배치 및 해제 지침
Flex 사용량 GitHub Actions 또는 Azure Pipelines 패키지 배포를 사용합니다. 배치 슬롯은 지원되지 않습니다. CI/CD 릴리스 컨트롤을 사용하고 제로 다운타임 배포를 위해 롤링 업데이트를 고려하세요.
탄력적 프리미엄, 헌신, 그리고 소비 GitHub Actions 또는 Azure Pipelines ZIP 배포를 사용합니다. 앱이 지원한다면, 스테이징 슬롯에 배포하고 업데이트를 검증한 후 해당 슬롯을 프로덕션으로 전환하세요.
Azure Container Apps (Azure 컨테이너 애플리케이션) 컨테이너 빌드 및 배포 워크플로우 컨테이너 이미지를 배포합니다. 자세한 내용은 Azure Container Apps의 Azure Functions 개요를 참조하세요.

이 글 상단에서 호스팅 계획을 선택하여 기능 앱에 적용되는 지속적 배포 지침을 확인하세요.

배포 슬롯을 지원하는 호스팅 계획의 경우, 생산 슬롯 대신 스테이징 슬롯에 지속적 배포를 설정하세요. 스테이징에서 업데이트를 확인한 다음, 스테이징 슬롯을 프로덕션으로 스왑하세요. 생산 슬롯에 직접 연결한다면, 생산 품질의 코드만 통합 브랜치에 도달하도록 하세요.

Flex Consumption을 위해서는 GitHub ActionsAzure Pipelines를 설정하세요. Flex Consumption은 배포 슬롯을 지원하지 않으므로, 배포 기록을 소스 컨트롤과 CI/CD 시스템에 보관하여 잘못된 배포에서 복구할 수 있도록 하세요.

Azure Container Apps Functions의 경우, 컨테이너 이미지를 빌드하고 배포하세요. 배포 슬롯을 사용할 수 없습니다. 수정본을 활용하고, 제로 다운타임 릴리스를 위한 청록색 배포 전략을 고려하세요.

이 글의 배포 센터 단계는 App Service 소스 제어 통합을 지원하는 함수형 앱에 적용됩니다. 소비 요금제에서는 이 통합이 Windows에서만 지원됩니다. Azure CLI를 사용해 소스 제어 통합도 설정할 수 있습니다.

Azure Functions는 앱에 지속적인 배포를 위해 다음 원본을 지원합니다.

Azure DevOps의 서비스 중 하나인 Azure Repos에서 프로젝트 코드를 유지 관리합니다. Git 및 Team Foundation 버전 제어를 모두 지원합니다. Azure Pipelines 빌드 공급자와 함께 사용됩니다. 자세한 내용은 Azure Repos란?을 참조하십시오.

함수 앱을 외부 Git 저장소에 연결할 수도 있지만, 이 옵션은 수동 동기화가 필요합니다. 배포 옵션에 대한 자세한 내용은 Azure Functions의 배포 기술을 참조하세요.

참고

이 문서에서 다루는 지속적인 배포 옵션은 코드 전용 배포에만 해당됩니다. Azure Functions on Azure Container Apps については、Azure Functions on Azure Container Apps overview를 참조하세요. 프리미엄 또는 전용 플랜에서 Azure Functions에 호스팅되는 사용자 지정 컨테이너의 경우 컨테이너 및 Azure Functions 사용Azure로 컨테이너의 지속적인 배포 사용 섹션을 참조하세요.

Flex Consumption은 Azure Pipelines를 사용하여 Azure Repos에서, GitHub Actions를 통해 GitHub에서 지속적 배포를 지원합니다. Bitbucket 및 로컬 Git 배포를 포함한 App Service 소스 제어 통합은 지원되지 않습니다.

Azure Container Apps의 Functions에서는 선호하는 저장소에 소스를 유지하고, CI/CD 워크플로우를 사용해 컨테이너 이미지를 빌드하고 푸시하세요. 그 다음 함수 앱을 새 이미지를 사용하도록 업데이트하세요. 자세한 내용은 Azure Container Apps의 Functions 배포 및 설정 항목을 참조하세요.

요구 사항

Azure에서 함수에 대한 배포 단위는 함수 앱입니다. 지속적인 배포가 성공하려면 프로젝트의 디렉터리 구조가 Azure Functions에서 예상하는 기본 폴더 구조와 호환되어야 합니다. Azure Functions Core Tools, Visual Studio Code, 또는 Visual Studio를 사용해 코드 프로젝트를 만들면, Azure Functions 템플릿이 올바른 디렉터리 구조를 가진 코드 프로젝트를 생성합니다. 함수 앱에 모든 함수를 동시에, 같은 패키지에 배포하면 됩니다.

지속적 배포를 활성화한 후, Azure 포털의 함수 코드 접근은 읽기 전용으로 설정되는데, 이는 진실의 출처가 다른 곳에 있기 때문입니다.

참고

배포 센터는 인바운드 네트워크 제한이 있는 함수 앱에 대한 지속적인 배포 사용 설정을 지원하지 않습니다. 대신 빌드 프로바이저 워크플로우를 GitHub나 Azure Pipelines에서 직접 설정하세요. 러너나 에이전트는 설정된 접근 제한 하에서 앱의 배포 엔드포인트에 접근할 수 있어야 합니다. 엔드포인트가 프라이빗일 때, 러너나 에이전트도 프라이빗 DNS 해석이 필요합니다. Azure Pipelines의 경우, 연결된 네트워크에서 자체 호스팅 에이전트를 사용하거나, 네트워킹이 있는 관리형 DevOps 에이전트 풀을 사용하세요. GitHub Actions의 경우, 연결된 네트워크에서 자체 호스팅 러너를 사용하거나, Azure 프라이빗 네트워킹이 지원되는 GitHub 호스팅 러너를 사용하세요.

함수형 앱에 인바운드 네트워크 제한이 있을 경우, 워크플로우 러너나 에이전트는 설정된 접근 제한 하에 앱의 배포 엔드포인트에 접근할 수 있어야 합니다. 엔드포인트가 프라이빗일 때, 러너나 에이전트도 프라이빗 DNS 해석이 필요합니다. Azure Pipelines의 경우, 연결된 네트워크에서 자체 호스팅 에이전트를 사용하거나, 네트워킹이 있는 관리형 DevOps 에이전트 풀을 사용하세요. GitHub Actions의 경우, 연결된 네트워크에서 자체 호스팅 러너를 사용하거나, Azure 프라이빗 네트워킹이 지원되는 GitHub 호스팅 러너를 사용하세요.

CI/CD 워크플로우는 유효한 Azure Functions 컨테이너 이미지를 구축하고, 그 이미지를 컨테이너 앱이 접근할 수 있는 레지스트리로 푸시한 뒤, 해당 이미지에서 수정본을 생성하도록 함수 앱을 업데이트해야 합니다. 자세한 내용은 Azure Container Apps의 Create a function app을 참조하세요.

빌드 공급자 선택

코드 프로젝트 빌드는 배포 프로세스의 일부입니다. 구체적인 빌드 프로세스는 특정 언어 스택, 운영 체제 및 호스팅 계획에 따라 다릅니다. 호스팅하는 곳에 따라 로컬 또는 원격으로 빌드할 수 있습니다. 자세한 내용은 원격 빌드를 참조하세요.

중요

보안을 강화하려면 Azure Pipelines나 GitHub Actions와 같은 관리 아이덴티티티를 지원하는 빌드 제공업체를 사용하세요. App Service 빌드 서비스는 기본 인증을 활성화 하고 텍스트 기반 자격 증명을 사용해야 합니다.

Azure Functions는 다음과 같은 빌드 공급자를 지원합니다.

Azure Pipelines는 Azure DevOps의 서비스 중 하나이자 Azure Repos 프로젝트의 기본 빌드 공급자입니다. Azure Pipelines를 사용하여 GitHub에서 프로젝트를 빌드할 수도 있습니다. Azure Pipelines에는 Azure Functions에 배포하기 위해 특별히 설계된 AzureFunctionApp 작업이 있습니다. 이 작업을 통해 프로젝트가 빌드, 패키지 및 배포되는 방법을 제어할 수 있습니다. Azure Pipelines는 관리 ID를 지원합니다.

소스 제어 통합을 사용하도록 설정할 때 이러한 공급자의 장점과 제한 사항을 염두에 둡니다. 특정 공급자를 활용하려면 리포지토리 원본 유형을 변경해야 할 수도 있습니다.

Azure Pipelines나 GitHub Actions를 사용해 프로젝트를 구축하고 배포하세요. 이 제공업체들은 Microsoft Entra 아이덴티티를 지원하며 Flex Consumption 패키지 배포 프로세스를 사용합니다.

App Service 빌드 서비스는 Flex Consumption에는 적용되지 않습니다.

Azure Functions 이미지를 빌드해 컨테이너 레지스트리로 푸시한 뒤, 함수 앱을 업데이트해 새 이미지에서 리비전을 생성하는 컨테이너 빌드 프로바이저를 사용하세요. 종단 간 GitHub Actions 워크플로우에 대해서는 GitHub Actions로 Azure Container Apps 배포를 참조하세요.

지속적 배포 구성

Azure 포털은 기능 앱을 위한 배포 센터를 제공하여 지속적 배포를 더 쉽게 구성할 수 있게 합니다. 지속적인 배포를 구성하는 구체적인 방법은 코드가 있는 소스 제어 리포지토리 형식과 선택한 빌드 공급자에 따라 달라집니다.

Azure Portal에서 함수 앱 페이지로 이동하고 왼쪽 창의 배포 아래에서 배포 센터를 선택합니다.

소스 저장소를 선택한 Azure 포털에서 함수 앱 배포 센터의 스크린샷입니다.

다음 지원 옵션 중 하나에서 프로젝트 코드가 유지 관리되는 원본 리포지토리 형식을 선택합니다.

Azure DevOps 포털에서 Azure Pipelines을 사용하는 Azure Repos의 배포를 정의하세요. 함수 앱에서 이런 배포를 정의하지 마세요. Azure Repos에서 Azure Pipelines 기반 배포를 만드는 단계별 가이드는 Azure Pipelines 연속 배포를 참조하세요.

배포가 완료되면, 서비스는 지정된 소스에서 모든 코드를 앱으로 배포합니다. 이때 배포 원본의 변경 내용은 Azure의 함수 앱에 대한 변경 내용 배포를 트리거합니다.

저장소에서 다음 제공자 중 하나를 사용하여 지속적 배포를 구성하세요:

각 성공적인 워크플로우 실행은 새로운 애플리케이션 패키지를 배포합니다. 배포 센터의 소스 제어 통합은 Flex Consumption에 사용할 수 없습니다.

CI/CD 워크플로우를 구성해서 컨테이너 이미지를 빌드하고 푸시한 뒤, 이미지를 함수 앱에 배포하세요. 각 이미지 업데이트는 컨테이너 앱 수정본을 생성합니다. 자세한 내용은 GitHub Actions로 Azure Container Apps에 배포하기를 참조하세요.

앱 만들기 중 지속적인 배포 사용

Azure 포털에서 함수 앱을 만들 때, GitHub에서 GitHub Actions를 사용해 지속적 배포를 구성할 수 있습니다. Create Function App 페이지의 배포 탭에서 GitHub Actions를 구성하세요.

다른 배포 소스나 빌드 프로바이더를 사용해 지속적 통합을 위해 먼저 함수 앱을 만드세요. 그 후 포털로 돌아가 배포 센터에서 지속적 통합을 설정하세요.

Azure Pipelines의 경우, 먼저 함수 앱을 만들고 Azure DevOps에서 파이프라인을 설정하세요.

컨테이너 이미지에서 함수 앱을 만들고, CI/CD 워크플로우를 설정해 업데이트된 이미지를 게시하고 수정본을 생성하세요. 자세한 내용은 Azure Container Apps의 Create a function app을 참조하세요.

배포를 위한 기본 인증 사용

이 섹션은 App Service 배포 엔드포인트를 사용하는 배포 방법에만 적용됩니다.

어떤 경우에는 배포 엔드포인트에 대한 기본 인증 권한이 비활성화된 상태로 기능 앱이 생성되기도 합니다. 이 조건은 Microsoft Entra 아이덴티티를 사용하지 못하는 모든 메서드가 배포 엔드포인트에 접근할 수 없는 게시를 차단합니다. 배포 엔드포인트의 기본 인증을 비활성화했을 때의 퍼블리싱 영향은 기본 인증 없이 배포하는 Deploy에서 자세히 설명되어 있습니다.

중요

기본 인증을 사용하는 경우 자격 증명이 또렷한 텍스트로 전송됩니다. 이 자격 증명을 보호하기 위해서는 기본 인증을 사용할 때는 암호화된 연결(HTTPS)을 통해서만 배포 엔드포인트에 접근해야 합니다. 자세한 내용은 보안 배포를 참조하세요.

배포 엔드포인트의 기본 인증을 활성화하려면:

  1. Azure Portal에서 함수 앱으로 이동합니다.

  2. 앱의 왼쪽 메뉴에서 설정>구성>일반 설정을 선택합니다.

  3. SCM 기본 인증 게시 자격 증명기로 설정한 다음 저장을 선택합니다.

SCM 기본 인증은 Flex Consumption 패키지 배포에는 적용되지 않습니다. 기본적으로 Azure Pipelines는 필수인 Azure 서비스 연결의 Microsoft Entra 전달자 토큰을 사용하며, 워크로드 ID 페더레이션을 사용하는 것이 좋습니다. GitHub Actions의 경우, 권장되는 OpenID Connect(OIDC) 인증을 사용하세요. 이러한 방법들은 SCM 자격 증명 공개를 피하고 기본 인증보다 더 안전합니다.

이 기본 인증 설정은 Azure Container Apps의 Functions에는 적용되지 않습니다. 대신 CI/CD 제공자, 컨테이너 레지스트리, 컨테이너 앱 간의 인증을 설정하세요.

다음 단계