하이브리드 배포를 사용하여 표준 논리 앱에 대한 자체 인프라 설정(미리 보기)
적용 대상: Azure Logic Apps(표준)
참고 항목
이 기능은 미리 보기로 제공되며 사용 요금이 부과되며 Microsoft Azure 미리 보기에 대한 추가 사용 약관이 적용 됩니다.
경우에 따라 규정 준수, 데이터 개인 정보 보호 또는 네트워크 제한에 대한 특정 요구 사항을 충족하기 위해 자체 인프라를 설정하고 관리해야 합니다. Azure Logic Apps는 온-프레미스, 프라이빗 클라우드 또는 퍼블릭 클라우드 시나리오에서 표준 논리 앱 워크플로를 배포하고 호스트할 수 있도록 하이브리드 배포 모델을 제공합니다. 이 모델은 로컬 처리, 데이터 스토리지 및 네트워크 액세스를 사용해야 하는 경우 부분적으로 연결된 환경에서 통합 솔루션을 호스트하는 기능을 제공합니다. 하이브리드 옵션을 사용하면 워크플로에 가장 적합한 환경을 자유롭게 선택할 수 있습니다.
하이브리드 배포 작동 방식
하이브리드 배포 옵션을 사용하는 표준 논리 앱 워크플로는 Azure Container Apps 확장에서 호스트되는 Azure Logic Apps 런타임에 의해 구동됩니다. 워크플로에서 모든 기본 제공 작업은 런타임을 사용하여 로컬로 실행되므로 로컬 데이터 원본에 대한 액세스에 대한 처리량을 높일 수 있습니다. 로컬이 아닌 데이터 리소스(예: Microsoft Office 365, Microsoft Teams, Salesforce, GitHub, LinkedIn 또는 ServiceNow)와 같은 클라우드 기반 서비스에 액세스해야 하는 경우 Azure에서 호스트되는 1,000개 이상의 커넥터 중에서 작업을 선택하여 워크플로에 포함할 수 있습니다. 자세한 내용은 관리형(공유) 커넥터를 참조 하세요. Azure Portal에서 논리 앱을 관리하려면 인터넷 연결이 필요하지만 이 플랫폼의 반연결 특성을 통해 임시 인터넷 연결 문제를 흡수할 수 있습니다.
예를 들어 온-프레미스 시나리오가 있는 경우 다음 아키텍처 개요는 표준 논리 앱 워크플로가 호스트되고 하이브리드 모델에서 실행되는 위치를 보여 줍니다. 부분적으로 연결된 환경에는 Azure Container Apps 리소스로 배포되는 표준 논리 앱을 호스팅하고 사용하기 위한 다음 리소스가 포함됩니다.
- Azure Arc 지원 AKS(Azure Kubernetes Service) 클러스터
- 처리를 위해 워크플로 실행 기록, 입력 및 출력을 로컬로 저장하는 SQL 데이터베이스
- 워크플로에서 사용하는 아티팩트를 로컬로 저장하는 SMB(서버 메시지 블록) 파일 공유
호스팅의 경우 Azure Stack HCI(하이퍼컨버지드 인프라) 또는 Windows Server의 Azure Arc 지원 Kubernetes 클러스터에서 Azure Arc 지원 Kubernetes 클러스터를 설정하고 사용할 수도 있습니다.
자세한 내용은 다음 설명서를 참조하세요.
- Azure Kubernetes Service란?
- AKS(Azure Kubernetes Service)의 핵심 개념
- Azure Arc 지원 Kubernetes 클러스터에 대한 사용자 지정 위치
- Azure Container Apps란?
- Azure Arc의 Azure Container Apps
이 방법 가이드에서는 하이브리드 배포 모델을 사용하여 표준 논리 앱 워크플로를 만들고, 배포하고, 호스트할 수 있도록 인프라에 필요한 온-프레미스 리소스를 설정하는 방법을 보여 줍니다.
청구 방법
하이브리드 옵션을 사용하면 다음 항목을 담당하게 됩니다.
- Azure Arc 지원 Kubernetes 인프라
- SQL Server 라이선스
- 표준 논리 앱 워크로드를 지원하기 위해 vCPU/시간당 $0.18 USD의 청구 요금
이 청구 모델에서는 최대 사용량에 대해 구매할 필요 없이 필요한 금액에 대해서만 비용을 지불하고 동적 워크로드에 대한 리소스 크기를 조정합니다. Microsoft Teams 또는 Microsoft Office 365 와 같은 Azure 호스팅 커넥터 작업을 사용하는 워크플로의 경우 기존 표준(단일 테넌트) 가격 책정 이 이러한 작업 실행에 적용됩니다.
제한 사항
하이브리드 배포는 현재 사용할 수 있으며 다음 Azure Arc 지원 Kubernetes 클러스터에 대해서만 지원됩니다.
- Azure Arc 지원 Kubernetes 클러스터
- Azure Stack HCI의 Azure Arc 지원 Kubernetes 클러스터
- Windows Server의 Azure Arc 지원 Kubernetes 클러스터
필수 조건
Azure 계정 및 구독 구독이 없는 경우 Azure 체험 계정에 등록합니다.
핵심 AKS 개념에 대한 기본 이해
Azure Container Registry와 같은 퍼블릭 또는 프라이빗 컨테이너 레지스트리에 대한 액세스를 포함하여 Azure Arc 지원 Kubernetes의 Azure Container Apps에 대한 기술 요구 사항
Kubernetes 클러스터 만들기
Azure Container Apps 연결된 환경에서 Azure Arc 지원 Kubernetes 클러스터에 온-프레미스 리소스로 표준 논리 앱을 배포하려면 먼저 Kubernetes 클러스터가 필요합니다. 나중에 Azure Arc 지원 Kubernetes 클러스터가 있도록 이 클러스터를 Azure Arc에 연결합니다.
Kubernetes 클러스터에는 나중에 스토리지 공급자로 만든 SQL 데이터베이스와 나중에 아티팩트 스토리지에 대해 만든 서버 메시지 블록 파일 공유를 사용하여 인바운드 및 아웃바운드 연결이 필요합니다. 이러한 리소스는 동일한 네트워크 내에 있어야 합니다.
참고 항목
또한 Windows Server에서 Azure Stack HCI 인프라 또는 Kubernetes 클러스터에 Kubernetes 클러스터를 만들고 이 가이드의 단계를 적용하여 클러스터를 Azure Arc에 연결하고 연결된 환경을 설정할 수 있습니다. Windows Server의 Azure Stack HCI 및 AKS에 대한 자세한 내용은 다음 리소스를 참조하세요.
만들려는 Kubernetes 클러스터에 대해 다음 환경 변수를 설정합니다.
SUBSCRIPTION="<Azure-subscription-ID>" AKS_CLUSTER_GROUP_NAME="<aks-cluster-resource-group-name>" AKS_NAME="<aks-cluster-name>" LOCATION="eastus"
매개 변수 Required 값 Description 구독 예 <Azure-subscription-ID> Azure 구독의 ID AKS_CLUSTER_GROUP_NAME 예 <aks-cluster-resource-group-name> Kubernetes 클러스터와 함께 사용할 Azure 리소스 그룹의 이름입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.
이 예제에서는 Hybrid-RG를 사용합니다.AKS_NAME 예 <aks-cluster-name> Kubernetes 클러스터의 이름입니다. LOCATION 예 <Azure-region> Azure Arc 지원 Kubernetes에서 Azure 컨테이너 앱을 지원하는 Azure 지역 입니다.
이 예제에서는 eastus를 사용합니다.Azure Cloud Shell에서 Bash 환경을 사용하거나 컴퓨터에 설치된 Azure CLI를 사용하여 로컬로 다음 명령을 실행합니다.
참고 항목
부하 요구 사항에 따라 최대 개수 및 최소 개수 노드 값을 변경해야 합니다.
az login az account set --subscription $SUBSCRIPTION az provider register --namespace Microsoft.KubernetesConfiguration --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
매개 변수 Required 값 설명 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를 참조 하세요.
다음과 같은 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
자세한 내용은 다음 리소스를 참조하세요.
다음 필수 네임스페이스를 등록합니다.
az provider register --namespace Microsoft.ExtendedLocation --wait az provider register --namespace Microsoft.KubernetesConfiguration --wait az provider register --namespace Microsoft.App --wait az provider register --namespace Microsoft.OperationalInsights --wait
자세한 내용은 다음 리소스를 참조하세요.
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
자세한 내용은 다음 리소스를 참조하세요.
Helm이라는 Kubernetes 패키지 관리자를 설치합니다.
choco install kubernetes-helm
자세한 내용은 다음 리소스를 참조하세요.
다음 Helm 명령을 사용하여 SMB 드라이버를 설치합니다.
지정된 차트 리포지토리를 추가하고, 사용 가능한 차트에 대한 최신 정보를 얻고, 지정된 차트 보관 파일을 설치합니다.
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
자세한 내용은 다음 리소스를 참조하세요.
smb.csi.k8s.io 나열해야 하는 다음 kubectl 명령을 실행하여 SMB 드라이버가 설치되어 있는지 확인합니다.
kubectl get csidriver
자세한 내용은 kubectl get을 참조 하세요.
Kubernetes 클러스터를 Azure Arc에 연결
kubeconfig 파일을 가져와 클러스터에 대한 연결을 테스트합니다.
az aks get-credentials \ --resource-group $AKS_CLUSTER_GROUP_NAME \ --name $AKS_NAME \ --admin kubectl get ns
기본적으로 kubeconfig 파일은 경로 ~/.kube/config에 저장됩니다. 이 명령은 예제 Kubernetes 클러스터에 적용되며 다른 종류의 Kubernetes 클러스터에 대해 다릅니다.
자세한 내용은 다음 리소스를 참조하세요.
Kubernetes 클러스터 배포에 따라 다음 환경 변수를 설정하여 Azure Arc 지원 클러스터 및 리소스를 포함하는 Azure 리소스 그룹에 사용할 이름을 제공합니다.
GROUP_NAME="<Azure-Arc-cluster-resource-group-name>"
매개 변수 Required 값 설명 GROUP_NAME 예 <Azure-Arc-cluster-resource-group-name> Azure Arc 지원 클러스터 및 Azure Container Apps 확장, 사용자 지정 위치 및 Azure Container Apps 연결된 환경과 같은 기타 리소스와 함께 사용할 Azure 리소스 그룹의 이름입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.
이 예제에서는 Hybrid-Arc-RG를 사용합니다.Azure Arc 지원 클러스터 및 리소스에 대한 Azure 리소스 그룹을 만듭니다.
az group create \ --name $GROUP_NAME \ --location $LOCATION
자세한 내용은 다음 리소스를 참조하세요.
Azure Arc 지원 Kubernetes 클러스터의 이름을 제공하려면 다음 환경 변수를 설정합니다.
CONNECTED_CLUSTER_NAME="$GROUP_NAME-cluster"
매개 변수 Required 값 설명 CONNECTED_CLUSTER_NAME 예 <Azure-Arc-cluster-resource-group-name-cluster> Azure Arc 지원 클러스터에 사용할 이름입니다. 해당 이름은 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()), 마침표(.)만 포함할 수 있습니다.
이 예제에서는 Hybrid-Arc-RG-cluster를 사용합니다.이전에 만든 Kubernetes 클러스터를 Azure Arc에 연결합니다.
az connectedk8s connect \ --resource-group $GROUP_NAME \ --name $CONNECTED_CLUSTER_NAME
자세한 내용은 다음 리소스를 참조하세요.
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 작업 영역을 만들 수 있습니다.
Log Analytics 작업 영역의 이름을 제공하려면 다음 환경 변수를 설정합니다.
WORKSPACE_NAME="$GROUP_NAME-workspace"
매개 변수 Required 값 설명 WORKSPACE_NAME 예 <Azure-Arc-cluster-resource-group-name-workspace> Log Analytics 작업 영역에 사용할 이름입니다. 이 이름은 리소스 그룹 내에서 고유해야 합니다.
이 예제에서는 Hybrid-Arc-RG-workspace를 사용합니다.Log Analytics 작업 영역을 만듭니다.
az monitor log-analytics workspace create \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME
자세한 내용은 다음 리소스를 참조하세요.
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))
매개 변수 Required 값 설명 LOG_ANALYTICS_WORKSPACE_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 확장을 만들고 설치합니다.
Important
Azure Stack HCI의 AKS에 배포하려면 Azure Container Apps 확장을 만들고 설치하기 전에 HAProxy 또는 사용자 지정 부하 분산 장치를 설정해야 합니다.
다음 환경 변수를 다음 값으로 설정합니다.
EXTENSION_NAME="logicapps-aca-extension" NAMESPACE="logicapps-aca-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
매개 변수 Required 값 설명 EXTENSION_NAME 예 logicapps-aca-extension Azure Container Apps 확장의 이름입니다. Namespace 예 logicapps-aca-ns 리소스를 프로비전하려는 클러스터 네임스페이스입니다. CONNECTED_ENVIRONMENT_NAME 예 <connected-environment-name> Azure Container Apps 연결된 환경에 사용할 고유한 이름입니다. 이 이름은 Azure Container Apps 연결된 환경에서 만들고, 배포하고, 호스트하는 표준 논리 앱의 도메인 이름의 일부가 됩니다. 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로 인코딩된 공유 키입니다. 이 매개 변수를 보호된 설정으로 구성해야 합니다. 자세한 내용은 다음 리소스를 참조하세요.
나중에 사용할 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)
매개 변수 Required 값 설명 EXTENSION_ID 예 <extension-ID> Azure Container Apps 확장의 ID입니다. 자세한 내용은 다음 리소스를 참조하세요.
계속하기 전에 확장이 완전히 설치되기를 기다립니다. 터미널 세션이 설치가 완료될 때까지 기다리도록 하려면 다음 명령을 실행합니다.
az resource wait \ --ids $EXTENSION_ID \ --custom "properties.provisioningState!='Pending'" \ --api-version "2020-07-01-preview"
자세한 내용은 다음 리소스를 참조하세요.
사용자 지정 위치 만들기
다음 환경 변수를 지정된 값으로 설정합니다.
CUSTOM_LOCATION_NAME="my-custom-location" CONNECTED_CLUSTER_ID=$(az connectedk8s show \ --resource-group $GROUP_NAME \ --name $CONNECTED_CLUSTER_NAME \ --query id \ --output tsv)
매개 변수 Required 값 설명 CUSTOM_LOCATION_NAME 예 my-custom-location 사용자 지정 위치에 사용할 이름입니다. CONNECTED_CLUSTER_ID 예 <Azure-Arc-cluster-ID> Azure Arc 지원 Kubernetes 클러스터의 ID입니다. 자세한 내용은 다음 리소스를 참조하세요.
사용자 지정 위치 만들기:
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 사용자로 로그인한 경우 이 단계가 필요합니다.
자세한 내용은 다음 리소스를 참조하세요.
사용자 지정 위치가 성공적으로 만들어졌는지 확인합니다.
az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME
출력에 provisioningState 속성 값이 Succeeded로 설정되지 않은 것으로 표시되면 1분 후에 명령을 다시 실행합니다.
이후 단계에서 사용할 사용자 지정 위치 ID를 저장합니다.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
매개 변수 Required 값 설명 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
자세한 내용은 다음 리소스를 참조하세요.
SQL Server 스토리지 공급자 만들기
하이브리드 배포 모델의 표준 논리 앱 워크플로는 워크플로 및 Azure Logic Apps 런타임에서 사용하는 데이터에 대한 스토리지 공급자로 SQL 데이터베이스를 사용합니다(예: 워크플로 실행 기록, 입력, 출력 등).
SQL 데이터베이스에는 Kubernetes 클러스터와의 인바운드 및 아웃바운드 연결이 필요하므로 이러한 리소스는 동일한 네트워크에 있어야 합니다.
다음 SQL Server 버전을 설정합니다.
- 온-프레미스 SQL Server
- Azure SQL Database
- Azure SQL Managed Instance
- Azure Arc 지원 SQL Server
자세한 내용은 표준 논리 앱 워크플로에 대한 SQL Database 스토리지 설정을 참조 하세요.
SQL 데이터베이스가 Arc 지원 Kubernetes 클러스터 및 SMB 파일 공유와 동일한 네트워크에 있는지 확인합니다.
만든 SQL 데이터베이스에 대한 연결 문자열 찾아서 저장합니다.
아티팩트 스토리지에 대한 SMB 파일 공유 설정
논리 앱(컨테이너 앱) 리소스에 대한 맵, 스키마 및 어셈블리와 같은 아티팩트를 저장하려면 SMB(서버 메시지 블록) 프로토콜을 사용하는 파일 공유가 있어야 합니다.
SMB 파일 공유를 설정하려면 관리자 액세스 권한이 필요합니다.
SMB 파일 공유는 Kubernetes 클러스터 및 SQL 데이터베이스와 동일한 네트워크에 있어야 합니다.
SMB 파일 공유에는 Kubernetes 클러스터와의 인바운드 및 아웃바운드 연결이 필요합니다. Azure 가상 네트워크 제한을 사용하도록 설정한 경우 파일 공유가 Kubernetes 클러스터와 동일한 가상 네트워크 또는 피어된 가상 네트워크에 있는지 확인합니다.
여러 논리 앱에 대해 동일한 정확한 파일 공유 경로를 사용하지 마세요.
각 논리 앱에 대해 별도의 SMB 파일 공유를 사용하거나 해당 폴더가 중첩되지 않는 한 동일한 SMB 파일 공유에서 다른 폴더를 사용할 수 있습니다. 예를 들어 논리 앱이 루트 경로를 사용하지 않고 다른 논리 앱에서 하위 폴더를 사용하도록 합니다.
Visual Studio Code를 사용하여 논리 앱을 배포하려면 Visual Studio Code가 있는 로컬 컴퓨터에서 파일 공유에 액세스할 수 있는지 확인합니다.
Windows에서 SMB 파일 공유 설정
SMB 파일 공유가 파일 공유를 탑재하는 클러스터와 동일한 가상 네트워크에 있는지 확인합니다.
Windows에서 공유하려는 폴더로 이동하여 바로 가기 메뉴를 열고 속성을 선택합니다.
공유 탭에서 공유를 선택합니다.
열리는 상자에서 파일 공유에 액세스할 사용자를 선택합니다.
공유를 선택하고 네트워크 경로에 대한 링크를 복사합니다.
로컬 컴퓨터가 도메인에 연결되지 않은 경우 네트워크 경로의 컴퓨터 이름을 IP 주소로 바꿉니다.
나중에 호스트 이름으로 사용할 IP 주소를 저장합니다.
Azure Files를 SMB 파일 공유로 설정
또는 테스트 목적으로 Azure Files를 SMB 파일 공유로 사용할 수 있습니다. SMB 파일 공유가 파일 공유를 탑재하는 클러스터와 동일한 가상 네트워크에 있는지 확인합니다.
Azure Portal에서 Azure Storage 계정을 만듭니다.
스토리지 계정 메뉴의 데이터 스토리지에서 파일 공유를 선택합니다.
파일 공유 페이지 도구 모음에서 + 파일 공유를 선택하고 SMB 파일 공유에 필요한 정보를 제공합니다.
배포가 완료되면 리소스로 이동을 선택합니다.
파일 공유 메뉴에서 [개요]를 선택합니다(선택하지 않은 경우).
개요 페이지 도구 모음에서 연결을 선택합니다. 연결 창에서 스크립트 표시를 선택합니다.
다음 값을 복사하고 나중에 사용할 수 있도록 안전한 위치에 저장합니다.
- 파일 공유의 호스트 이름(예: mystorage.file.core.windows.net
- 파일 공유 경로
- 사용자 이름 없이
localhost\
- 암호
개요 페이지 도구 모음에서 + 디렉터리 추가를 선택하고 디렉터리에 사용할 이름을 제공합니다. 나중에 사용하려면 이 이름을 저장합니다.
논리 앱 리소스를 배포할 때 SMB 파일 공유 정보를 제공하려면 이러한 저장된 값이 필요합니다.
자세한 내용은 SMB Azure 파일 공유 만들기를 참조 하세요.
SMB 파일 공유 연결 확인
Arc 지원 Kubernetes 클러스터와 SMB 파일 공유 간의 연결을 테스트하고 파일 공유가 올바르게 설정되어 있는지 확인하려면 다음 단계를 수행합니다.
SMB 파일 공유가 동일한 클러스터에 없는 경우 Ping 작업이 Arc 지원 Kubernetes 클러스터에서 SMB 파일 공유가 있는 가상 머신으로 작동하는지 확인합니다. ping 작업이 작동하는지 확인하려면 다음 단계를 수행합니다.
Arc 지원 Kubernetes 클러스터에서 BusyBox 또는 Ubuntu와 같은 Linux 이미지를 실행하는 테스트 Pod 를 만듭니다.
Pod의 컨테이너로 이동하여 다음 Linux 명령을 실행하여 iputils-ping 패키지를 설치합니다.
apt-get update apt-get install iputils-ping
SMB 파일 공유가 올바르게 설정되어 있는지 확인하려면 다음 단계를 수행합니다.
동일한 Linux 이미지가 있는 테스트 Pod에서 mnt/smb라는 경로가 있는 폴더를 만듭니다.
mnt 폴더가 포함된 루트 또는 홈 디렉터리로 이동합니다.
다음 명령을 실행합니다.
- mount -t cifs //{ip-address-smb-computer}/{file-share-name}/mnt/smb -o username={user-name}, password={password}
아티팩트가 올바르게 업로드되는지 확인하려면 SMB 파일 공유 경로에 연결하고 배포 중에 지정한 올바른 폴더에 아티팩트 파일이 있는지 확인합니다.