자체 인프라에서 하이브리드 배포를 위한 표준 논리 앱 워크플로 만들기(미리 보기)
적용 대상: Azure Logic Apps(표준)
참고 항목
이 기능은 미리 보기로 제공되며 사용 요금이 부과되며 Microsoft Azure 미리 보기에 대한 추가 사용 약관이 적용 됩니다.
자체 인프라를 사용, 제어 및 관리해야 하는 시나리오의 경우 Azure Logic Apps의 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들 수 있습니다. 이 모델은 로컬 처리, 스토리지 및 네트워크 액세스가 필요한 부분적으로 연결된 환경에 대한 통합 솔루션을 빌드하고 호스트하는 기능을 제공합니다. 인프라에는 온-프레미스 시스템, 프라이빗 클라우드 및 퍼블릭 클라우드가 포함될 수 있습니다. 하이브리드 모델을 사용하면 표준 논리 앱 워크플로가 Azure Container Apps 확장의 일부로 온-프레미스에서 호스트되는 Azure Logic Apps 런타임에 의해 구동됩니다.
부분적으로 연결된 환경에서 표준 논리 앱 워크플로가 호스트되고 실행되는 위치를 보여 주는 아키텍처 개요는 표준 논리 앱에 대한 하이브리드 배포에 대한 인프라 요구 사항 설정을 참조 하세요.
이 방법 가이드에서는 앱을 호스팅하는 데 필요한 온-프레미스 리소스를 설정한 후 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들고 배포하는 방법을 보여 줍니다.
제한 사항
표준 논리 앱에 대한 하이브리드 배포는 Azure Arc 지원 AKS의 Azure Container Apps와 동일한 지역에서만 사용할 수 있으며 지원됩니다.
현재 이 미리 보기 릴리스에서는 다음 기능을 사용할 수 없습니다.
- 관리 ID 인증
- SAP 기본 제공 커넥터를 통한 SAP 액세스
- .NET Framework를 사용하는 C# 사용자 지정 코드 및 이 논리 앱에서 로컬 함수 호출이라는 기본 제공 작업
- 사용자 지정 코드용 XSLT 1.0
Azure Arc 지원 Kubernetes 클러스터는 현재 관리되는 API 연결에 대한 관리 ID 인증을 지원하지 않습니다. 대신 Microsoft Entra ID를 사용하여 사용자 고유의 앱 등록을 만들어야 합니다. 자세한 내용은 이 가이드의 뒷부분에 있는 다음 단계를 따르세요.
Azure Blob, Cosmos DB 및 Event Hubs와 같은 일부 함수 기반 트리거는 표준 논리 앱과 연결된 Azure Storage 계정에 연결해야 합니다. 함수 기반 트리거를 사용하는 경우 Azure Portal의 표준 논리 앱 환경 변수 또는 Visual Studio Code의 논리 앱 프로젝트의 local.settings.json 파일에서 다음 앱 설정을 추가하고 스토리지 계정 연결 문자열 제공합니다.
"Values": { "name": "AzureWebJobsStorage", "value": "{storage-account-connection-string}" }
필수 조건
Azure 계정 및 구독 구독이 없는 경우 Azure 체험 계정에 등록합니다.
다음 온-프레미스 리소스는 모두 필요한 연결을 위해 동일한 네트워크 내에 있어야 합니다.
- Azure Arc에 연결된 Azure Kubernetes Service 클러스터
- 처리를 위해 워크플로 실행 기록, 입력 및 출력을 로컬로 저장하는 SQL 데이터베이스
- 워크플로에서 사용하는 아티팩트를 로컬로 저장하는 SMB(서버 메시지 블록) 파일 공유
이러한 요구 사항을 충족하려면 표준 논리 앱에 대한 하이브리드 배포를 지원하도록 이러한 온-프레미스 리소스를 설정합니다.
Visual Studio Code에서 작업하려면 관련 필수 구성 요소를 사용하여 Visual Studio Code용 Azure Logic Apps(표준) 확장이 필요합니다.
팁
새 Visual Studio Code 설치가 있는 경우 자체 인프라에 배포하기 전에 기본 표준 워크플로를 로컬로 실행할 수 있는지 확인합니다. 이 테스트 실행은 표준 워크플로 프로젝트에 있을 수 있는 오류를 격리하는 데 도움이 됩니다.
표준 논리 앱 만들기
필수 구성 요소를 충족한 후 다음 단계에 따라 하이브리드 배포를 위한 표준 논리 앱을 만듭니다.
Azure Portal 검색 상자에 논리 앱을 입력하고 논리 앱을 선택합니다.
Logic Apps 페이지 도구 모음에서 추가를 선택합니다.
논리 앱 만들기 페이지의 표준에서 하이브리드를 선택합니다.
논리 앱 만들기(하이브리드) 페이지에서 다음 정보를 제공합니다.
속성 필요함 값 Description 구독 예 <Azure-subscription-name> Azure 구독 이름.
이 예에서는 종량제를 사용합니다.리소스 그룹 예 <Azure-resource-group-name> 하이브리드 앱 및 관련 리소스를 만드는 Azure 리소스 그룹입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.
이 예제에서는 Hybrid-RG라는 리소스 그룹을 만듭니다.논리 앱 이름 예 <logic-app-name> 지역 간에 고유해야 하며 소문자, 숫자 또는 하이픈(-)만 포함할 수 있는 논리 앱 이름입니다.
이 예제에서는 my-logic-app-hybrid를 사용합니다.지역 예 <Azure-region> Azure Arc 지원 AKS의 Azure 컨테이너 앱에 대해 지원되는 Azure 지역입니다.
이 예제에서는 미국 동부를 사용합니다.컨테이너 앱 연결 환경 예 <connected-environment-name> 논리 앱의 배포 환경으로 만든 Arc 지원 Kubernetes 클러스터입니다. 자세한 내용은 자습서: Azure Arc 지원 Kubernetes에서 Azure Container Apps 사용 스토리지 설정 구성 예 사용 또는 사용 안 함 논리 앱 만들기(하이브리드) 페이지의 스토리지 탭으로 이동합니다. 다음 예제에서는 샘플 값이 있는 Azure Portal의 논리 앱 만들기 페이지를 보여 줍니다.
스토리지 페이지에서 이전에 설정한 스토리지 공급자 및 SMB 파일 공유에 대한 다음 정보를 제공합니다.
속성 필요함 값 설명 SQL 연결 문자열 예 <sql-server-connection-string> 이전에 저장한 SQL Server 연결 문자열. 자세한 내용은 SQL Server 스토리지 공급자 만들기를 참조하세요. 호스트 이름 예 <file-share-host-name> SMB 파일 공유의 호스트 이름입니다. 파일 공유 경로 예 <file-share-path> SMB 파일 공유에 대한 파일 공유 경로입니다. 사용자 이름 예 <file-share-user-name> SMB 파일 공유의 사용자 이름입니다. 암호 예 <file-share-password> SMB 파일 공유에 대한 암호입니다. 완료되면 검토 + 만들기를 선택합니다. 제공된 정보를 확인하고 만들기를 선택합니다.
Azure에서 배포를 완료한 후 리소스로 이동을 선택합니다.
참고 항목
하이브리드 호스팅 옵션을 사용하는 표준 논리 앱과 관련된 몇 가지 알려진 문제가 포털에 있습니다. 이러한 논리 앱은 워크플로 서비스 계획 또는 App Service Environment V3 호스팅 옵션을 사용하는 표준 논리 앱과 다른 컨테이너 앱 레이블과 함께 표시됩니다. 자세한 내용은 알려진 문제 및 문제 해결 - Azure Portal을 참조 하세요.
Azure Portal의 리소스 메뉴에 있는 워크플로에서 워크플로를 선택합니다.
워크플로 페이지 도구 모음에서 추가를 선택하여 빈 상태 저장 또는 상태 비지정 워크플로를 추가합니다.
디자이너가 열리면 트리거 및 작업을 추가하여 워크플로를 빌드합니다.
자세한 내용은 트리거 및 작업을 사용하여 워크플로 빌드를 참조하세요.
참고 항목
하이브리드 호스팅 옵션을 사용하는 표준 논리 앱은 변경 내용을 자식 워크플로에 저장할 때마다 Azure Container Apps의 버전 관리 개념인 새 수정 버전을 자동으로 만듭니다. 이 수정 버전을 활성화하는 데 약간의 시간이 걸릴 수 있습니다. 즉, 변경 내용을 저장한 후 워크플로를 테스트하기 전에 몇 분 정도 기다려야 할 수 있습니다.
변경 내용이 워크플로에 아직 표시되지 않은 경우 수정 내용이 있는지 확인할 수 있습니다.
리소스 메뉴의 수정 버전 아래에서 수정 버전 및 복제본을 선택합니다.
수정 버전 및 복제본 페이지의 활성 수정 버전 탭에서 새 수정 버전이 목록에 표시되는지 확인합니다.
자세한 내용은 다음 리소스를 참조하세요.
Azure Portal에서 CPU 및 메모리 할당 변경
표준 논리 앱 리소스에 대한 CPU 및 메모리 설정을 편집하려면 다음 단계를 수행합니다.
Azure Portal에서 표준 논리 앱 리소스를 엽니다.
리소스 메뉴의 설정에서 컨테이너를 선택합니다.
컨테이너 페이지 도구 모음에서 편집 및 배포를 선택하여 컨테이너 편집 창을 엽니다.
속성 탭의 컨테이너 리소스 할당에서 시나리오에 맞게 다음 값을 변경합니다.
속성 값 설명 CPU 코어 - 기본값: 1
- 최소: 0.25
- 최대: 2컨테이너 인스턴스에 할당할 CPU 코어를 결정합니다. 이 값을 최대값까지 0.25코어로 늘릴 수 있습니다. 이 논리 앱에 대한 모든 컨테이너 인스턴스의 총 수는 2코어로 제한됩니다. 메모리 - 기본값: 2
- 최소: 0.1
- 최대: 4컨테이너 인스턴스에 할당할 gibibytes(Gi)의 메모리 용량을 결정합니다. 이 값을 최대값까지 0.1Gi까지 늘릴 수 있습니다. 이 논리 앱에 대한 모든 컨테이너 인스턴스의 총 용량은 4Gi로 제한됩니다. 완료되면 저장을 선택합니다.
Azure Portal에서 복제본 크기 조정 변경
트리거 이벤트에 대한 응답으로 배포되는 복제본 범위에 대한 자동 크기 조정을 제어할 수 있습니다. 복제본은 논리 앱 리소스 수정 버전 또는 버전의 새 인스턴스입니다. 이 범위의 최소값과 최대값을 변경하려면 크기 조정 규칙을 수정하여 크기 조정을 트리거하는 이벤트 유형을 결정할 수 있습니다. 자세한 내용은 Azure Container Apps에서 크기 조정 규칙 설정을 참조하세요.
Azure Portal에서 표준 논리 앱 리소스를 엽니다.
리소스 메뉴의 설정에서 크기 조정을 선택합니다.
크기 조정 페이지의 크기 조정 규칙 설정에서 시나리오에 맞게 다음 값을 변경합니다.
속성 값 설명 최소 복제본 - 기본값: 1
- 최소: 0
- 최대: 1000지정된 시간에 수정에 허용되는 최소 복제본 수를 결정합니다. 이 값은 크기 조정 규칙을 재정의하며 최대 복제본 수보다 작아야 합니다. 최대 복제본 - 기본값: 30
- 최소: 0
- 최대: 1000지정된 시간에 수정에 허용되는 최대 복제본 수를 결정합니다. 이 값은 크기 조정 규칙을 재정의합니다. 완료되면 저장을 선택합니다.
Azure Portal에서 논리 앱에 대한 인바운드 트래픽 제어
수신을 사용하도록 설정하여 사용자 환경의 공용 웹, 가상 네트워크 및 기타 논리 앱에 논리 앱을 노출할 수 있습니다. Azure는 논리 앱에 대한 외부 및 내부 트래픽의 라우팅을 제어하는 규칙 집합을 통해 수신 설정을 적용합니다. 수신을 사용하도록 설정하면 들어오는 HTTP 요청 또는 TCP 트래픽을 사용하도록 설정하기 위해 Azure Load Balancer, 공용 IP 주소 또는 기타 Azure 리소스를 만들 필요가 없습니다. 자세한 내용은 Container Apps의 수신을 참조 하세요.
참고 항목
수신을 사용하도록 설정하면 모든 트래픽이 기본적으로 최신 수정 버전으로 전달됩니다. 수정 관리 페이지로 이동하여 트래픽 설정을 변경합니다.
리소스 메뉴의 설정에서 수신을 선택합니다.
수신 페이지의 수신 옆에 있는 사용 상자를 선택합니다.
시나리오에 따라 나머지 옵션을 구성합니다.
자세한 내용은 다음 설명서를 참조하세요.
관리되는 API 연결에 대한 인증 설정
Azure Arc 지원 Kubernetes 클러스터에서 호스트되는 표준 논리 앱 워크플로에서 관리되는 API 연결을 인증하려면 Microsoft Entra ID를 사용하여 사용자 고유의 앱 등록을 만들어야 합니다. 그런 다음, 표준 논리 앱 리소스에서 이 앱 등록 값을 환경 변수로 추가하여 API 연결을 대신 인증할 수 있습니다.
Microsoft Entra ID를 사용하여 앱 등록 만들기
Azure Portal
Azure Portal에서 빠른 시작을 따릅니다. Microsoft ID 플랫폼 애플리케이션을 등록하여 앱 등록을 만듭니다.
만들기가 완료되면 포털에서 새 앱 등록을 찾습니다.
리소스 메뉴에서 개요를 선택하고 나중에 연결 인증에 필요한 다음 값을 저장합니다.
- Client ID
- 테넌트 ID
- 클라이언트 암호
개체 ID의 경우 다음 단계를 수행합니다.
개요 페이지에서 다음과 같이 앱 등록에 대한 로컬 디렉터리 링크에서 관리되는 애플리케이션을 선택합니다.
열리는 페이지에서 개체 ID 값을 복사하고 저장합니다.
이제 저장된 값을 표준 논리 앱 리소스에 환경 변수로 추가합니다.
Azure CLI
앱 등록을 만들려면 az ad sp create 명령을 사용합니다.
모든 속성을 검토하려면 az ad sp show 명령을 사용합니다.
두 명령의 출력에서 다음 값을 찾아 저장합니다. 이 값은 나중에 연결 인증에 필요합니다.
- 클라이언트 ID
- 개체 ID
- 테넌트 ID
- 클라이언트 암호
이제 저장된 값을 표준 논리 앱 리소스에 환경 변수로 추가합니다.
표준 논리 앱에 앱 등록 값 추가
Azure Portal에서 표준 논리 앱 리소스로 이동합니다.
리소스 메뉴의 설정에서 컨테이너를 선택한 다음 환경 변수 탭을 선택합니다.
앱 설정 및 호스트 설정에 대한 자세한 내용은 앱 설정 및 호스트 설정 편집을 참조 하세요.
도구 모음에서 편집 및 배포를 선택합니다.
컨테이너 편집 창에서 환경 변수를 선택한 다음 추가를 선택합니다.
다음 표에서 지정된 값을 사용하여 각 환경 변수를 추가합니다.
환경 변수 값 WORKFLOWAPP_AAD_CLIENTID <my-client-ID> WORKFLOWAPP_AAD_OBJECTID <my-object-ID> WORKFLOWAPP_AAD_TENANTID <my-tenant-ID> WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret> 완료되면 저장을 선택합니다.
클라이언트 ID 및 클라이언트 암호 저장 및 참조
논리 앱 리소스에 클라이언트 ID 및 클라이언트 비밀 값을 비밀로 저장한 다음 환경 변수 탭에서 해당 값을 대신 참조할 수 있습니다 .
Azure Portal에서 논리 앱 리소스로 이동합니다.
리소스 메뉴의 설정에서 비밀을 선택합니다.
도구 모음에서 추가를 선택합니다.
비밀 추가 창에서 각 비밀에 대해 다음 정보를 입력한 다음 추가를 선택합니다.
키 값 WORKFLOWAPP_AAD_CLIENTID <my-client-ID> WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret>
알려진 문제 및 문제 해결
Azure Portal
표준 논리 앱이 배포되고 Azure Container Apps 리소스로 표시되지만 형식은 논리 앱(하이브리드)으로 표시됩니다.
Azure는 Logic Apps 리소스 목록이 아닌 Container Apps 리소스 목록에 표준 논리 앱을 포함합니다.
Azure Container Apps 연결된 환경에는 표준 논리 앱이 하이브리드 논리 앱이라는 앱 유형이 있는 것으로 나열됩니다.
워크플로를 저장한 후 디자이너의 변경 내용을 반영하려면 디자이너를 새로 고쳐야 할 수도 있습니다.
Arc 지원 Kubernetes 클러스터
드문 시나리오에서는 클러스터에서 높은 메모리 공간을 볼 수 있습니다. 이 문제를 방지하려면 노드 풀을 스케일 아웃하거나 자동 크기 조정을 추가합니다.
함수 호스트가 실행되고 있지 않음
표준 논리 앱을 배포한 후 앱이 올바르게 실행되고 있는지 확인합니다.
Azure Portal에서 논리 앱에 대한 컨테이너 앱 리소스로 이동합니다.
리소스 메뉴에서 개요를 선택합니다.
개요 페이지의 애플리케이션 URL 필드 옆에 있는 리소스 URL을 선택합니다.
앱이 올바르게 실행되는 경우 브라우저 창이 열리고 다음 메시지가 표시됩니다.
그렇지 않으면 앱에 오류가 있는 경우 AKS Pod가 올바르게 실행되고 있는지 확인합니다. Windows PowerShell에서 다음 명령을 실행합니다.
az aks get-credentials {resource-group-name} --name {aks-cluster-name} --admin kubectl get ns kubectl get pods -n logicapps-aca-ns kubectl describe pod {logic-app-pod-name} -n logicapps-aca-ns
자세한 내용은 다음 설명서를 참조하세요.
클러스터에 노드가 부족합니다.
이전 명령을 실행하고 다음 예제와 유사한 경고를 받으면 클러스터에 처리를 위한 노드가 충분하지 않습니다.
Warning: FailedScheduling 4m52s (x29 over 46m) default-scheduler 0/2 nodes are available: 2 Too many pods. preemption: 0/2 nodes are available: 2 No preemption victims found for incoming pod.
노드 수를 늘리고 자동 크기 조정을 설정하려면 다음 단계를 수행합니다.
Azure Portal에서 Kubernetes 서비스 인스턴스로 이동합니다.
인스턴스 메뉴의 설정에서 노드 풀을 선택합니다.
노드 도구 페이지 도구 모음에서 + 노드 풀 추가를 선택합니다.
자세한 내용은 다음 설명서를 참조하세요.
- AKS(Azure Kubernetes Service)에서 클러스터에 대한 노드 풀 만들기
- AKS(Azure Kubernetes Service)에서 클러스터에 대한 노드 풀 관리
- AKS(Azure Kubernetes Service)의 클러스터 자동 크기 조정 개요
- AKS(Azure Kubernetes Service)에서 클러스터 자동 크기 조정기 사용
SMB CSI(Container Storage Interface) 드라이버가 설치되지 않음
이전 kubectl describe pod
명령을 실행한 후 다음 경고가 표시되면 SMB 파일 공유에 대한 CSI 드라이버가 올바르게 설치되어 있는지 확인합니다.
Warning FailedScheduling 5m16s (x2 over 5m27s) default-scheduler 0/14 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/14 nodes are available: 14 Preemption is not helpful for scheduling.
Normal NotTriggerScaleUp 9m49s (x31 over 14m) cluster-autoscaler pod didn't trigger scale-up: 3 pod has unbound immediate PersistentVolumeClaims
확인하려면 Windows PowerShell에서 다음 명령을 실행합니다.
kubectl get csidrivers
표시되는 결과 목록에 smb.csi.k8s.io 포함되지 않은 경우 Windows 명령 프롬프트에서 다음 명령을 실행합니다.
helm repo add csi-driver-smb
helm repo update
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.15.0
CSI SMB 드라이버 Pod 상태를 확인하려면 Windows 명령 프롬프트에서 다음 명령을 실행합니다.
kubectl --namespace=kube-system get pods --selector="app.kubernetes.io/name=csi-driver-smb" --watch
자세한 내용은 AKS(Azure Kubernetes Service)의 CSI(Container Storage Interface) 드라이버를 참조하세요.