다음을 통해 공유


자체 인프라에서 하이브리드 배포를 위한 표준 논리 앱 워크플로 만들기

적용 대상: Azure Logic Apps(표준)

자체 인프라를 사용, 제어 및 관리해야 하는 시나리오의 경우 Azure Logic Apps의 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들 수 있습니다. 이 모델은 로컬 처리, 저장 및 네트워크 액세스가 필요한 부분적으로 연결된 환경에 대한 통합 솔루션을 빌드하고 호스팅할 수 있는 기능을 제공합니다. 사용자의 인프라에는 온-프레미스 시스템, 프라이빗 클라우드, 퍼블릭 클라우드가 포함될 수 있습니다. 하이브리드 모델을 사용하면 표준 논리 앱 워크플로는 Azure Logic Apps 런타임을 기반으로 구동되며, 이 런타임은 Azure Container 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(Standard) 확장이 필요합니다.

    새로운 Visual Studio Code를 설치한 경우 자체 인프라에 배포하기 전에 기본 표준 워크플로를 로컬에서 실행할 수 있는지 확인합니다. 이 테스트 실행은 표준 워크플로 프로젝트에 존재할 수 있는 오류를 격리하는 데 도움이 됩니다.

표준 논리 앱 만들기

다음 단계에 따라 하이브리드 배포를 위한 표준 논리 앱을 만듭니다.

  1. Azure Portal 검색 상자에 논리 앱을 입력하고 논리 앱을 선택합니다.

  2. Logic Apps 페이지 도구 모음에서 추가를 선택합니다.

  3. 논리 앱 만들기 페이지의 표준에서 하이브리드를 선택합니다.

  4. 논리 앱 만들기(하이브리드) 페이지에서 다음 정보를 제공합니다.

    속성 필수 설명
    구독 < Azure-subscription-name> Azure 구독 이름.

    이 예에서는 종량제를 사용합니다.
    리소스 그룹 < Azure 리소스 그룹 이름> 하이브리드 앱과 관련 리소스를 만드는 Azure 리소스 그룹입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.

    이 예에서는 Hybrid-RG라는 리소스 그룹을 만듭니다.
    논리 앱 이름 < logic-app-name> 지역 전체에서 고유해야 하는 논리 앱 이름은 소문자, 숫자 또는 하이픈(-)만 포함할 수 있습니다.

    이 예에서는 my-logic-app-hybrid를 사용합니다.
    지역 < Azure 지역> Azure Arc 지원 AKS에서 Azure Container Apps를 지원하는 Azure 지역입니다.

    이 예제에서는 미국 동부를 사용합니다.
    컨테이너 앱 연결 환경 < 연결된-환경-이름> 논리 앱의 배포 환경으로 만든 Arc 지원 Kubernetes 클러스터입니다. 자세한 내용은 자습서: Azure Arc 지원 Kubernetes에서 Azure Container Apps 사용을 참조하세요.
    스토리지 설정 구성 사용 또는 사용 안 함 논리 앱(하이브리드) 만들기 페이지의 스토리지 탭으로 계속됩니다.

    다음 예에서는 샘플 값이 포함된 Azure Portal의 논리 앱 만들기 페이지를 보여 줍니다.

    Azure Portal과 논리 앱 만들기 페이지를 보여 주는 스크린샷.

  5. 스토리지 페이지에서 이전에 설정한 스토리지 공급자 및 SMB 파일 공유에 대한 다음 정보를 제공합니다.

    속성 필수 설명
    SQL 연결 문자열 < sql-server-connection-string> 이전에 저장한 SQL Server 연결 문자열입니다. 자세한 내용은 SQL Server 스토리지 공급자 만들기를 참조하세요.
    호스트 이름 < 파일 공유 호스트 이름> SMB 파일 공유의 호스트 이름입니다.
    파일 공유 경로h < 파일 공유 경로> SMB 파일 공유를 위한 파일 공유 경로입니다.
    사용자 이름 < 파일-공유-사용자-이름> SMB 파일 공유에 대한 사용자 이름입니다.
    암호 < file-share-password> SMB 파일 공유의 암호입니다.
  6. 완료되면 검토 + 만들기를 선택합니다. 제공된 정보를 확인하고 만들기를 선택합니다.

  7. Azure가 배포를 완료한 후 리소스로 이동을 선택합니다.

    Azure Portal에서 논리 앱 리소스를 엽니다. 예를 들면 다음과 같습니다.

    컨테이너 앱으로 만들어진 하이브리드 배포를 위한 표준 논리 앱이 있는 Azure Portal을 보여 주는 스크린샷.

  8. 논리 앱 리소스 메뉴의 워크플로에서 워크플로를 선택합니다.

  9. 워크플로 페이지 도구 모음에서 추가를 선택하여 빈 상태 저장형 또는 상태 비저장형 워크플로를 추가합니다.

  10. 디자이너가 열리면 트리거와 작업을 추가하여 워크플로를 빌드합니다.

    자세한 내용은 트리거 및 작업을 사용하여 워크플로 빌드를 참조하세요.

하이브리드 배포에 대한 버전 관리

하이브리드 호스팅 옵션이 있는 표준 논리 앱은 하위 워크플로에 대한 변경 내용을 저장할 때마다 Azure Container Apps의 수정 버전 관리 개념인 새로운 수정 버전을 자동으로 만듭니다. 이 수정 버전을 활성화하는 데 약간의 시간이 걸릴 수 있습니다. 즉, 변경 내용을 저장한 후 워크플로를 테스트하기 전에 몇 분간 기다리는 것이 좋습니다.

변경 내용이 워크플로에 아직 나타나지 않으면 수정 사항이 있는지 확인할 수 있습니다.

  1. Azure Portal에서 리소스를 엽니다. 리소스 메뉴의 수정 버전에서 수정 버전 및 복제본을 선택합니다.

  2. 수정 및 복제본 페이지의 활성 수정 탭에서 새 수정이 목록에 나타나는지 확인합니다.

자세한 내용은 다음 리소스를 참조하세요.

성능 모니터링을 위해 향상된 원격 분석 또는 OpenTelemetry 설정

표준 논리 앱에 대한 Application Insights에서 향상된 원격 분석 컬렉션을 설정한 다음 워크플로가 실행을 완료한 후 수집된 데이터를 볼 수 있습니다. 이 기능을 사용하면 워크플로에 대한 인사이트를 얻고 데이터 원본에서 이벤트 필터링을 보다 쉽게 제어할 수 있으므로 스토리지 비용을 줄일 수 있습니다. 이러한 개선 사항은 시스템의 상태와 동작에 대한 인사이트를 제공하는 실시간 성능 메트릭에 중점을 둡니다.

부분적으로 연결된 온-프레미스 시나리오의 경우 특정 환경에 대해 정의한 OpenTelemetry 지원 앱 설정을 기반으로 원격 분석을 내보내도록 표준 논리 앱을 설정할 수 있습니다. 기본적으로 이 원격 분석 데이터는 Application Insights로 전송됩니다. 자세한 내용은 Azure Logic Apps의 표준 워크플로에 대한 Application Insights에서 향상된 원격 분석 사용을 참조하세요.

Azure Portal에서 vCPU 및 메모리 할당 변경

표준 논리 앱 리소스에 대한 vCPU 및 메모리 설정을 편집할 수 있습니다. 이러한 변경 내용은 표준 논리 앱 워크로드에 대한 청구 요금 에 영향을 줍니다.

  1. Azure Portal에서 표준 논리 앱 리소스를 엽니다.

  2. 리소스 메뉴의 설정에서 컨테이너를 선택합니다.

  3. 컨테이너 페이지 도구 모음에서 편집 및 배포를 선택하면 컨테이너 편집 창이 열립니다.

  4. 속성 탭의 컨테이너 리소스 할당에서 시나리오에 맞게 다음 값을 변경합니다.

    속성 설명
    CPU 코어 - 기본값: 1
    - 최솟값: 0.25
    - 최댓값: 2
    컨테이너 인스턴스에 할당할 vCPU 코어를 결정합니다. 최댓값까지 0.25코어씩 이 값을 늘릴 수 있습니다. 이 논리 앱의 모든 컨테이너 인스턴스의 총 코어 수는 2개로 제한됩니다.
    메모리 - 기본값: 2
    - 최솟값: 0.1
    - 최댓값: 4
    컨테이너 인스턴스에 할당할 GiB(gibibytes)의 메모리 용량을 결정합니다. 이 값을 최대값까지 0.1GiB까지 늘릴 수 있습니다. 이 논리 앱에 대한 모든 컨테이너 인스턴스의 총 용량은 4GiB로 제한됩니다.
  5. 완료되면 저장을 선택합니다.

Azure Portal에서 복제본 크기 조정 변경

트리거 이벤트에 응답하여 배포되는 복제본 범위에 대한 자동 크기 조정을 제어할 수 있습니다. 복제본은 논리 앱 리소스 수정 버전 또는 수정 버전의 새 인스턴스입니다. 이 범위에 대한 최솟값과 최댓값을 변경하려면 크기 조정 규칙을 수정하여 크기 조정을 트리거하는 이벤트 유형을 결정할 수 있습니다. 자세한 내용은 Azure Container Apps에서 크기 조정 규칙 설정을 참조하세요.

  1. Azure Portal에서 표준 논리 앱 리소스를 엽니다.

  2. 리소스 메뉴의 설정에서 크기 조정을 선택합니다.

  3. 크기 조정 페이지의 크기 조정 규칙 설정에서 시나리오에 맞게 다음 값을 변경합니다.

    속성 설명
    최소 복제본 - 기본값: 1
    - 최솟값: 0
    - 최댓값: 1000
    지정된 시간에 수정 버전에 허용되는 최소 복제본 수를 결정합니다. 이 값은 크기 조정 규칙을 무시하며 최대 복제본 수보다 작아야 합니다.
    최대 복제본 - 기본값: 30
    - 최솟값: 0
    - 최댓값: 1000
    지정된 시간에 수정 버전에 허용되는 최대 복제본 수를 결정합니다. 이 값은 크기 조정 규칙을 무시합니다.
  4. 완료되면 저장을 선택합니다.

Azure Portal에서 논리 앱에 대한 인바운드 트래픽을 제어합니다.

Ingress를 사용하도록 설정하면 논리 앱을 공용 웹, 가상 네트워크 및 사용자 환경의 다른 논리 앱에 노출할 수 있습니다. Azure는 논리 앱으로의 외부 및 내부 트래픽 라우팅을 제어하는 ​​일련의 규칙을 통해 수신 설정을 적용합니다. 수신을 활성화하면 들어오는 HTTPS 요청 또는 TCP 트래픽을 활성화하기 위해 Azure Load Balancer, 공용 IP 주소 또는 기타 Azure 리소스를 만들 필요가 없습니다. 자세한 내용은 Container Apps의 Ingress를 참조하세요.

참고

수신을 사용하도록 설정하면 기본적으로 모든 트래픽이 최신 수정 버전으로 전송됩니다. 트래픽 설정을 변경하려면 수정 버전 관리 페이지로 이동합니다.

  1. 리소스 메뉴의 설정에서 Ingress를 선택합니다.

  2. Ingress 페이지에서 Ingress 옆에 있는 사용 상자를 선택합니다.

  3. 시나리오에 따라 나머지 옵션을 구성합니다.

    자세한 내용은 다음 설명서를 참조하세요.

관리 API 연결에 대한 인증 설정

Azure Arc 지원 Kubernetes 클러스터에서 호스트되는 표준 논리 앱 워크플로에서 관리 API 연결을 인증하려면 Microsoft Entra ID를 사용하여 고유한 앱 등록을 만들어야 합니다. 그런 다음 이 앱 등록 값을 표준 논리 앱 리소스의 환경 변수로 추가하여 대신 API 연결을 인증할 수 있습니다.

Microsoft Entra ID로 앱 등록 만들기

Azure portal

  1. Azure Portal에서 빠른 시작: Microsoft ID 플랫폼에 애플리케이션 등록에 따라 앱 등록을 만듭니다.

  2. 앱 만들기가 완료되면 포털에서 새 앱 등록을 확인합니다.

  3. 리소스 메뉴에서 개요를 선택하고 나중에 연결 인증에 필요한 다음 값을 저장합니다.

    • 클라이언트 ID
    • 테넌트 ID
    • 클라이언트 암호
  4. 개체 ID의 경우 다음 단계를 따릅니다.

    1. 개요 페이지에서 앱 등록을 위해 다음과 같이 로컬 디렉터리의 관리되는 애플리케이션 링크를 선택합니다.

      로컬 디렉터리에서 관리되는 애플리케이션에 대해 선택된 링크를 사용하여 앱을 등록하는 과정을 보여 주는 스크린샷.

    2. 열리는 페이지에서 개체 ID 값을 복사하여 저장합니다.

      선택한 개체 ID로 앱을 등록하는 모습을 보여 주는 스크린샷.

  5. 이제 저장된 값을 환경 변수로 추가하여 Standard 논리 앱 리소스에 추가합니다.

Azure 커맨드 라인 인터페이스 (CLI)

  1. 앱 등록을 만들려면 az ad sp create 명령을 사용합니다.

  2. 모든 속성을 검토하려면 az ad sp show 명령을 사용합니다.

  3. 두 명령의 출력에서 ​​나중에 연결 인증에 필요한 다음 값을 찾아 저장합니다.

    • 클라이언트 ID
    • 개체 ID입니다.
    • 테넌트 ID
    • 클라이언트 암호
  4. 이제 저장된 값을 환경 변수로 추가하여 Standard 논리 앱 리소스에 추가합니다.

표준 논리 앱에 앱 등록 값 추가

  1. Azure Portal에서 표준 논리 앱 리소스로 이동합니다.

  2. 리소스 메뉴의 설정에서 컨테이너를 선택한 다음 환경 변수 탭을 선택합니다.

    앱 설정 및 호스트 설정에 대한 자세한 내용은 앱 설정 및 호스트 설정 편집을 참조하세요.

  3. 도구 모음에서 편집 및 배포를 선택합니다.

  4. 컨테이너 편집 창에서 환경 변수를 선택한 다음 추가를 선택합니다.

  5. 다음 표에서 지정된 값을 갖는 각 환경 변수를 추가합니다.

    환경 변수
    WORKFLOWAPP_AAD_CLIENTID < my-client-ID>
    WORKFLOWAPP_AAD_OBJECTID < my-object-ID>
    WORKFLOWAPP_AAD_TENANTID < my-tenant-ID>
    워크플로우앱_AAD_클라이언트비밀키 < my-client-secret>
  6. 완료되면 저장을 선택합니다.

클라이언트 ID와 클라이언트 암호를 저장하고 참조하세요.

클라이언트 ID와 클라이언트 암호 값을 논리 앱 리소스에 비밀로 저장한 다음 대신 환경 변수 탭에서 해당 값을 참조할 수 있습니다.

  1. Azure Portal에서 논리 앱 리소스로 이동합니다.

  2. 리소스 메뉴의 설정에서 비밀을 선택합니다.

  3. 도구 모음에서 추가를 선택합니다.

  4. 비밀 추가 창에서 각 비밀에 대한 다음 정보를 입력한 다음 추가를 선택합니다.

    WORKFLOWAPP_AAD_CLIENTID < my-client-ID>
    워크플로우앱_AAD_클라이언트비밀키 < my-client-secret>

알려진 문제 및 문제 해결

다음 섹션에서는 현재 알려진 문제 및 일반적인 문제 해결을 위한 지침을 설명합니다.

일반 환경 설정 또는 포털 배포 문제

환경 구성 또는 포털 배포 실패 문제를 진단하고 디버그하는 데 도움이 되도록 하이브리드 배포 옵션에 제공된 troubleshoot.ps1 PowerShell 스크립트를 실행해 볼 수 있습니다.

  1. Azure Logic Apps GitHub 리포지토리( 스크립트/하이브리드 폴더)로 이동합니다.

  2. 논리 앱 배포와 동일한 온-프레미스 위치에 있는 폴더에 troubleshoot.ps1 파일을 복사합니다.

  3. PowerShell을 사용하여 스크립트를 실행합니다.

Arc 지원 Kubernetes 클러스터

드물지만 클러스터에서 메모리 공간이 높아지는 경우가 있을 수 있습니다. 이 문제를 방지하려면 노드 풀에 대한 자동 크기 조정 기능을 추가하거나 스케일 아웃합니다.

함수 호스트가 실행되지 않음

표준 논리 앱을 배포한 후 앱이 올바르게 실행되는지 확인합니다.

  1. Azure Portal에서 논리 앱 리소스를 엽니다.

  2. 리소스 메뉴에서 개요를 선택합니다.

  3. 개요 페이지에서 애플리케이션 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.

노드 수를 늘리고 자동 크기 조정을 설정하려면 다음 단계를 따릅니다.

  1. Azure Portal에서 Kubernetes Service 인스턴스로 이동합니다.

  2. 인스턴스 메뉴의 설정에서 노드 풀을 선택합니다.

  3. 노드 도구 페이지 도구 모음에서 + 노드 풀 추가를 선택합니다.

자세한 내용은 다음 설명서를 참조하세요.

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) 드라이버를 참조하세요.