다음을 통해 공유


하이브리드 배포를 사용하여 표준 논리 앱에 대한 자체 인프라 설정

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

경우에 따라 규정 준수, 데이터 개인 정보 보호 또는 네트워크 제한에 대한 특정 요구 사항을 충족하기 위해 자체 인프라를 설정하고 관리해야 합니다. Azure Logic Apps는 온-프레미스, 프라이빗 클라우드 또는 퍼블릭 클라우드 시나리오에서 표준 논리 앱 워크플로를 배포하고 호스트할 수 있도록 하이브리드 배포 모델을 제공합니다. 이 모델은 로컬 처리, 데이터 스토리지 및 네트워크 액세스를 사용해야 하는 경우 부분적으로 연결된 환경에서 통합 솔루션을 호스트하는 기능을 제공합니다. 하이브리드 옵션을 사용하면 워크플로에 가장 적합한 환경을 자유롭게 선택할 수 있습니다.

하이브리드 배포 작동 방식

하이브리드 배포 옵션을 사용하는 표준 논리 앱 워크플로는 Azure Container Apps 확장에서 호스트되는 Azure Logic Apps 런타임에 의해 구동됩니다. 워크플로에서 모든 기본 제공 런타임 네이티브 작업은 런타임 과 함께 로컬로 실행되므로 로컬 데이터 원본에 대한 액세스에 대한 처리량을 높일 수 있습니다. 로컬이 아닌 데이터 리소스(예: Microsoft Office 365, Microsoft Teams, Salesforce, GitHub, LinkedIn 또는 ServiceNow)와 같은 클라우드 기반 서비스에 액세스해야 하는 경우 Azure에서 호스트되는 1,400개 이상의 커넥터 중에서 작업을 선택하여 워크플로에 포함할 수 있습니다. 자세한 내용은 관리형(공유) 커넥터를 참조 하세요. Azure Portal에서 논리 앱을 관리하려면 인터넷 연결이 필요하지만 이 플랫폼의 반연결 특성을 통해 임시 인터넷 연결 문제를 흡수할 수 있습니다.

예를 들어 온-프레미스 시나리오가 있는 경우 다음 아키텍처 개요는 표준 논리 앱 워크플로가 호스트되고 하이브리드 모델에서 실행되는 위치를 보여 줍니다. 부분적으로 연결된 환경에는 Azure Container Apps 리소스로 배포되는 표준 논리 앱을 호스팅하고 사용하기 위한 다음 리소스가 포함됩니다.

  • Azure Arc 지원 AKS(Azure Kubernetes Service) 클러스터
  • 처리를 위해 워크플로 실행 기록, 입력 및 출력을 로컬로 저장하는 SQL 데이터베이스
  • 워크플로에서 사용하는 아티팩트를 로컬로 저장하는 SMB(서버 메시지 블록) 파일 공유

부분적으로 연결된 환경에서 표준 논리 앱이 호스트되는 위치에 대한 아키텍처 개요가 포함된 다이어그램

호스팅의 경우 Azure 로컬의 Azure Arc 지원 Kubernetes 클러스터 또는 Windows Server의 Azure Arc 지원 Kubernetes 클러스터를 설정하여 사용할 수도 있습니다.

하이브리드 배포 모델은 온-프레미스 및 클라우드 기능을 결합하여 다양한 요구 사항에 대한 유연한 통합 솔루션을 제공합니다. 예를 들어 하이브리드 논리 앱 리소스는 워크로드 변경에 따라 리소스를 효율적으로 조정할 수 있습니다. 이 동적 크기 조정은 최대 수요 동안 용량을 늘리고 사용량이 감소할 때 리소스를 줄여 컴퓨팅 비용을 관리하는 데 도움이 됩니다.

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

이 방법 가이드에서는 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들고, 배포하고, 호스트할 수 있도록 인프라에 필요한 온-프레미스 리소스를 설정하는 방법을 보여 줍니다.

제한 사항

다음 섹션에서는 하이브리드 배포 옵션의 제한 사항에 대해 설명합니다.

제한 사항 설명
연결이 끊긴 런타임을 사용하여 데이터 로깅 부분적으로 연결된 모드에서 Azure Logic Apps 런타임은 최대 24시간 동안 연결이 끊어진 상태를 유지하고 데이터 로그를 유지할 수 있습니다. 그러나 이 기간이 지난 모든 로깅 데이터는 손실될 수 있습니다.
지원되는 Azure 지역 하이브리드 배포는 현재 사용할 수 있으며 다음 Azure 지역에서만 지원됩니다.

- 미국 중부
- 동아시아
- 미국 동부
- 미국 중북부
-동남아시아
- 스웨덴 중부
- 영국 남부
- 서유럽
- 미국 서부
지원되는 Azure Arc 지원 Kubernetes 클러스터 - Azure Arc 지원 Kubernetes 클러스터
- Azure Local(이전의 Azure Stack HCI)에서 Azure Arc 지원 Kubernetes 클러스터
- Windows Server의 Azure Arc 지원 Kubernetes 클러스터
단일 테넌트 Azure Logic Apps(표준) 및 관련 Azure 서비스에서 지원되지 않는 기능 사용 가능 - 배포 슬롯

- Azure Business 프로세스 추적

- Azure Portal의 지원 + 문제 해결 에 따른 리소스 상태

- 커넥터 작업에 대한 관리 ID 인증입니다. 자세한 내용은 하이브리드 배포 워크플로를 만들기 위한 제한 사항을 참조하세요.

필수 조건

결제

청구 작동 방식에 대한 자세한 내용은 표준(하이브리드 배포)을 참조하세요.

Kubernetes 클러스터 만들기

Azure Container Apps 연결된 환경에서 Azure Arc 지원 Kubernetes 클러스터에 온-프레미스 리소스로 표준 논리 앱을 배포하려면 먼저 Kubernetes 클러스터필요합니다. 나중에 Azure Arc 지원 Kubernetes 클러스터가 있도록 이 클러스터를 Azure Arc에 연결합니다.

Kubernetes 클러스터는 나중에 스토리지 제공자로 생성하는 SQL 데이터베이스와 아티팩트 저장소로 나중에 생성하는 Server Message Block 파일 공유와의 인바운드 및 아웃바운드 연결이 필요합니다. 이러한 리소스는 동일한 네트워크 내에 있어야 합니다.

참고

또한 Windows Server의 Azure Local 또는 Kubernetes 클러스터에 Kubernetes 클러스터를 만들고 이 가이드의 단계를 적용하여 클러스터를 Azure Arc에 연결하고 연결된 환경을 설정할 수 있습니다. Windows Server의 Azure Local 및 AKS에 대한 자세한 내용은 다음 리소스를 참조하세요.

  1. 만들려는 Kubernetes 클러스터에 대해 다음 환경 변수를 설정합니다.

    SUBSCRIPTION="<Azure-subscription-ID>"
    AKS_CLUSTER_GROUP_NAME="<aks-cluster-resource-group-name>"
    AKS_NAME="<aks-cluster-name>"
    LOCATION="eastus"
    
    매개 변수 필수 설명
    구독 < Azure-subscription-ID> Azure 구독의 ID
    AKS_CLUSTER_GROUP_NAME < AKS 클러스터 자원 그룹 이름> Kubernetes 클러스터와 함께 사용할 Azure 리소스 그룹의 이름입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.

    이 예제에서는 Hybrid-RG를 사용합니다.
    AKS_NAME < aks-cluster-name> Kubernetes 클러스터의 이름입니다.
    위치 < Azure 지역> Azure Arc가 지원되는 Kubernetes에서 Azure Container Apps를 실행하는 Azure 지역입니다.

    이 예제에서는 eastus를 사용합니다.
  2. Azure Cloud Shell에서 Bash 환경을 사용하거나 컴퓨터에 설치된 Azure CLI를 사용하여 로컬로 다음 명령을 실행합니다.

    참고

    부하 요구 사항에 따라 최대 개수최소 개수 노드 값을 변경해야 합니다.

    az login
    az account set --subscription $SUBSCRIPTION
    az provider register --namespace Microsoft.KubernetesConfiguration --wait
    az provider register --namespace Microsoft.Kubernetes --wait
    az extension add --name k8s-extension --upgrade --yes
    az group create \
       --name $AKS_CLUSTER_GROUP_NAME \
       --___location $LOCATION
    az aks create \
       --resource-group $AKS_CLUSTER_GROUP_NAME \
       --name $AKS_NAME \
       --enable-aad \
       --generate-ssh-keys \
       --enable-cluster-autoscaler \
       --max-count 6 \
       --min-count 1
    
    매개 변수 필수 설명
    max count 아니요 < max-nodes-value> 옵션을 포함할 때 자동 크기 조정기에서 사용할 최대 노드 수입니다 enable-cluster-autoscaler . 이 값의 범위는 1에서 1000까지입니다.
    min count 아니요 < min-nodes-value> 옵션을 포함할 때 자동 크기 조정기에서 사용할 최소 노드 수입니다 enable-cluster-autoscaler . 이 값의 범위는 1에서 1000까지입니다.

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

Kubernetes 클러스터를 Azure Arc에 연결

Azure Arc 지원 Kubernetes 클러스터를 만들려면 Kubernetes 클러스터를 Azure Arc에 연결합니다.

참고

이 섹션에서는 Azure/logicapps라는 GitHub 리포지토리에서 찾을 수 있는 EnvironmentSetup.ps1이라는 스크립트에서 연결된 환경을 만드는 단계를 확인할 수 있습니다. 이 스크립트를 수정하고 사용하여 요구 사항 및 시나리오를 충족할 수 있습니다.

스크립트가 서명되지 않았기 때문에 스크립트를 실행하기 전에 관리자 권한으로 다음 Azure PowerShell 명령을 실행하여 실행 정책을 설정합니다.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

자세한 내용은 Set-ExecutionPolicy를 참조 하세요.

  1. 다음과 같은 Azure CLI 확장을 설치합니다.

    az extension add --name connectedk8s --upgrade --yes 
    az extension add --name k8s-extension --upgrade --yes 
    az extension add --name customlocation --upgrade --yes 
    az extension add --name containerapp --upgrade --yes 
    

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

  2. 다음 필수 네임스페이스를 등록합니다.

    az provider register --namespace Microsoft.ExtendedLocation --wait
    az provider register --namespace Microsoft.Kubernetes --wait
    az provider register --namespace Microsoft.KubernetesConfiguration --wait
    az provider register --namespace Microsoft.App --wait
    az provider register --namespace Microsoft.OperationalInsights --wait
    

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

  3. kubectl이라는 Kubernetes CLI(명령줄 인터페이스)를 설치합니다.

    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    
    choco install kubernetes-cli -y
    

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

  4. kubeconfig 파일을 가져와 클러스터에 대한 연결을 테스트합니다.

    az aks get-credentials \
       --resource-group $AKS_CLUSTER_GROUP_NAME \
       --name $AKS_NAME \
       --admin
    kubectl get ns 
    

    기본적으로 kubeconfig 파일은 경로 ~/.kube/config에 저장됩니다. 이 명령은 예제 Kubernetes 클러스터에 적용되며 다른 종류의 Kubernetes 클러스터에 대해 다릅니다.

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

  5. Helm이라는 Kubernetes 패키지 관리자를 설치합니다.

    choco install kubernetes-helm
    

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

  6. 다음 Helm 명령을 사용하여 SMB 드라이버를 설치합니다.

    1. 지정된 차트 리포지토리를 추가하고, 사용 가능한 차트에 대한 최신 정보를 얻고, 지정된 차트 보관 파일을 설치합니다.

      helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts 
      helm repo update
      helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.15.0 
      

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

    2. SMB 드라이버가 설치되어 있는지 확인하려면 다음 kubectl 명령을 실행하여 smb.csi.k8s.io가 나열되는지 확인하십시오.

      kubectl get csidriver
      

      자세한 내용은 kubectl get을 참조하세요.

Kubernetes 클러스터를 Azure Arc에 연결

  1. Kubernetes 클러스터 배포에 따라 다음 환경 변수를 설정하여 Azure Arc 지원 클러스터 및 리소스를 포함하는 Azure 리소스 그룹에 사용할 이름을 제공합니다.

    GROUP_NAME="<Azure-Arc-cluster-resource-group-name>"
    
    매개 변수 필수 설명
    GROUP_NAME < Azure-Arc-cluster-resource-group-name> Azure Arc 지원 클러스터 및 Azure Container Apps 확장, 사용자 지정 위치 및 Azure Container Apps 연결된 환경과 같은 기타 리소스와 함께 사용할 Azure 리소스 그룹의 이름입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.

    이 예제에서는 Hybrid-Arc-RG를 사용합니다.
  2. Azure Arc 지원 클러스터 및 리소스에 대한 Azure 리소스 그룹을 만듭니다.

    az group create \
       --name $GROUP_NAME \
       --___location $LOCATION
    

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

  3. Azure Arc 지원 Kubernetes 클러스터의 이름을 제공하려면 다음 환경 변수를 설정합니다.

    CONNECTED_CLUSTER_NAME="$GROUP_NAME-cluster"
    
    매개 변수 필수 설명
    연결된_클러스터_이름 < Azure-Arc-cluster-resource-group-name>-클러스터 Azure Arc 지원 클러스터에 사용할 이름입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.

    이 예제에서는 Hybrid-Arc-RG-cluster를 사용합니다.
  4. 이전에 만든 Kubernetes 클러스터를 Azure Arc에 연결합니다.

    az connectedk8s connect \
       --resource-group $GROUP_NAME \
       --name $CONNECTED_CLUSTER_NAME
    

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

  5. Azure Arc와 Kubernetes 클러스터 간의 연결 유효성을 검사합니다.

    az connectedk8s show \
       --resource-group $GROUP_NAME \
       --name $CONNECTED_CLUSTER_NAME
    

    출력에 provisioningState 속성 값이 Succeeded로 설정되지 않은 것으로 표시되면 1분 후에 명령을 다시 실행합니다.

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

Azure Log Analytics 작업 영역 만들기

Azure Arc 지원 Kubernetes 클러스터에서 실행되는 앱에 대한 로그에 대한 액세스를 제공하는 선택적이지만 권장되는 Azure Log Analytics 작업 영역을 만들 수 있습니다.

  1. Log Analytics 작업 영역의 이름을 제공하려면 다음 환경 변수를 설정합니다.

    WORKSPACE_NAME="$GROUP_NAME-workspace"
    
    매개 변수 필수 설명
    WORKSPACE_NAME < Azure-Arc-cluster-resource-group-name>-워크스페이스 Log Analytics 작업 영역에 사용할 이름입니다. 이 이름은 리소스 그룹 내에서 고유해야 합니다.

    이 예제에서는 Hybrid-Arc-RG-workspace를 사용합니다.
  2. Log Analytics 작업 영역을 만듭니다.

    az monitor log-analytics workspace create \
       --resource-group $GROUP_NAME \
       --workspace-name $WORKSPACE_NAME
    

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

  3. Log Analytics 작업 영역에 대한 base64로 인코딩된 ID 및 공유 키를 가져옵니다. 이후 단계에서는 이러한 값이 필요합니다.

    LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \
       --resource-group $GROUP_NAME \
       --workspace-name $WORKSPACE_NAME \
       --query customerId \
       --output tsv)
    
    LOG_ANALYTICS_WORKSPACE_ID_ENC=[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($LOG_ANALYTICS_WORKSPACE_ID))
    
    LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \
       --resource-group $GROUP_NAME \
       --workspace-name $WORKSPACE_NAME \
       --query primarySharedKey \
       --output tsv)
    
    LOG_ANALYTICS_KEY_ENC=[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($LOG_ANALYTICS_KEY))
    
    매개 변수 필수 설명
    로그 분석 작업 공간 ID Log Analytics 작업 영역의 ID입니다.
    LOG_ANALYTICS_WORKSPACE_ID_ENC Log Analytics 작업 영역에 대한 base64로 인코딩된 ID입니다.
    LOG_ANALYTICS_KEY Log Analytics 작업 영역에 대한 공유 키입니다.
    LOG_ANALYTICS_ENC Log Analytics 작업 영역에 대한 base64로 인코딩된 공유 키입니다.

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

Azure Container Apps 확장 만들기 및 설치

이제 Azure Arc 지원 Kubernetes 클러스터를 온-프레미스 리소스로 사용하여 Azure Container Apps 확장을 만들고 설치합니다.

중요

Azure Local의 AKS에 배포하려면 Azure Container Apps 확장을 만들고 설치하기 전에 HAProxy 또는 사용자 지정 부하 분산 장치를 설정해야 합니다.

  1. 다음 환경 변수를 다음 값으로 설정합니다.

    EXTENSION_NAME="logicapps-aca-extension"
    NAMESPACE="logicapps-aca-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
    매개 변수 필수 설명
    EXTENSION_NAME logicapps-aca-extension Azure Container Apps 확장의 이름입니다.
    Namespace logicapps-aca-ns 리소스를 프로비전하려는 클러스터 네임스페이스입니다.
    CONNECTED_ENVIRONMENT_NAME < 연결된-환경-이름> Azure Container Apps 연결된 환경에 사용할 고유한 이름입니다. 이 이름은 Azure Container Apps 연결된 환경에서 만들고, 배포하고, 호스트하는 표준 논리 앱의 도메인 이름의 일부가 됩니다.
  2. Azure Arc 지원 Kubernetes 클러스터에 대해 Log Analytics를 사용하도록 설정된 확장을 만들고 설치합니다. 나중에 확장에 Log Analytics를 추가할 수 없습니다.

    az k8s-extension create \
       --resource-group $GROUP_NAME \
       --name $EXTENSION_NAME \
       --cluster-type connectedClusters \
       --cluster-name $CONNECTED_CLUSTER_NAME \
       --extension-type 'Microsoft.App.Environment' \
       --release-train stable \
       --auto-upgrade-minor-version true \
       --scope cluster \
       --release-namespace $NAMESPACE \
       --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \
       --configuration-settings "appsNamespace=${NAMESPACE}" \
       --configuration-settings "keda.enabled=true" \
       --configuration-settings "keda.logicAppsScaler.enabled=true" \
       --configuration-settings "keda.logicAppsScaler.replicaCount=1" \
       --configuration-settings "containerAppController.api.functionsServerEnabled=true" \
       --configuration-settings "envoy.externalServiceAzureILB=false" \
       --configuration-settings "functionsProxyApiConfig.enabled=true" \
       --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \
       --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${GROUP_NAME}" \
       --configuration-settings "logProcessor.appLogs.destination=log-analytics" \
       --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \
       --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
    
    매개 변수 필수 설명
    Microsoft.CustomLocation.ServiceAccount 사용자 지정 위치에 대해 만든 서비스 계정입니다.

    권장 사항: 값을 기본값으로 설정합니다.
    appsNamespace 앱 정의 및 수정 버전을 만드는 데 사용할 네임스페이스입니다. 이 값은 Azure Container Apps 확장의 릴리스 네임스페이스와 일치해야 합니다.
    clusterName 확장을 위해 만들어질 Azure Container Apps 확장 Kubernetes 환경의 이름입니다.
    keda.enabled Kubernetes KEDA(이벤트 기반 자동 크기 조정)를 사용하도록 설정합니다. 이 값은 필수이며 true설정해야 합니다.
    keda.logicAppsScaler.enabled KEDA에서 Azure Logic Apps 스케일러를 사용하도록 설정합니다. 이 값은 필수이며 true설정해야 합니다.
    keda.logicAppsScaler.replicaCount 시작할 논리 앱 스케일러의 초기 수입니다. 기본값은 1로 설정됩니다. 이 값은 환경에 논리 앱이 없는 경우 0으로 확장되거나 축소됩니다.
    containerAppController.api.functionsServerEnabled 논리 앱 워크플로 트리거를 KEDA 크기 조정 개체로 변환하는 서비스를 사용하도록 설정합니다. 이 값은 필수이며 true설정해야 합니다.
    envoy.externalServiceAzureILB envoy가 내부 부하 분산 장치 또는 공용 부하 분산 장치 역할을 하는지 여부를 결정합니다.

    - true: envoy는 내부 부하 분산 장치 역할을 합니다. Azure Logic Apps 런타임은 프라이빗 네트워크 내에서만 액세스할 수 있습니다.

    - false: envoy가 공용 부하 분산 장치 역할을 수행합니다. Azure Logic Apps 런타임은 공용 네트워크를 통해 액세스할 수 있습니다.
    functionsProxyApiConfig.enabled Azure Portal에서 Azure Logic Apps 런타임에 대한 API 액세스를 용이하게 하는 프록시 서비스를 사용하도록 설정합니다. 이 값은 필수이며 true설정해야 합니다.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group 예, 기본 클러스터가 Azure Kubernetes Service인 경우에만 가능합니다. Kubernetes 클러스터가 있는 리소스 그룹의 이름입니다.
    logProcessor.appLogs.destination 아니요 애플리케이션 로그에 사용할 대상입니다. 이 값은 로깅을 사용하지 않도록 설정하는 log-analytics 또는 none입니다.
    logProcessor.appLogs.logAnalyticsConfig.customerId 예, 하지만 logProcessor.appLogs.destination이 log-analytics로 설정된 경우에만 가능합니다. Log Analytics 작업 영역에 대한 base64로 인코딩된 ID입니다. 이 매개 변수를 보호된 설정으로 구성해야 합니다.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey 예, 하지만 logProcessor.appLogs.destination이 log-analytics로 설정된 경우에만 가능합니다. Log Analytics 작업 영역에 대한 base64로 인코딩된 공유 키입니다. 이 매개 변수를 보호된 설정으로 구성해야 합니다.

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

  3. 나중에 사용할 Azure Container Apps 확장의 ID 값을 저장합니다.

    EXTENSION_ID=$(az k8s-extension show \
       --cluster-type connectedClusters \
       --cluster-name $CONNECTED_CLUSTER_NAME \
       --resource-group $GROUP_NAME \
       --name $EXTENSION_NAME \
       --query id \
       --output tsv)
    
    매개 변수 필수 설명
    EXTENSION_ID < extension-ID> Azure Container Apps 확장의 ID입니다.

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

  4. 계속하기 전에 확장이 완전히 설치되기를 기다립니다. 터미널 세션이 설치가 완료될 때까지 기다리도록 하려면 다음 명령을 실행합니다.

    az resource wait \
       --ids $EXTENSION_ID \
       --custom "properties.provisioningState!='Pending'" \
       --api-version "2020-07-01-preview" 
    

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

사용자 지정 위치 만들기

  1. 다음 환경 변수를 지정된 값으로 설정합니다.

    CUSTOM_LOCATION_NAME="my-custom-___location"
    
    CONNECTED_CLUSTER_ID=$(az connectedk8s show \
       --resource-group $GROUP_NAME \
       --name $CONNECTED_CLUSTER_NAME \
       --query id \
       --output tsv)
    
    매개 변수 필수 설명
    사용자 지정 위치 이름 my-custom-___location 사용자 지정 위치에 사용할 이름입니다.
    연결된_클러스터_ID < Azure-Arc-cluster-ID> Azure Arc 지원 Kubernetes 클러스터의 ID입니다.

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

  2. 사용자 지정 위치 만들기:

    az customlocation create \
       --resource-group $GROUP_NAME \
       --name $CUSTOM_LOCATION_NAME \
       --host-resource-id $CONNECTED_CLUSTER_ID \
       --namespace $NAMESPACE \
       --cluster-extension-ids $EXTENSION_ID \
       --___location $LOCATION
    

    참고

    클러스터에서 사용자 지정 위치를 만드는 데 문제가 발생하는 경우 클러스터에서 사용자 지정 위치 기능을 사용하도록 설정해야 할 수 있습니다. 서비스 주체를 사용하여 Azure CLI에 로그인하거나 클러스터 리소스에 대한 권한이 제한된 Microsoft Entra 사용자로 로그인한 경우 이 단계가 필요합니다.

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

  3. 사용자 지정 위치가 성공적으로 만들어졌는지 확인합니다.

    az customlocation show \
       --resource-group $GROUP_NAME \
       --name $CUSTOM_LOCATION_NAME
    

    출력에 provisioningState 속성 값이 Succeeded로 설정되지 않은 것으로 표시되면 1분 후에 명령을 다시 실행합니다.

  4. 이후 단계에서 사용할 사용자 지정 위치 ID를 저장합니다.

    CUSTOM_LOCATION_ID=$(az customlocation show \
       --resource-group $GROUP_NAME \
       --name $CUSTOM_LOCATION_NAME \
       --query id \
       --output tsv)
    
    매개 변수 필수 설명
    CUSTOM_LOCATION_ID < my-custom-___location-ID> 사용자 지정 위치의 ID입니다.

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

Azure Container Apps 연결 환경을 만듭니다

이제 Azure Container Apps 연결 환경을 표준 논리 앱에서 사용할 수 있도록 만들어 보세요.

az containerapp connected-env create \
   --resource-group $GROUP_NAME \
   --name $CONNECTED_ENVIRONMENT_NAME \
   --custom-___location $CUSTOM_LOCATION_ID \
   --___location $LOCATION

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

Azure Local에서 Kubernetes 클러스터에 대한 CoreDNS 업데이트

Azure Kubernetes 클러스터가 Azure Local에서 호스트되는 경우 클러스터에 대한 CoreDNS 구성을 수동으로 업데이트해야 합니다. 이 단계에서는 Azure Kubernetes 네임스페이스에 새 구성 맵 을 추가합니다. 이에 비해 Azure Logic Apps는 Kubernetes 클러스터가 Azure에서 호스트될 때 이 단계를 자동으로 완료합니다. 그러나 다른 곳에서 호스트되는 클러스터의 경우 이 단계를 수동으로 완료해야 합니다.

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

CoreDNS 구성을 업데이트하려면 시나리오에 대한 옵션을 사용하여 다음 Azure CLI 명령을 실행합니다.

az containerapp arc setup-core-dns
매개 변수 필수 설명
--distro CoreDNS 구성을 업데이트하는 데 사용할 지원되는 배포입니다. 허용되는 값: AksAzureLocal
--kube-config 아니요 Kubernetes 클러스터에 액세스하기 위한 구성 매개 변수를 포함하는 (kubeconfig 파일)의 경로입니다.
--kube-context 아니요 클러스터에 대한 온-프레미스 호스트의 kubeconfig 컨텍스트입니다. Kubernetes에서 컨텍스트 는 Kubernetes 클러스터와 통신하는 방법을 정의합니다.
skip-ssl-verification 아니요 클러스터 연결에 대한 SSL 확인을 건너뜁니다.
--yes -y 아니요 확인을 묻는 메시지를 표시하지 않습니다.

전역 매개 변수와 같은 자세한 내용은 az containerapp arc setup-core-dns를 참조하세요.

예시

  • Azure 로컬에 대한 CoreDNS 구성을 설정합니다.

    az containerapp arc setup-core-dns --distro AksAzureLocal
    
  • Kubernetes 구성 파일 및 Kubernetes 컨텍스트를 사용하여 Azure Local에 대한 CoreDNS 구성을 설정합니다.

    az containerapp arc setup-core-dns --distro AksAzureLocal --kube-config <kubeconfig-file-path> --kube-context <kubeconfig-context-name>
    

SQL Server 스토리지 공급자 만들기

하이브리드 배포 모델의 표준 논리 앱 워크플로는 워크플로 및 Azure Logic Apps 런타임에서 사용하는 데이터에 대한 스토리지 공급자로 SQL 데이터베이스를 사용합니다(예: 워크플로 실행 기록, 입력, 출력 등).

SQL 데이터베이스에는 Kubernetes 클러스터와의 인바운드 및 아웃바운드 연결이 필요하므로 이러한 리소스는 동일한 네트워크에 있어야 합니다.

  1. 다음 SQL Server 버전을 설정합니다.

    자세한 내용은 표준 논리 앱 워크플로에 대한 SQL Database 스토리지 설정을 참조 하세요.

  2. SQL 데이터베이스가 Arc 지원 Kubernetes 클러스터 및 SMB 파일 공유와 동일한 네트워크에 있는지 확인합니다.

  3. 만든 SQL 데이터베이스에 대한 연결 문자열 찾아서 저장합니다.

아티팩트 스토리지에 대한 SMB 파일 공유 설정

논리 앱(컨테이너 앱) 리소스에 대한 맵, 스키마 및 어셈블리와 같은 아티팩트를 저장하려면 SMB(서버 메시지 블록) 프로토콜을 사용하는 파일 공유가 있어야 합니다.

  • SMB 파일 공유를 설정하려면 관리자 액세스 권한이 필요합니다.

  • SMB 파일 공유는 Kubernetes 클러스터 및 SQL 데이터베이스와 동일한 네트워크에 있어야 합니다.

  • SMB 파일 공유에는 Kubernetes 클러스터와의 인바운드 및 아웃바운드 연결이 필요합니다. Azure 가상 네트워크 제한을 사용하도록 설정한 경우 파일 공유가 Kubernetes 클러스터와 동일한 가상 네트워크 또는 피어된 가상 네트워크에 있는지 확인합니다.

  • 여러 논리 앱에 대해 동일한 정확한 파일 공유 경로를 사용하지 마세요.

  • 각 논리 앱에 대해 별도의 SMB 파일 공유를 사용하거나 해당 폴더가 중첩되지 않는 한 동일한 SMB 파일 공유에서 다른 폴더를 사용할 수 있습니다. 예를 들어 논리 앱이 루트 경로를 사용하지 않고 다른 논리 앱에서 하위 폴더를 사용하도록 합니다.

  • Visual Studio Code를 사용하여 논리 앱을 배포하려면 Visual Studio Code가 있는 로컬 컴퓨터에서 파일 공유에 액세스할 수 있는지 확인합니다.

Windows에서 SMB 파일 공유 설정

SMB 파일 공유가 파일 공유를 탑재하는 클러스터와 동일한 가상 네트워크에 있는지 확인합니다.

  1. Windows에서 공유하려는 폴더로 이동하여 바로 가기 메뉴를 열고 속성을 선택합니다.

  2. 공유 탭에서 공유를 선택합니다.

  3. 열리는 상자에서 파일 공유에 액세스할 사용자를 선택합니다.

  4. 공유를 선택하고 네트워크 경로에 대한 링크를 복사합니다.

    로컬 컴퓨터가 도메인에 연결되지 않은 경우 네트워크 경로의 컴퓨터 이름을 IP 주소로 바꿉니다.

  5. 나중에 호스트 이름으로 사용할 IP 주소를 저장합니다.

Azure Files를 SMB 파일 공유로 설정

또는 테스트 목적으로 Azure Files를 SMB 파일 공유로 사용할 수 있습니다. SMB 파일 공유가 파일 공유를 탑재하는 클러스터와 동일한 가상 네트워크에 있는지 확인합니다.

  1. Azure Portal에서 Azure Storage 계정을 만듭니다.

  2. 스토리지 계정 메뉴의 데이터 스토리지에서 파일 공유를 선택합니다.

  3. 파일 공유 페이지 도구 모음에서 + 파일 공유를 선택하고 SMB 파일 공유에 필요한 정보를 제공합니다.

  4. 배포가 완료되면 리소스로 이동을 선택합니다.

  5. 파일 공유 메뉴에서 [개요]를 선택합니다(선택하지 않은 경우).

  6. 개요 페이지 도구 모음에서 연결을 선택합니다. 연결 창에서 스크립트 표시를 선택합니다.

  7. 다음 값을 복사하고 나중에 사용할 수 있도록 안전한 위치에 저장합니다.

    • 파일 공유의 호스트 이름(예: mystorage.file.core.windows.net
    • 파일 공유 경로
    • localhost\ 없는 사용자 이름
    • 암호
  8. 개요 페이지 도구 모음에서 + 디렉터리 추가를 선택하고 디렉터리에 사용할 이름을 제공합니다. 나중에 사용하려면 이 이름을 저장합니다.

논리 앱 리소스를 배포할 때 SMB 파일 공유 정보를 제공하려면 이러한 저장된 값이 필요합니다.

자세한 내용은 SMB Azure 파일 공유 만들기를 참조 하세요.

SMB 파일 공유 연결 확인

Arc 지원 Kubernetes 클러스터와 SMB 파일 공유 간의 연결을 테스트하고 파일 공유가 올바르게 설정되어 있는지 확인하려면 다음 단계를 수행합니다.

  • SMB 파일 공유가 동일한 클러스터에 없는 경우 Ping 작업이 Arc 지원 Kubernetes 클러스터에서 SMB 파일 공유가 있는 가상 머신으로 작동하는지 확인합니다. ping 작업이 작동하는지 확인하려면 다음 단계를 수행합니다.

    1. Arc 지원 Kubernetes 클러스터에서 BusyBox 또는 Ubuntu와 같은 Linux 이미지를 실행하는 테스트 Pod 를 만듭니다.

    2. Pod의 컨테이너로 이동하여 다음 Linux 명령을 실행하여 iputils-ping 패키지를 설치합니다.

      apt-get update
      apt-get install iputils-ping
      
  • SMB 파일 공유가 올바르게 설정되어 있는지 확인하려면 다음 단계를 수행합니다.

    1. 동일한 Linux 이미지가 있는 테스트 Pod에서 mnt/smb라는 경로가 있는 폴더를 만듭니다.

    2. mnt 폴더가 포함된 루트 또는 홈 디렉터리로 이동합니다.

    3. 다음 명령을 실행합니다.

      - mount -t cifs //{ip-address-smb-computer}/{file-share-name}/mnt/smb -o username={user-name}, password={password}

  • 아티팩트가 올바르게 업로드되는지 확인하려면 SMB 파일 공유 경로에 연결하고 배포 중에 지정한 올바른 폴더에 아티팩트 파일이 있는지 확인합니다.

하이브리드 배포에 대한 성능 최적화

하이브리드 배포에서 표준 논리 앱의 효율성과 성능을 최대화하려면 최적화에 대한 중요한 인사이트를 얻을 수 있도록 CPU, 메모리 할당 및 크기 조정 메커니즘과 같은 주요 측면을 분석하고 평가하는 방법을 이해해야 합니다. 다른 주요 요소로는 워크플로 효율성 및 전반적인 성능에 큰 영향을 줄 수 있는 기본 Kubernetes 인프라, SQL 구성 및 크기 조정 설정이 포함됩니다. 자세한 내용은 하이브리드 배포 성능 분석 및 최적화 권장 사항을 참조하세요.

다음 단계

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