Azure Arc 지원 Logic Apps(미리 보기)를 사용하여 단일 테넌트 기반 논리 앱 워크플로 만들기 및 배포
참고 항목
이 기능은 미리 보기로 제공되고 Microsoft Azure 미리 보기의 추가 사용 약관이 적용됩니다.
Azure Arc 지원 Logic Apps를 사용하면 운영 및 관리하는 Kubernetes 인프라에 단일 테넌트 기반 논리 앱 워크플로를 만들고 배포할 수 있습니다. 논리 앱은 Azure App Service 플랫폼 확장 번들을 설치하고 사용하도록 설정한 Azure Arc 지원 Kubernetes 클러스터에 매핑된 사용자 지정 위치에서 실행됩니다.
예를 들어 이 클러스터는 Azure Kubernetes Service, 미설치 Kubernetes 또는 다른 설정일 수 있습니다. 확장 번들을 사용하면 Kubernetes 클러스터에서 Azure Logic Apps, Azure App Service 및 Azure Functions와 같은 플랫폼 서비스를 실행할 수 있습니다.
자세한 내용은 다음 설명서를 검토하세요.
- Azure Arc 지원 Logic Apps란?
- Azure Logic Apps의 단일 테넌트 대 다중 테넌트
- Azure Arc 개요
- Azure Kubernetes Service 개요
- Azure Arc 지원 Kubernetes란?
- Azure Arc 지원 Kubernetes의 사용자 지정 위치
- Azure Arc의 App Service, Functions 및 Logic Apps(미리 보기)
- Azure Arc 지원 Kubernetes 클러스터를 설정하여 App Service, Functions 및 Logic Apps 실행(미리 보기)
필수 조건
이 섹션에서는 논리 앱 워크플로를 만들고 배포하는 데 사용할 수 있는 모든 방식 및 도구의 일반적인 필수 구성 요소에 대해 설명합니다. 도구별 필수 구성 요소는 해당 단계와 함께 표시됩니다.
활성 구독이 있는 Azure 계정. Azure 구독이 없는 경우 무료 계정을 만드세요.
Azure Arc 지원 Kubernetes 클러스터가 있는 Kubernetes 환경 및 Azure Logic Apps, Azure App Service, Azure Functions를 호스트하고 실행할 수 있는 사용자 지정 위치.
Important
Kubernetes 환경, 사용자 지정 위치 및 논리 앱에 대해 동일한 리소스 위치를 사용해야 합니다.
Kubernetes 클러스터에서 App Service 번들 확장을 만들 때 논리 앱 워크플로를 실행하기 위한 기본 크기 조정 동작을 변경할 수 있습니다. Azure CLI 명령
az k8s-extension create
를 사용하여 확장을 만들 때 구성 설정keda.enabled=true
를 포함해야 합니다.az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"
자세한 내용은 다음 설명서를 검토하세요.
사용자 고유의 Microsoft Entra ID
워크플로에서 Office 365 Outlook 또는 Azure Storage와 같은 Azure에서 호스트되는 연결을 사용해야 하는 경우 논리 앱은 인증을 위해 Microsoft Entra ID를 사용해야 합니다. Azure Arc 지원 Logic Apps는 모든 인프라에서 실행할 수 있지만 Azure에서 호스트되는 연결을 사용할 권한이 있는 ID가 필요합니다. 이 ID를 설정하려면 논리 앱에서 필수 ID로 사용하는 Microsoft Entra ID에서 앱 등록을 만듭니다.
참고 항목
관리 ID 지원은 현재 Azure Arc 지원 Logic Apps에서 사용할 수 없습니다.
Azure CLI를 사용하여 Microsoft Entra 앱 등록을 만들려면 다음 단계를 수행합니다.
az ad sp create
명령을 사용하여 앱 등록을 만듭니다.모든 세부 정보를 검토하려면
az ad sp show
명령을 실행합니다.두 명령의 출력에서 클라이언트 ID, 개체 ID, 테넌트 ID 및 클라이언트 암호 값을 찾아 저장합니다. 이 값은 나중에 사용하기 위해 보관해야 합니다.
Azure Portal을 사용하여 Microsoft Entra 앱 등록을 만들려면 다음 단계를 수행합니다.
Azure Portal을 사용하여 새 Microsoft Entra 앱 등록을 만듭니다.
만들기가 완료되면 포털에서 새 앱 등록을 찾습니다.
등록 메뉴에서 개요를 선택하고 클라이언트 ID, 테넌트 ID 및 클라이언트 암호 값을 저장합니다.
개체 ID를 찾으려면 로컬 디렉터리의 관리형 애플리케이션 필드 옆에서 앱 등록의 이름을 선택합니다. 속성 보기에서 개체 ID를 복사합니다.
논리 앱 만들기 및 배포
Azure CLI를 사용할지, Visual Studio Code를 사용할지에 따라 일치하는 탭을 선택하여 구체적인 필수 구성 요소와 단계를 검토합니다.
시작하기 전에 다음 항목이 있어야 합니다.
로컬 컴퓨터에 설치된 최신 Azure CLI 확장입니다.
이 확장이 없으면 운영 체제 또는 플랫폼에 대한 설치 가이드를 검토하세요.
최신 버전이 있는지 확실하지 않은 경우 환경 및 CLI 버전을 확인하는 단계를 수행합니다.
Azure CLI용 미리 보기 Azure Logic Apps(표준) 확장입니다.
단일 테넌트 Azure Logic Apps가 일반 공급되지만 Azure Logic Apps 확장은 아직 미리 보기로 제공됩니다.
논리 앱을 만들 위치에 대한 Azure 리소스 그룹입니다.
이 리소스 그룹이 없는 경우 리소스 그룹을 만드는 단계를 수행합니다.
논리 앱에서 데이터 및 실행 기록 보존에 사용할 Azure 스토리지 계정입니다.
이 스토리지 계정이 없는 경우 논리 앱을 만들 때 이 계정을 만들거나 단계에 따라 스토리지 계정을 만들 수 있습니다.
환경 및 CLI 버전 확인
Azure Portal에 로그인합니다. 다음 명령을 실행하여 구독이 활성 상태인지 확인합니다.
az login
터미널 또는 명령 창에서 다음 명령을 실행하여 Azure CLI 버전을 확인합니다.
az --version
최신 버전은 최신 릴리스 정보를 참조하세요.
최신 버전이 없는 경우 사용 중인 운영 체제 또는 플랫폼의 설치 가이드에 따라 설치를 업데이트합니다.
Azure CLI용 Azure Logic Apps(표준) 확장 설치
다음 명령을 실행하여 Azure CLI용 미리 보기 단일 테넌트 Azure Logic Apps(표준) 확장을 설치합니다.
az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"
리소스 그룹 만들기
논리 앱에 대한 리소스 그룹이 아직 없는 경우 az group create
명령을 실행하여 그룹을 만듭니다. Azure 계정에 대한 기본 구독을 아직 설정하지 않은 경우 --subscription
매개 변수를 구독 이름 또는 식별자와 함께 사용해야 합니다. 그렇지 않으면 --subscription
매개 변수를 사용할 필요가 없습니다.
팁
기본 구독을 설정하려면 다음 명령을 실행하고 MySubscription
을 구독 이름 또는 식별자로 대체합니다.
az account set --subscription MySubscription
예를 들어 다음 명령은 위치 eastus
에서 MySubscription
이라는 Azure 구독을 사용하여 MyResourceGroupName
이라는 리소스 그룹을 만듭니다.
az group create --name MyResourceGroupName
--subscription MySubscription
--location eastus
리소스 그룹이 성공적으로 만들어지면 출력에서 provisioningState
가 Succeeded
로 표시됩니다.
<...>
"name": "testResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
<...>
논리 앱 만들기
Azure Arc 지원 논리 앱을 만들려면 az logicapp create
명령을 다음 필수 매개 변수와 함께 실행합니다. 논리 앱, 사용자 지정 위치 및 Kubernetes 환경의 리소스 위치는 모두 동일해야 합니다.
매개 변수 | 설명 |
---|---|
--name -n |
논리 앱의 고유한 이름 |
--resource-group -g |
논리 앱을 만들 리소스 그룹의 이름입니다. 사용할 리소스 그룹이 없는 경우 리소스 그룹을 만듭니다. |
--storage-account -s |
논리 앱에 사용할 스토리지 계정입니다. 동일한 리소스 그룹에 있는 스토리지 계정의 경우 문자열 값을 사용합니다. 다른 리소스 그룹에 있는 스토리지 계정의 경우 리소스 ID를 사용합니다. |
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
프라이빗 ACR(Azure Container Registry) 이미지를 사용하여 Azure Arc 지원 논리 앱을 만들려면 다음 필수 매개 변수와 함께 az logicapp create
명령을 실행합니다.
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
--deployment-container-image-name myacr.azurecr.io/myimage:tag
--docker-registry-server-password MyPassword
--docker-registry-server-user MyUsername
논리 앱 세부 정보 표시
Azure Arc 지원 논리 앱에 대한 세부 정보를 표시하려면 az logicapp show
명령을 다음 필수 매개 변수와 함께 실행합니다.
az logicapp show --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
논리 앱 배포
Azure App Service의 Kudu zip 배포를 사용하여 Azure Arc 지원 논리 앱을 배포하려면 다음 필수 매개 변수와 함께 az logicapp deployment source config-zip
명령을 실행합니다.
Important
zip 파일에 루트 수준의 프로젝트 아티팩트가 포함되어 있는지 확인합니다. 이러한 아티팩트에는 모든 워크플로 폴더, host.js, connections.json과 같은 구성 파일 및 기타 관련 파일이 포함됩니다. 추가 폴더를 추가하거나 프로젝트 구조에 아직 없는 폴더에 아티팩트를 배치하지 마세요. 예를 들어 이 목록은 MyBuildArtifacts.zip 파일 구조의 예제를 보여줍니다.
MyStatefulWorkflow1-Folder
MyStatefulWorkflow2-Folder
connections.json
host.json
az logicapp deployment source config-zip --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--src MyBuildArtifact.zip
논리 앱 시작
Azure Arc 지원 논리 앱을 시작하려면 az logicapp start
명령을 다음 필수 매개 변수와 함께 실행합니다.
az logicapp start --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
논리 앱 중지
Azure Arc 지원 논리 앱을 중지하려면 az logicapp stop
명령을 다음 필수 매개 변수와 함께 실행합니다.
az logicapp stop --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
논리 앱 다시 시작
Azure Arc 지원 논리 앱을 다시 시작하려면 az logicapp restart
명령을 다음 필수 매개 변수와 함께 실행합니다.
az logicapp restart --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
논리 앱 삭제
Azure Arc 지원 논리 앱을 삭제하려면 az logicapp delete
명령을 다음 필수 매개 변수와 함께 실행합니다.
az logicapp delete --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
연결 인증 설정
현재 Azure Arc 지원 Kubernetes 클러스터는 논리 앱 관리 ID를 사용하여 관리형 API 연결을 인증하도록 지원하지 않습니다. 워크플로에서 관리형 커넥터를 사용하는 경우 이러한 Azure에서 호스트 및 관리형 연결을 만듭니다.
대신 Microsoft Entra ID에서 자체 앱 등록을 만들어야 합니다. 그런 다음, 이 앱 등록을 Azure Arc 지원 Logic Apps에서 배포 및 실행되는 논리 앱의 ID로 사용할 수 있습니다. 자세한 내용은 최상위 필수 구성 요소를 검토하세요.
앱 등록에서 클라이언트 ID, 개체 ID, 테넌트 ID 및 클라이언트 암호가 필요합니다. Visual Studio Code를 사용하여 배포하는 경우 Microsoft Entra ID를 사용하여 논리 앱을 설정하기 위한 기본 제공 환경이 있습니다. 자세한 내용은 논리 앱 워크플로 만들기 및 배포 - Visual Studio Code를 참조하세요.
단, 개발에 Visual Studio Code를 사용하지만 배포에는 Azure CLI 또는 자동화된 파이프라인을 사용하는 경우 다음 단계를 수행합니다.
프로젝트에서 연결 및 앱 설정 구성
논리 앱 프로젝트의 connections.json 파일에서 관리되는 연결에 대한
authentication
개체를 찾습니다. 이 개체의 콘텐츠를 이전에 최상위 필수 구성 요소에서 생성한 앱 등록 정보로 바꿉니다."authentication": { "type": "ActiveDirectoryOAuth", "audience": "https://management.core.windows.net/", "credentialType": "Secret", "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')", "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')", "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')" }
논리 앱 프로젝트의 local.settings.js 파일에서 클라이언트 ID, 개체 ID, 테넌트 ID 및 클라이언트 암호를 추가합니다. 배포 후 이러한 설정은 논리 앱 설정이 됩니다.
{ "IsEncrypted": false, "Values": { <...> "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>", "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID", "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>", "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>" } }
Important
프로덕션 시나리오 또는 환경의 경우 키 자격 증명 모음을 사용하는 등의 방법으로 이러한 비밀과 중요한 정보를 보호하고 안전하게 지켜야 합니다.
액세스 정책 추가
단일 테넌트 Azure Logic Apps에서 각 논리 앱에는 Azure에서 호스트 및 관리형 연결을 사용하기 위해 액세스 정책에 의해 권한이 부여된 ID가 있습니다. 이러한 액세스 정책은 Azure Portal 또는 인프라 배포를 사용하여 설정할 수 있습니다.
ARM 템플릿
ARM 템플릿(Azure Resource Manager 템플릿)에서 각 관리형 API 연결에 대한 다음 리소스 정의를 포함하고 다음 정보를 제공합니다.
매개 변수 | 설명 |
---|---|
<connection-name> | 관리형 API 연결의 이름, 예: office365 |
<object-ID> | 이전에 앱 등록에서 저장한 Microsoft Entra ID의 개체 ID |
<tenant-ID> | 이전에 앱 등록에서 저장한 Microsoft Entra ID의 테넌트 ID |
{
"type": "Microsoft.Web/connections/accessPolicies",
"apiVersion": "2016-06-01",
"name": "[concat('<connection-name>'),'/','<object-ID>')]",
"location": "<location>",
"dependsOn": [
"[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
],
"properties": {
"principal": {
"type": "ActiveDirectory",
"identity": {
"objectId": "<object-ID>",
"tenantId": "<tenant-ID>"
}
}
}
}
자세한 내용은 Microsoft.Web/connections/accesspolicies(ARM 템플릿) 설명서를 검토하세요.
Azure Portal
이 작업의 경우 이전에 저장한 클라이언트 ID를 애플리케이션 ID로 사용합니다.
Azure Portal에서 논리 앱을 찾아서 엽니다. 논리 앱 메뉴의 워크플로에서 연결을 선택합니다. 이렇게 하면 논리 앱 리소스의 워크플로에 있는 모든 연결이 나열됩니다.
API 연결 아래에서 연결(이 예제의 경우
office365
)을 선택합니다.연결 메뉴의 설정 아래에서 액세스 정책>추가를 선택합니다.
액세스 정책 추가 창의 검색 상자에서 이전에 저장한 클라이언트 ID를 찾아서 선택합니다.
완료되면 추가를 선택합니다.
논리 앱에서 Azure에서 호스트되는 각 연결에 대해 이러한 단계를 반복합니다.
DevOps 배포 자동화
Azure Arc 지원 논리 앱을 빌드하고 배포하려면 단일 테넌트 기반 논리 앱과 동일한 파이프라인 및 프로세스를 사용할 수 있습니다. DevOps용 파이프라인을 사용하여 인프라 배포를 자동화하려면 비컨테이너 및 컨테이너 배포 모두에 대해 인프라 수준에서 다음과 같은 변경을 수행합니다.
표준 배포(컨테이너 아님)
논리 앱 배포에 zip 배포를 사용하는 경우 컨테이너 이미지를 호스트하기 위한 Docker 레지스트리를 설정할 필요가 없습니다. Kubernetes의 논리 앱은 기술적으로 컨테이너에서 실행되지만 Azure Arc 지원 Logic Apps는 이러한 컨테이너를 관리합니다. 이 시나리오의 경우 인프라를 설정할 때 다음 작업을 완료합니다.
- Kubernetes에서 논리 앱을 만들고 있음을 리소스 공급자에게 알립니다.
- 배포에 App Service 계획을 포함합니다. 자세한 내용은 배포에 App Service 계획 포함을 검토하세요.
ARM 템플릿(Azure Resource Manager 템플릿)에 다음 값을 포함합니다.
Item | JSON 속성 | 설명 |
---|---|---|
위치 | location |
사용자 지정 위치 및 Kubernetes 환경과 동일한 리소스 위치(Azure 지역)를 사용해야 합니다. 논리 앱, 사용자 지정 위치 및 Kubernetes 환경의 리소스 위치는 모두 동일해야 합니다. 참고: 이 값은 사용자 지정 위치의 이름과 동일하지 않습니다. |
앱 종류 | kind |
Azure 플랫폼에서 앱을 식별할 수 있도록 배포하는 앱의 유형입니다. Azure Logic Apps의 경우 이 정보는 다음 예제와 같습니다. kubernetes,functionapp,workflowapp,linux |
확장 위치 | extendedLocation |
이 개체는 Kubernetes 환경에 대한 사용자 지정 위치의 "name" 이 필요하며 "type" 이 "CustomLocation" 으로 설정되어 있어야 합니다. |
호스팅 계획 리소스 ID | serverFarmId |
연결된 App Service 계획의 리소스 ID이며, 다음과 같은 형식입니다.
|
스토리지 연결 문자열 | AzureWebJobsStorage |
스토리지 계정의 연결 문자열 중요: ARM 템플릿에서 스토리지 계정에 대한 연결 문자열을 제공해야 합니다. 프로덕션 시나리오 또는 환경의 경우 키 자격 증명 모음을 사용하는 등의 방법으로 이러한 비밀과 중요한 정보를 보호하고 안전하게 지켜야 합니다. |
ARM 템플릿
다음 예제에서는 ARM 템플릿에서 사용할 수 있는 샘플 Azure Arc 지원 Logic Apps 리소스 정의에 대해 설명합니다. 자세한 내용은 Microsoft.Web/sites 템플릿 형식(JSON) 설명서를 검토하세요.
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-12-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"kind": "kubernetes,functionapp,workflowapp,linux",
"extendedLocation": {
"name": "[parameters('customLocationId')]",
"type": "CustomLocation"
},
"properties": {
"clientAffinityEnabled": false,
"name": "[parameters('name')]",
"serverFarmId": "<hosting-plan-ID>",
"siteConfig": {
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~3"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "dotnet"
},
{
"name": "AzureWebJobsStorage",
"value": "<storage-connection-string>"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__id",
"value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__version",
"value": "[1.*, 2.0.0)"
},
{
"name": "APP_KIND",
"value": "workflowapp"
}
],
"use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
"linuxFxVersion": "Node|12"
}
}
}
참고 항목
기본적으로 논리 앱의 FUNCTIONS_WORKER_RUNTIME 앱 설정은 dotnet
입니다.
이전에는 node
가 기본값이었습니다. 그러나 이제 dotnet
은 다른 값을 가졌던 앱의 경우에도 모든 새 앱과 기존에 배포된 Arc 지원 논리 앱의 기본값이 되었습니다. 이 변경 내용은 워크플로 런타임에 영향을 미치지 않으며 모든 것이 이전과 동일한 방식으로 작동해야 합니다. 자세한 내용은 FUNCTIONS_WORKER_RUNTIME 앱 설정을 참조하세요.
논리 앱에 대한 APP_KIND 앱 설정이 workflowapp으로 설정되어 있지만 일부 시나리오에서는 이 앱 설정이 누락되었습니다. 예를 들어, Azure Resource Manager 템플릿이나 설정이 포함되지 않은 기타 시나리오가 있습니다. JavaScript 코드 실행 작업과 같이 특정 작업이 작동하지 않거나 워크플로가 작동을 멈추는 경우 APP_KIND 앱 설정이 있고 workflowapp으로 설정되어 있는지 확인합니다. 자세한 내용은 APP_KIND 앱 설정을 참조하세요.
컨테이너 배포
컨테이너 도구 및 배포 프로세스를 사용하려는 경우 논리 앱을 컨테이너화하고 Azure Arc 지원 Logic Apps에 배포할 수 있습니다. 이 시나리오의 경우 인프라를 설정할 때 다음 같은 상위 수준 작업을 완료합니다.
컨테이너 이미지를 호스트하기 위한 Docker 레지스트리를 설정합니다.
논리 앱을 컨테이너화하려면 논리 앱 프로젝트의 루트 폴더에 다음 Dockerfile을 추가하고 Docker 레지스트리에 이미지를 빌드하고 게시하는 단계를 따릅니다. 예를 들어 자습서: Azure Container Registry 작업을 사용하여 클라우드에서 컨테이너 이미지 빌드 및 배포를 검토합니다.
참고 항목
SQL을 스토리지 공급자로 사용하는 경우 Azure Functions 이미지 버전 3.3.1 이상을 사용해야 합니다.
FROM mcr.microsoft.com/azure-functions/node:3.3.1 ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true \ FUNCTIONS_V2_COMPATIBILITY_MODE=true COPY . /home/site/wwwroot RUN cd /home/site/wwwroot
Kubernetes에서 논리 앱을 만들고 있음을 리소스 공급자에게 알립니다.
배포 템플릿에서 배포할 Docker 레지스트리 및 컨테이너 이미지를 가리킵니다. 단일 테넌트 Azure Logic Apps는 이 정보를 사용하여 Docker 레지스트리에서 컨테이너 이미지를 가져옵니다.
배포에 App Service 계획을 포함합니다. 자세한 내용은 배포에 App Service 계획 포함을 검토하세요.
ARM 템플릿(Azure Resource Manager 템플릿)에 다음 값을 포함합니다.
Item | JSON 속성 | 설명 |
---|---|---|
위치 | location |
사용자 지정 위치 및 Kubernetes 환경과 동일한 리소스 위치(Azure 지역)를 사용해야 합니다. 논리 앱, 사용자 지정 위치 및 Kubernetes 환경의 리소스 위치는 모두 동일해야 합니다. 참고: 이 값은 사용자 지정 위치의 이름과 같지 않습니다. |
앱 종류 | kind |
Azure 플랫폼에서 앱을 식별할 수 있도록 배포하는 앱의 유형입니다. Azure Logic Apps의 경우 이 정보는 다음 예제와 같습니다. kubernetes,functionapp,workflowapp,container |
확장 위치 | extendedLocation |
이 개체는 Kubernetes 환경에 대한 사용자 지정 위치의 "name" 이 필요하며 "type" 이 "CustomLocation" 으로 설정되어 있어야 합니다. |
컨테이너 이름 | linuxFxVersion |
컨테이너의 이름이며, 다음과 같은 형식입니다. DOCKER\|<container-name> |
호스팅 계획 리소스 ID | serverFarmId |
연결된 App Service 계획의 리소스 ID이며, 다음과 같은 형식입니다.
|
스토리지 연결 문자열 | AzureWebJobsStorage |
스토리지 계정의 연결 문자열 중요: Docker 컨테이너에 배포할 때 ARM 템플릿에서 스토리지 계정에 대한 연결 문자열을 제공해야 합니다. 프로덕션 시나리오 또는 환경의 경우 키 자격 증명 모음을 사용하는 등의 방법으로 이러한 비밀과 중요한 정보를 보호하고 안전하게 지켜야 합니다. |
Docker 레지스트리 및 컨테이너 이미지를 참조하려면 템플릿에 다음 값을 포함합니다.
Item | JSON 속성 | 설명 |
---|---|---|
Docker 레지스트리 서버 URL | DOCKER_REGISTRY_SERVER_URL |
Docker 레지스트리 서버의 URL |
Docker 레지스트리 서버 | DOCKER_REGISTRY_SERVER_USERNAME |
Docker 레지스트리 서버에 액세스하기 위한 사용자 이름 |
Docker 레지스트리 서버 암호 | DOCKER_REGISTRY_SERVER_PASSWORD |
Docker 레지스트리 서버에 액세스하기 위한 암호 |
ARM 템플릿
다음 예제에서는 ARM 템플릿에서 사용할 수 있는 샘플 Azure Arc 지원 Logic Apps 리소스 정의에 대해 설명합니다. 자세한 내용은 Microsoft.Web/sites 템플릿 형식(ARM 템플릿) 설명서를 검토하세요.
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-12-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"kind": " kubernetes,functionapp,workflowapp,container",
"extendedLocation": {
"name": "[parameters('customLocationId')]",
"type": "CustomLocation"
},
"properties": {
"name": "[parameters('name')]",
"clientAffinityEnabled": false,
"serverFarmId": "<hosting-plan-ID>",
"siteConfig": {
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~3"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "dotnet"
},
{
"name": "AzureWebJobsStorage",
"value": "<storage-connection-string>"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__id",
"value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
},
{
"name": "AzureFunctionsJobHost__extensionBundle__version",
"value": "[1.*, 2.0.0)"
},
{
"name": "APP_KIND",
"value": "workflowapp"
},
{
"name": "DOCKER_REGISTRY_SERVER_URL",
"value": "<docker-registry-server-URL>"
},
{
"name": "DOCKER_REGISTRY_SERVER_USERNAME",
"value": "<docker-registry-server-username>"
},
{
"name": "DOCKER_REGISTRY_SERVER_PASSWORD",
"value": "<docker-registry-server-password>"
}
],
"use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
"linuxFxVersion": "DOCKER|<container-name>"
}
}
}
참고 항목
이전에는 FUNCTIONS_WORKER_RUNTIME 설정의 기본값은 node
이었습니다.
이제 dotnet
은 다른 값을 가졌던 앱도 포함하여 모든 새 표준 논리 앱과 기존에 배포된 표준 논리 앱의 기본값이 됩니다. 이 변경 내용은 워크플로 런타임에 영향을 미치지 않으며 모든 것이 이전과 동일한 방식으로 작동해야 합니다. 자세한 내용은 FUNCTIONS_WORKER_RUNTIME 앱 설정을 참조하세요.
배포에 App Service 계획 포함
표준 또는 컨테이너 배포 중 무엇을 사용하든 배포에 App Service 계획을 포함해야 합니다. 이 계획은 Kubernetes 환경과 관련성이 떨어지지만 표준 및 컨테이너 배포에는 여전히 App Service 계획이 필요합니다.
다른 만들기 옵션은 일반적으로 이 계획에 대한 Azure 리소스 프로비전을 처리하지만 배포에서 "IaC(infrastructure-as-code)" 템플릿을 사용하는 경우 계획에 대한 Azure 리소스를 명시적으로 만들어야 합니다. 호스팅 계획 리소스는 변경되지 않으며 sku
정보만 변경됩니다.
ARM 템플릿(Azure Resource Manager 템플릿)에 다음 값을 포함합니다.
Item | JSON 속성 | 설명 |
---|---|---|
위치 | location |
사용자 지정 위치 및 Kubernetes 환경과 동일한 리소스 위치(Azure 지역)를 사용해야 합니다. 논리 앱, 사용자 지정 위치 및 Kubernetes 환경의 리소스 위치는 모두 동일해야 합니다. 참고: 이 값은 사용자 지정 위치의 이름과 동일하지 않습니다. |
종류 | kind |
kubernetes,linux 가 필요한 배포 중인 앱 서비스 계획의 종류 |
확장 위치 | extendedLocation |
이 개체는 Kubernetes 환경에 대한 사용자 지정 위치의 "name" 이 필요하며 "type" 이 "CustomLocation" 으로 설정되어 있어야 합니다. |
호스팅 계획 이름 | name |
App Service 계획의 이름 |
계획 계층 | sku: tier |
App Service 계획 계층(K1 ) |
계획 이름 | sku: name |
App Service 계획 이름(Kubernetes ) |
ARM 템플릿
다음 예제에서는 앱 배포에 사용할 수 있는 샘플 App Service 계획 리소스 정의에 대해 설명합니다. 자세한 내용은 Microsoft.Web/serverfarms 템플릿 형식(ARM 템플릿) 설명서를 검토하세요.
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2020-12-01",
"location": "<location>",
"name": "<hosting-plan-name>",
"kind": "kubernetes,linux",
"extendedLocation": {
"name": "[parameters('customLocationId')]",
"type": "CustomLocation"
},
"sku": {
"tier": "Kubernetes",
"name": "K1",
"capacity": 1
},
"properties": {
"kubeEnvironmentProfile": {
"id": "[parameters('kubeEnvironmentId')]"
}
}
}
기본 크기 조정 동작 변경
Azure Arc 지원 Logic Apps는 백 엔드 스토리지 큐의 작업 수를 기반으로 논리 앱의 크기 조정을 자동으로 관리합니다. 단, 기본 크기 조정 동작을 변경할 수 있습니다.
논리 앱에서 워크플로 정의는 실행할 작업 시퀀스를 지정합니다. 워크플로 실행이 트리거될 때마다 Azure Logic Apps 런타임은 워크플로 정의의 각 작업 유형에 대한 작업을 만듭니다. 그런 다음, 런타임은 이러한 작업을 작업 시퀀서로 구성합니다. 이 시퀀서가 워크플로 정의에 대한 작업 실행을 오케스트레이션하지만 기본 Azure Logic Apps 작업 오케스트레이션 엔진이 각 작업을 실행합니다.
상태 저장 워크플로의 경우 작업 오케스트레이션 엔진은 스토리지 큐 메시지를 사용하여 작업 시퀀서에서 작업을 예약합니다. 백그라운드에서 작업 디스패처(또는 디스패처 작업자 인스턴스)는 이러한 작업 큐를 모니터링합니다. 오케스트레이션 엔진은 기본 최소 및 최대 작업자 인스턴스 수를 사용하여 작업 큐를 모니터링합니다. 상태 비저장 워크플로의 경우 오케스트레이션 엔진은 작업 상태를 메모리에 완전히 유지합니다.
기본 크기 조정 동작을 변경하려면 작업 큐를 모니터링하는 작업자 인스턴스의 최소 및 최대 수를 다르게 지정합니다.
크기 조정을 변경하기 위한 필수 구성 요소
Azure Arc 지원 Kubernetes 클러스터에서 이전에 만든 App Service 번들 확장에는 keda.enabled
속성이 true
로 설정되어 있어야 합니다. 자세한 내용은 최상위 필수 구성 요소를 검토하세요.
크기 조정 임계값 변경
Azure Arc 지원 Logic Apps에서 작업 큐의 길이는 크기 조정 이벤트를 트리거하고 논리 앱의 크기 조정 빈도에 대한 임계값을 설정합니다. 기본값이 20
개 작업으로 설정된 큐 길이를 변경할 수 있습니다. 크기 조정 빈도를 줄이려면 큐 길이를 늘립니다. 크기 조정 빈도를 늘리려면 큐 길이를 줄입니다. 이 프로세스에는 시행착오가 필요할 수 있습니다.
큐 길이를 변경하려면 논리 앱 프로젝트의 루트 수준 host.js 파일에서 Runtime.ScaleMonitor.KEDA.TargetQueueLength
속성을 설정합니다. 예를 들면 다음과 같습니다.
"extensions": {
"workflow": {
"settings": {
"Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
}
}
}
처리량 최댓값 변경
기존 논리 앱 리소스에서 최대 작업자 인스턴스 수를 변경할 수 있습니다. 기본값은 2
로 설정되어 있습니다. 이 값은 작업 큐를 모니터링할 수 있는 작업자 인스턴스 수의 상한을 제어합니다.
이 최댓값을 변경하려면 Azure CLI(논리 앱 생성만) 및 Azure Portal을 사용합니다.
Azure CLI
새 논리 앱을 만들려면 다음 매개 변수와 함게 az logicapp create
명령을 실행합니다.
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
[--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]
최대 인스턴스 수를 구성하려면 --settings
매개 변수를 사용합니다.
az logicapp config appsettings set --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--settings "K8SE_APP_MAX_INSTANCE_COUNT=10"
Azure Portal
단일 테넌트 기반 논리 앱 설정에서 다음 단계에 따라 K8SE_APP_MAX_INSTANCE_COUNT
설정 값을 추가하거나 편집합니다.
Azure Portal에서 단일 테넌트 기반 논리 앱을 찾아서 엽니다.
논리 앱 메뉴의 설정에서 구성을 선택합니다.
구성 창의 애플리케이션 설정에서 새 애플리케이션 설정을 추가하거나 기존 값(이미 추가된 경우)을 편집합니다.
새 애플리케이션 설정을 선택하고 원하는 최댓값으로
K8SE_APP_MAX_INSTANCE_COUNT
설정을 추가합니다.K8SE_APP_MAX_INSTANCE_COUNT
설정에 대한 기존 값을 편집합니다.
완료되면 변경 내용을 저장합니다.
처리량 최솟값 변경
기존 논리 앱 리소스에서 최소 작업자 인스턴스 수를 변경할 수 있습니다. 기본값은 1
로 설정되어 있습니다. 이 값은 작업 큐를 모니터링할 수 있는 작업자 인스턴스 수의 하한을 제어합니다. 고가용성 또는 성능을 위해서는 이 값을 늘입니다.
이 최솟값을 변경하려면 Azure CLI 또는 Azure Portal을 사용합니다.
Azure CLI
기존 논리 앱 리소스의 경우 다음 매개 변수를 통해 az logicapp scale
명령을 실행합니다.
az logicapp scale --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--instance-count 5
새 논리 앱을 만들려면 다음 매개 변수와 함게 az logicapp create
명령을 실행합니다.
az logicapp create --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--storage-account MyStorageAccount --custom-location MyCustomLocation
[--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]
Azure Portal
단일 테넌트 기반 논리 앱 설정에서 다음 단계에 따라 스케일 아웃 속성 값을 변경합니다.
Azure Portal에서 단일 테넌트 기반 논리 앱을 찾아서 엽니다.
논리 앱 메뉴의 설정에서 스케일 아웃을 선택합니다.
스케일 아웃 창에서 최소 인스턴스 슬라이더를 원하는 값으로 끕니다.
완료되면 변경 내용을 저장합니다.
문제 해결
배포된 논리 앱에 대한 자세한 내용을 얻으려면 다음 옵션을 사용해보세요.
앱 설정 및 구성에 액세스
앱 설정에 액세스하려면 다음 매개 변수와 함께 az logicapp config appsettings
명령을 실행합니다.
az logicapp config appsettings list --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
앱 설정을 구성하려면 다음 매개 변수와 함께 az logicapp config appsettings set
명령을 실행합니다. --settings
매개 변수를 설정의 이름 및 값과 함께 사용해야 합니다.
az logicapp config appsettings set --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--settings "MySetting=1"
앱 설정을 삭제하려면 다음 매개 변수와 함께 az logicapp config appsettings delete
명령을 실행합니다. --setting-names
매개 변수는 삭제하려는 설정의 이름과 함께 사용해야 합니다.
az logicapp config appsettings delete --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
--setting-names MySetting
논리 앱 속성 보기
앱 정보 및 속성을 보려면 다음 매개 변수와 함께 az logicapp show
명령을 실행합니다.
az logicapp show --name MyLogicAppName
--resource-group MyResourceGroupName --subscription MySubscription
워크플로 활동 모니터링
논리 앱에서 워크플로에 대한 활동을 보려면 다음 단계를 수행합니다.
Azure Portal에서 배포된 논리 앱을 찾아서 엽니다.
논리 앱 메뉴에서 워크플로를 선택한 다음, 워크플로를 선택합니다.
워크플로 메뉴에서 Monitor를 선택합니다.
로그 수집
논리 앱에 대해 로그된 데이터를 가져오려면 논리 앱에서 Application Insights를 사용하도록 설정합니다(아직 사용하도록 설정되지 않은 경우).