Azure Functions에 대한 연속 배포

Azure Functions를 사용하여 소스 제어 통합을 통해 코드를 지속적으로 배포할 수 있습니다. 소스 제어 통합을 사용하면 코드 업데이트가 프로젝트에서 Azure로 빌드, 패키지 및 배포를 트리거하는 워크플로가 가능합니다.

지속적인 배포는 여러 차례의 자주 하는 기여를 통합하는 프로젝트에 적합한 옵션입니다. 지속적인 배포를 사용하는 경우 팀에서 간편하게 공동 작업을 수행할 수 있도록 하는 코드의 단일 데이터 소스를 유지 관리합니다.

이 문서의 단계에서는 Azure Portal의 배포 센터를 사용하여 Azure의 함수 앱에 대한 지속적인 코드 배포를 구성하는 방법을 보여 줍니다. Azure CLI를 사용하여 연속 통합을 구성할 수도 있습니다.

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

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

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

참고 항목

이 문서에서 다루는 지속적인 배포 옵션은 코드 전용 배포에만 해당됩니다. 컨테이너화된 함수 앱 배포에 대해서는 Azure에 대한 컨테이너 지속적인 배포 사용을 참조하세요.

요구 사항

지속적인 배포를 성공적으로 수행하려면 디렉터리 구조가 Azure Functions에서 예상하는 기본 폴더 구조와 호환되어야 합니다.

특정 함수 앱의 모든 기능에 대한 코드는 호스트 구성 파일이 포함된 루트 프로젝트 폴더에 있습니다. host.json 파일은 런타임별 구성을 포함하며 함수 앱의 루트 폴더에 있습니다. bin 폴더에는 함수 앱에 필요한 패키지 및 기타 라이브러리 파일이 포함되어 있습니다. 함수 앱에 필요한 특정 폴더 구조는 언어에 따라 달라집니다.

함수 앱의 모든 함수는 동일한 언어 스택을 공유해야 합니다.

빌드 공급자

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

Functions는 다음 빌드 공급자를 지원합니다.

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

사용할 수 있는 빌드 공급자에 대한 옵션은 특정 코드 배포 원본에 따라 다릅니다.

배포 센터

Azure Portal은 함수 앱을 위한 배포 센터를 제공하므로 지속적인 배포를 더 쉽게 구성할 수 있습니다. 지속적인 배포를 구성하는 방법은 코드가 있는 특정 소스 제어와 선택한 빌드 공급자에 따라 달라집니다.

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

원본 리포지토리를 선택하는 Azure Portal의 함수 앱 배포 센터 스크린샷.

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

Azure Pipelines를 사용하는 Azure Repos의 배포는 함수 앱이 아닌 Azure DevOps 포털에서 정의됩니다. Azure Repos에서 파이프라인 기반 배포를 만들기 위한 단계별 가이드는 Azure Pipelines를 통한 지속적인 업데이트를 참조하세요.

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

고려 사항

지속적인 배포 전략을 계획할 때 다음 고려 사항을 염두에 두어야 합니다.

  • GitHub는 현재 Python 앱에 널리 사용되는 호스팅 옵션인 사용량 플랜에서 실행되는 Linux 앱에 대한 지속적인 배포를 지원하는 유일한 원본입니다.

  • Azure에서 함수에 대한 배포 단위는 함수 앱입니다. 함수 앱의 모든 함수는 동시에 동일한 패키지에 배포됩니다.

  • 지속적인 배포를 사용하도록 설정한 후에는 정보 원본이 다른 곳에 있는 것으로 알려져 있으므로 Azure Portal에서 함수 코드에 대한 액세스가 읽기 전용으로 구성됩니다.

  • 프로덕션 슬롯이 아닌 스테이징 슬롯에 대해 항상 지속적인 배포를 구성해야 합니다. 프로덕션 슬롯을 사용하면 코드 업데이트가 Azure에서 확인되지 않고 프로덕션에 직접 푸시됩니다. 대신, 스테이징 슬롯에 지속적인 배포를 사용하도록 설정하고 스테이징 슬롯의 업데이트를 확인한 후 모든 것이 올바르게 실행된 후 스테이징 슬롯 코드를 프로덕션 코드로 교환할 수 있습니다.

  • 배포 센터는 인바운드 네트워크 제한이 있는 함수 앱에 대한 지속적인 배포 사용 설정을 지원하지 않습니다. 대신 GitHub 또는 Azure Pipelines에서 직접 빌드 공급자 워크플로를 구성해야 합니다. 또한 이러한 워크플로에서는 함수 앱과 동일한 가상 네트워크에 있는 가상 머신을 자체 호스팅 에이전트(파이프라인) 또는 자체 호스팅 실행기(GitHub)로 사용해야 합니다.

앱 만들기 중 지속적인 배포

현재 Azure Portal에서 함수 앱을 만들 때 GitHub Actions를 사용하여 GitHub에서 지속적인 배포를 구성할 수 있습니다. 함수 앱 만들기 페이지의 배포 탭에서 이 작업을 수행할 수 있습니다.

연속 통합을 위해 다른 배포 원본 또는 빌드 공급자를 사용하려면 먼저 함수 앱을 만든 다음 포털로 돌아가서 배포 센터에서 연속 통합을 설정합니다.

배포를 위한 기본 인증 사용

기본적으로 함수 앱은 scm 엔드포인트에 대한 기본 인증 액세스가 사용하지 않도록 설정된 상태로 만들어집니다. 이는 관리 ID를 사용하여 scm 엔드포인트에 액세스할 수 없는 모든 방법의 게시를 차단합니다. scm 엔드포인트를 사용하지 않도록 설정하면 게시에 미치는 영향은 기본 인증 없이 배포에 자세히 설명되어 있습니다.

Important

기본 인증을 사용하면 자격 증명이 일반 텍스트로 전송됩니다. 이러한 자격 증명을 보호하려면 기본 인증을 사용할 때 암호화된 연결(HTTPS)을 통해서만 scm 엔드포인트에 액세스해야 합니다. 자세한 내용은 보안 배포를 참조하세요.

scm 엔드포인트에 대한 기본 인증을 사용하도록 설정하려면 다음을 수행합니다.

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

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

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

다음 단계