적용 대상: Azure Logic Apps(표준)
자체 인프라를 사용, 제어 및 관리해야 하는 시나리오의 경우 Azure Logic Apps의 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들 수 있습니다. 이 모델은 로컬 처리, 스토리지 및 네트워크 액세스가 필요한 부분적으로 연결된 환경에 대한 통합 솔루션을 빌드하고 호스트하는 기능을 제공합니다. 인프라에는 온-프레미스 시스템, 프라이빗 클라우드 및 퍼블릭 클라우드가 포함될 수 있습니다. 하이브리드 모델을 사용하면 표준 논리 앱 워크플로가 Azure Container Apps 확장의 일부로 온-프레미스에서 호스트되는 Azure Logic Apps 런타임에 의해 구동됩니다.
부분적으로 연결된 환경에서 표준 논리 앱 워크플로가 호스트되고 실행되는 위치를 보여 주는 아키텍처 개요는 표준 논리 앱에 대한 하이브리드 배포에 대한 인프라 요구 사항 설정을 참조 하세요.
이 방법 가이드에서는 앱을 호스팅하는 데 필요한 온-프레미스 리소스를 설정한 후 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들고 배포하는 방법을 보여 줍니다.
제한 사항
다음 섹션에서는 하이브리드 배포 옵션의 제한 사항에 대해 설명합니다.
제한 사항 | 설명 |
---|---|
지원되는 Azure 지역 | 하이브리드 배포는 현재 사용할 수 있으며 다음 Azure 지역에서만 지원됩니다. - 미국 중부 - 동아시아 - 미국 동부 - 미국 중북부 -동남아시아 - 스웨덴 중부 - 영국 남부 - 서유럽 - 미국 서부 |
연결이 끊긴 런타임을 사용하여 데이터 로깅 | 부분적으로 연결된 모드에서 Azure Logic Apps 런타임은 최대 24시간 동안 연결이 끊어진 상태를 유지하고 데이터 로그를 유지할 수 있습니다. 그러나 이 기간이 지난 모든 로깅 데이터는 손실될 수 있습니다. |
단일 테넌트 Azure Logic Apps(표준) 및 관련 Azure 서비스에서 지원되지 않는 기능 사용 가능 | - 배포 슬롯 - Azure Business 프로세스 추적 - Azure Portal의 지원 + 문제 해결 에 따른 리소스 상태 - 커넥터 작업에 대한 관리 ID 인증입니다. Azure Arc 지원 Kubernetes 클러스터는 현재 관리되는 API 연결에 대한 관리 ID 인증을 지원하지 않습니다. 대신 Microsoft Entra ID를 사용하여 사용자 고유의 앱 등록을 만들어야 합니다. 자세한 내용은 이 가이드의 뒷부분에 있는 다음 단계를 따르세요. |
함수 기반 트리거 | Azure Blob, Cosmos DB 및 Event Hubs와 같은 일부 함수 기반 트리거는 표준 논리 앱과 연결된 Azure Storage 계정에 연결해야 합니다. 함수 기반 트리거를 사용하는 경우 Azure Portal의 표준 논리 앱 환경 변수 또는 Visual Studio Code의 논리 앱 프로젝트의 local.settings.json 파일에서 AzureWebJobsStorage 라는 앱 설정을 추가하고 스토리지 계정 연결 문자열을 제공합니다."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 페이지 도구 모음에서 추가를 선택합니다.
논리 앱 만들기 페이지의 표준에서 하이브리드를 선택합니다.
논리 앱 만들기(하이브리드) 페이지에서 다음 정보를 제공합니다.
속성 필요함 값 설명 구독 예 < Azure 구독 이름> Azure 구독 이름.
이 예에서는 종량제를 사용합니다.리소스 그룹 예 < Azure 리소스 그룹 이름> 하이브리드 앱 및 관련 리소스를 만드는 Azure 리소스 그룹입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.
이 예제에서는 Hybrid-RG라는 리소스 그룹을 만듭니다.논리 앱 이름 예 < 로직 앱 이름> 지역 간에 고유해야 하며 소문자, 숫자 또는 하이픈(-)만 포함할 수 있는 논리 앱 이름입니다.
이 예제에서는 my-logic-app-hybrid를 사용합니다.지역 예 < Azure 지역> Azure Arc 지원 AKS의 Azure Container Apps에 대해 지원되는 Azure 지역입니다.
이 예제에서는 미국 동부를 사용합니다.컨테이너 앱 연결 환경 예 < 연결된-환경-이름> 논리 앱의 배포 환경으로 만든 Arc 지원 Kubernetes 클러스터입니다. 자세한 내용은 자습서: Azure Arc 지원 Kubernetes에서 Azure Container Apps 사용 스토리지 설정 구성 예 사용 또는 사용 안 함 논리 앱 만들기(하이브리드) 페이지의 스토리지 탭으로 이동합니다. 다음 예제에서는 샘플 값이 있는 Azure Portal의 논리 앱 만들기 페이지를 보여 줍니다.
스토리지 페이지에서 이전에 설정한 스토리지 공급자 및 SMB 파일 공유에 대한 다음 정보를 제공합니다.
속성 필요함 값 설명 SQL 연결 문자열 예 < sql-server-connection-string> 이전에 저장한 SQL Server 연결 문자열. 자세한 내용은 SQL Server 스토리지 공급자 만들기를 참조하세요. 호스트 이름 예 < 파일 공유 호스트 이름> SMB 파일 공유의 호스트 이름입니다. 파일 공유 경로 예 < 파일 공유 경로> SMB 파일 공유에 대한 파일 공유 경로입니다. 사용자 이름 예 < 파일-공유-사용자-이름> SMB 파일 공유의 사용자 이름입니다. 암호 예 < file-share-password> SMB 파일 공유에 대한 암호입니다. 완료되면 검토 + 만들기를 선택합니다. 제공된 정보를 확인하고 만들기를 선택합니다.
Azure에서 배포를 완료한 후 리소스로 이동을 선택합니다.
Azure Portal에서 논리 앱 리소스를 엽니다. 예를 들면 다음과 같습니다.
논리 앱 리소스 메뉴의 워크플로에서 워크플로를 선택합니다.
워크플로 페이지 도구 모음에서 추가를 선택하여 빈 상태 저장 또는 상태 비지정 워크플로를 추가합니다.
디자이너가 열리면 트리거 및 작업을 추가하여 워크플로를 빌드합니다.
자세한 내용은 트리거 및 작업을 사용하여 워크플로 빌드를 참조하세요.
하이브리드 배포에 대한 버전 관리
하이브리드 호스팅 옵션을 사용하는 표준 논리 앱은 변경 내용을 자식 워크플로에 저장할 때마다 Azure Container Apps의 버전 관리 개념인 새 수정 버전을 자동으로 만듭니다. 이 수정 버전을 활성화하는 데 약간의 시간이 걸릴 수 있습니다. 즉, 변경 내용을 저장한 후 워크플로를 테스트하기 전에 몇 분 정도 기다려야 할 수 있습니다.
변경 내용이 워크플로에 아직 표시되지 않은 경우 수정 내용이 있는지 확인할 수 있습니다.
Azure Portal에서 리소스를 엽니다. 리소스 메뉴의 수정 버전에서 수정 버전 및 복제본을 선택합니다.
수정 버전 및 복제본 페이지의 활성 수정 버전 탭에서 새 수정 버전이 목록에 표시되는지 확인합니다.
자세한 내용은 다음 리소스를 참조하세요.
성능 모니터링을 위해 향상된 원격 분석 또는 OpenTelemetry 설정
표준 논리 앱에 대한 Application Insights에서 향상된 원격 분석 컬렉션을 설정한 다음 워크플로가 실행을 완료한 후 수집된 데이터를 볼 수 있습니다. 이 기능을 사용하면 워크플로에 대한 인사이트를 얻고 데이터 원본에서 이벤트 필터링을 보다 쉽게 제어할 수 있으므로 스토리지 비용을 줄일 수 있습니다. 이러한 개선 사항은 시스템의 상태 및 동작에 대한 인사이트를 제공하는 실시간 성능 메트릭에 초점을 맞춥니다.
부분적으로 연결된 온-프레미스 시나리오의 경우 특정 환경에 대해 정의한 OpenTelemetry 지원 앱 설정을 기반으로 원격 분석을 내보내도록 표준 논리 앱을 설정할 수 있습니다. 기본적으로 이 원격 분석 데이터는 Application Insights로 전송됩니다. 자세한 내용은 Azure Logic Apps의 표준 워크플로에 대한 Application Insights에서 향상된 원격 분석 사용을 참조하세요.
Azure Portal에서 vCPU 및 메모리 할당 변경
표준 논리 앱 리소스에 대한 vCPU 및 메모리 설정을 편집할 수 있습니다. 이러한 변경 내용은 표준 논리 앱 워크로드에 대한 청구 요금 에 영향을 줍니다.
Azure Portal에서 표준 논리 앱 리소스를 엽니다.
리소스 메뉴의 설정에서 컨테이너를 선택합니다.
컨테이너 페이지 도구 모음에서 편집 및 배포를 선택하여 컨테이너 편집 창을 엽니다.
속성 탭의 컨테이너 리소스 할당에서 시나리오에 맞게 다음 값을 변경합니다.
속성 값 설명 CPU 코어 - 기본값: 1
- 최소: 0.25
- 최대: 2컨테이너 인스턴스에 할당할 vCPU 코어를 결정합니다. 이 값을 최대값까지 0.25코어로 늘릴 수 있습니다. 이 논리 앱에 대한 모든 컨테이너 인스턴스의 총 수는 2코어로 제한됩니다. 메모리 - 기본값: 2
- 최소: 0.1
- 최대: 4컨테이너 인스턴스에 할당할 GiB(gibibytes)의 메모리 용량을 결정합니다. 이 값을 최대값까지 0.1GiB까지 늘릴 수 있습니다. 이 논리 앱에 대한 모든 컨테이너 인스턴스의 총 용량은 4GiB로 제한됩니다. 완료되면 저장을 선택합니다.
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 플랫폼 애플리케이션을 등록하여 앱 등록을 만듭니다.
만들기가 완료되면 포털에서 새 앱 등록을 찾습니다.
리소스 메뉴에서 개요를 선택하고 나중에 연결 인증에 필요한 다음 값을 저장합니다.
- 클라이언트 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> 워크플로우앱_AAD_클라이언트비밀키 < my-client-secret> 완료되면 저장을 선택합니다.
클라이언트 ID 및 클라이언트 암호 저장 및 참조
논리 앱 리소스에 클라이언트 ID 및 클라이언트 비밀 값을 비밀로 저장한 다음 환경 변수 탭에서 해당 값을 대신 참조할 수 있습니다 .
Azure Portal에서 논리 앱 리소스로 이동합니다.
리소스 메뉴의 설정에서 비밀을 선택합니다.
도구 모음에서 추가를 선택합니다.
비밀 추가 창에서 각 비밀에 대해 다음 정보를 입력한 다음 추가를 선택합니다.
키 값 WORKFLOWAPP_AAD_CLIENTID < my-client-ID> 워크플로우앱_AAD_클라이언트비밀키 < my-client-secret>
알려진 문제 및 문제 해결
다음 섹션에서는 현재 알려진 문제 및 일반적인 문제 해결을 위한 지침을 설명합니다.
일반 환경 설정 또는 포털 배포 문제
환경 구성 또는 포털 배포 실패 문제를 진단하고 디버그하는 데 도움이 되도록 하이브리드 배포 옵션에 제공된 troubleshoot.ps1 PowerShell 스크립트를 실행해 볼 수 있습니다.
논리 앱 배포와 동일한 온-프레미스 위치에 있는 폴더에 troubleshoot.ps1 파일을 복사합니다.
PowerShell을 사용하여 스크립트를 실행합니다.
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) 드라이버를 참조하세요.