你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:Azure 逻辑应用(标准)
有时,必须设置和管理自己的基础结构,以满足法规合规性、数据隐私或网络限制的特定需求。 Azure 逻辑应用提供混合部署模型,以便你在本地、私有云或公有云场景中部署和托管标准逻辑应用工作流。 如果需要使用本地处理、数据存储和网络访问,此模型支持在部分连接的环境中托管集成解决方案。 通过使用混合选项,你可以自由灵活地为工作流选择最佳环境。
混合部署的工作原理
使用混合部署选项的标准逻辑应用工作流由 Azure 逻辑应用运行时提供支持,该运行时托管在 Azure 容器应用扩展中。 在您的工作流中,任何 内置的运行时本机操作 都在本地运行,这样可以提高吞吐量,从而更高效地访问本地数据源。 如果需要访问非本地数据资源(例如,基于云的服务(如 Microsoft Office 365、Microsoft Teams、Salesforce、GitHub、LinkedIn 或 ServiceNow),则可以从 Azure 中托管的 1,400 多个连接器 中选择作以包含在工作流中。 有关更多信息,请参阅托管(共享)连接器。 虽然需要有互联网连接才能在 Azure 门户中管理逻辑应用,但该平台的半连接特性可以便于你应对任何临时的互联网连接问题。
例如,如果你是用的是本地方案,以下体系结构概述显示了标准逻辑应用工作流在混合模型中的托管和运行位置。 部分连接的环境包括用于托管和使用标准逻辑应用的以下资源,系统会将这些应用部署为 Azure 容器应用资源:
- 已启用 Azure Arc 的 Azure Kubernetes 服务 (AKS) 群集
- 用于本地存储工作流运行历史记录、输入和输出的 SQL 数据库,用于处理
- 用于本地存储工作流使用的项目的服务器消息块 (SMB) 文件共享
对于托管,还可以 在 Azure 本地群集上设置和使用已启用 Azure Arc 的 Kubernetes 群集 ,或者在 Windows Server 上设置和使用已启用 Azure Arc 的 Kubernetes 群集。
混合部署模型结合了本地和云功能,为各种需求提供灵活的集成解决方案。 例如,混合逻辑应用资源可以根据不断变化的工作负荷有效地调整资源。 这种动态缩放有助于管理计算成本,方法是在高峰需求期间增加容量,减少使用量时减少资源。
有关详细信息,请参阅以下文档:
- 什么是 Azure Kubernetes 服务?
- Azure Kubernetes 服务 (AKS) 的核心概念
- Azure Arc 启用的 Kubernetes 群集的自定义位置
- 什么是 Azure 容器应用?
- Azure Arc 上的 Azure 容器应用
- 基于 Kubernetes 的 Event-Driven 自动缩放的动态缩放模型和体系结构(KEDA)
本操作指南介绍如何在基础结构中设置必要的本地资源,以便你可以使用混合部署模型创建、部署和托管标准逻辑应用工作流。
限制
以下部分介绍混合部署选项的限制:
限度 | 说明 |
---|---|
使用断开连接的运行时进行数据日志记录 | 在部分连接模式下,Azure 逻辑应用运行时最多可以保持断开连接 24 小时,并且仍保留数据日志。 但是,超过此持续时间的任何日志记录数据可能会丢失。 |
支持的 Azure 区域 | 混合部署目前可用,仅在以下 Azure 区域中受支持: - 美国中部 -东亚 - 美国东部 - 美国中北部 -东南亚 - 瑞典中部 - 英国南部 - 西欧 - 美国西部 |
支持的已启用 Azure Arc 的 Kubernetes 群集 | - 已启用 Azure Arc 的 Kubernetes 群集 - Azure Local(以前称为 Azure Stack HCI)上已启用 Azure Arc 的 Kubernetes 群集 - Windows Server 上已启用 Azure Arc 的 Kubernetes 群集 |
单租户 Azure 逻辑应用(标准)和相关 Azure 服务中不支持的功能 | - 部署槽位 - Azure 业务流程跟踪 - Azure 门户中 支持 + 故障排除 下的资源运行状况 - 连接器操作的托管标识身份验证。 有关详细信息,请参阅 创建混合部署工作流的限制。 |
先决条件
Azure 帐户和订阅。 如果没有订阅,可以注册免费的 Azure 帐户。
基本了解核心 AKS 概念
已启用 Azure Arc 的 Kubernetes 上的 Azure 容器应用的技术需求,包括访问公共或私有容器注册表,例如 Azure 容器注册表。
账单管理
有关计费工作原理的信息,请参阅标准(混合部署)。
创建 Kubernetes 群集
在将标准逻辑应用作为本地资源部署到 Azure 容器应用连接环境中启用 Azure Arc 的 Kubernetes 群集之前,首先需要一个 Kubernetes 群集。 稍后需要将此群集连接到 Azure Arc,以便你拥有启用 Azure Arc 的 Kubernetes 群集。
Kubernetes 群集需要与你稍后创建为存储提供程序的 SQL 数据库以及稍后为工件存储创建的服务器消息块文件共享建立入站和出站连接。 这些资源必须存在于同一网络中。
注意
还可以在 Azure Local 上创建 Kubernetes 群集或在 Windows Server 上创建 Kubernetes 群集,并应用本指南中的步骤将群集连接到 Azure Arc 并设置连接环境。 有关 Windows Server 上的 Azure 本地和 AKS 的详细信息,请参阅以下资源:
为要创建的 Kubernetes 群集设置以下环境变量:
SUBSCRIPTION="<Azure-subscription-ID>" AKS_CLUSTER_GROUP_NAME="<aks-cluster-resource-group-name>" AKS_NAME="<aks-cluster-name>" LOCATION="eastus"
参数 必选 值 说明 订阅 是 <Azure-订阅-ID> 你的 Azure 订阅的 ID AKS_CLUSTER_GROUP_NAME 是 <aks-cluster-resource-group-name> 要用于 Kubernetes 群集的 Azure 资源组的名称。 该名称在各个区域中必须独一无二,并且只能包含字母、数字、连字符 (-)、下划线 (_)、括号 (()) 和句点 (.)。
此示例使用了Hybrid-RG。AKS_NAME 是 <aks-cluster-name> Kubernetes 群集的名称。 LOCATION 是 <Azure 区域> 支持在启用 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 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。
注意
可以在本节及后续步骤中找到有关在名为 EnvironmentSetup.ps1 的脚本中创建连接环境的步骤,该脚本位于名为 Azure/logicapps 的 GitHub 存储库中。 可以修改和使用此脚本来满足你的要求和方案。
脚本未签名,因此在运行脚本之前,请以管理员身份运行以下 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.Kubernetes --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
有关更多信息,请参阅以下资源:
通过获取 kubeconfig 文件来测试与群集的连接:
az aks get-credentials \ --resource-group $AKS_CLUSTER_GROUP_NAME \ --name $AKS_NAME \ --admin kubectl get ns
默认情况下,kubeconfig 文件会保存到路径 ~/.kube/config。此命令适用于我们的示例 Kubernetes 群集,对于其他类型的 Kubernetes 群集则有所不同。
有关更多信息,请参阅以下资源:
安装名为 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
有关更多信息,请参阅以下资源:
通过运行以下 kubectl 命令确认 SMB 驱动程序已安装就绪,该命令应列出 smb.csi.k8s.io:
kubectl get csidriver
有关详细信息,请参阅 kubectl get。
将 Kubernetes 群集连接到 Azure Arc
根据 Kubernetes 群集部署,设置以下环境变量,为包含已启用 Azure Arc 的群集和资源的 Azure 资源组提供一个名称:
GROUP_NAME="<Azure-Arc-cluster-resource-group-name>"
参数 必选 值 说明 GROUP_NAME 是 <Azure-Arc-cluster-resource-group-name> 要与已启用 Azure Arc 的群集和其他资源(例如 Azure 容器应用扩展、自定义位置和 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"
参数 必选 值 说明 CONNECTED_CLUSTER_NAME 是 <Azure-Arc-cluster-resource-group-name>-cluster 要用于已启用 Azure Arc 的群集的名称。 该名称在各个区域中必须独一无二,并且只能包含字母、数字、连字符 (-)、下划线 (_)、括号 (()) 和句点 (.)。
在此示例中为 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,请在一分钟后再次运行该命令。
有关更多信息,请参阅以下资源:
创建一个 Azure Log Analytics 工作区
(非必要,但建议)创建 Azure Log Analytics 工作区,该工作区提供对已启用 Azure Arc 的 Kubernetes 群集中运行的应用的日志的访问权限。
设置以下环境变量,为 Log Analytics 工作区指定名称:
WORKSPACE_NAME="$GROUP_NAME-workspace"
参数 必选 值 说明 WORKSPACE_NAME 是 <Azure-Arc-cluster-resource-group-name>-工作区 要用于 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))
参数 必选 值 说明 LOG_ANALYTICS_WORKSPACE_ID 是 Log Analytics 工作区的 ID。 LOG_ANALYTICS_WORKSPACE_ID_ENC 是 你的 Log Analytics 工作区的 ID 是经过 base64 编码的。 LOG_ANALYTICS_KEY 是 Log Analytics 工作区的共享密钥。 LOG_ANALYTICS_ENC 是 Log Analytics 工作区的 base64 编码共享密钥。 有关更多信息,请参阅以下资源:
创建并安装 Azure 容器应用扩展
现在,使用已启用 Azure Arc 的 Kubernetes 群集创建并安装 Azure 容器应用扩展作为本地资源。
重要
如果要部署到 Azure 本地上的 AKS,请在创建并安装 Azure 容器应用扩展之前,请确保 设置 HAProxy 或自定义负载均衡器。
将以下环境变量设置为以下值:
EXTENSION_NAME="logicapps-aca-extension" NAMESPACE="logicapps-aca-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
参数 必选 值 说明 EXTENSION_NAME 是 logicapps-aca-extension Azure 容器应用扩展的名称。 Namespace 是 logicapps-aca-ns 要在其中预配资源的群集命名空间。 CONNECTED_ENVIRONMENT_NAME 是 <连接环境名称> 用于 Azure 容器应用连接环境的唯一名称。 此名称属于在 Azure 容器应用连接环境中创建、部署和托管的标准逻辑应用的域名。 为已启用 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 是 为自定义位置创建的服务帐户。
建议:将值设置为 default。appsNamespace 是 用于创建应用定义和修订的命名空间。 此值必须与 Azure 容器应用扩展的发布命名空间匹配。 clusterName 是 要为扩展创建的 Azure 容器应用扩展 Kubernetes 环境的名称。 keda.enabled 是 启用 Kubernetes 事件驱动的自动缩放 (KEDA)。 此值为必要项,必须设置为 true。 keda.logicAppsScaler.enabled 是 在 KEDA 中启用 Azure 逻辑应用服务扩展器。 此值为必要项,必须设置为 true。 keda.logicAppsScaler.replicaCount 是 要启动的逻辑应用缩放程序的初始数量。 默认值设置为 1。 如果环境中不存在逻辑应用,则此值将增大或减小到 0。 containerAppController.api.functionsServerEnabled 是 启用负责将逻辑应用工作流触发器转换为 KEDA 缩放对象的服务。 此值为必要项,必须设置为 true。 envoy.externalServiceAzureILB 是 确定 envoy 是充当内部负载均衡器还是公开负载均衡器。
- true:envoy 充当内部负载均衡器。 Azure 逻辑应用运行时只能在专用网络中访问。
- false:envoy 充当公开负载均衡器。 可以通过公用网络访问 Azure 逻辑应用运行时。functionsProxyApiConfig.enabled 是 启用代理服务,以便从 Azure 门户通过 API 访问 Azure 逻辑应用运行时。 此值为必要项,必须设置为 true。 envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group 是必要项,但仅当基础群集是 Azure Kubernetes 服务时才需要。 Kubernetes 群集所在的资源组的名称。 logProcessor.appLogs.destination 否 要用于应用程序日志的目标。 该值可以是 log-analytics 或 none,表示禁用日志记录。 logProcessor.appLogs.logAnalyticsConfig.customerId 是的,但仅当logProcessor.appLogs.destination设置为log-analytics时。 你的 Log Analytics 工作区的 ID 是经过 base64 编码的。 请确保将此参数配置为受保护的设置。 logProcessor.appLogs.logAnalyticsConfig.sharedKey 是的,但仅当logProcessor.appLogs.destination设置为log-analytics时。 Log Analytics 工作区的 base64 编码共享密钥。 请确保将此参数配置为受保护的设置。 有关更多信息,请参阅以下资源:
保存 Azure 容器应用扩展的 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 容器应用扩展的 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)
参数 必选 值 说明 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,请在一分钟后再次运行该命令。
保存自定义位置 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 容器应用连接环境
现在,为要使用的标准逻辑应用创建 Azure 容器应用连接环境。
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 本地,则必须手动更新群集的 CoreDNS 配置。 此步骤将新的 配置映射 添加到 Azure Kubernetes 命名空间。 相比之下,Azure 逻辑应用会在 Azure 中托管 Kubernetes 群集时自动完成此步骤。 但是,对于托管在其他位置的群集,必须手动完成此步骤。
有关详细信息,请参阅以下文档:
- 适用于 Kubernetes 的 CoreDNS
- 自定义 Azure Kubernetes 服务的 CoreDNS
- Kubernetes 中的 ConfigMaps
- 命名空间 - Azure Kubernetes 服务的核心概念
若要更新 CoreDNS 配置,请使用方案的选项运行以下 Azure CLI 命令:
az containerapp arc setup-core-dns
参数 | 必选 | 说明 |
---|---|---|
--distro |
是 | 用于更新 CoreDNS 配置的受支持分发版。 允许的值: AksAzureLocal |
--kube-config |
否 | (kubeconfig 文件)的路径,其中包含用于访问 Kubernetes 群集的配置参数。 |
--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 本地设置 CoreDNS 配置:
az containerapp arc setup-core-dns --distro AksAzureLocal --kube-config <kubeconfig-file-path> --kube-context <kubeconfig-context-name>
创建 SQL Server 存储提供程序
混合部署模型中的标准逻辑应用工作流使用 SQL 数据库作为工作流和 Azure 逻辑应用运行时使用的数据的存储提供程序,例如工作流运行历史记录、输入、输出等。
SQL 数据库需要与 Kubernetes 群集建立入站和出站连接,因此这些资源必须存在于同一网络中。
设置以下任一 SQL Server 版本:
- 本地 SQL Server
- Azure SQL 数据库
- Azure SQL 托管实例
- 通过 Azure Arc 启用的 SQL Server
有关详细信息,请参阅为标准逻辑应用工作流设置 SQL 数据库存储。
确认 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 文件设置为 SMB 文件共享
或者,出于测试目的,可以将 Azure 文件用作 SMB 文件共享。 请确保 SMB 文件共享与装载文件共享的群集位于同一虚拟网络中。
在存储帐户菜单的“数据存储”下,选择“文件共享”。
在“文件共享”页面工具栏中,选择“+ 文件共享”,并提供 SMB 文件共享所需的信息。
部署完成后,选择“转到资源”。
在文件共享菜单上,选择“概述”(如果未选中)。
在概述页面工具栏上,选择连接。 在“连接”窗格中,选择“显示脚本”。
复制以下值并将其保存在安全的地方供以后使用:
- 文件共享的主机名,例如 mystorage.file.core.windows.net
- 文件共享路径
- 不含
localhost\
的用户名 - 密码
在“概述”页工具栏上,选择“+ 添加目录”,并提供用于目录的名称。 保存此名称以供以后使用。
部署逻辑应用资源时,需要这些已保存的值来提供 SMB 文件共享信息。
有关详细信息,请参阅创建 SMB Azure 文件共享。
确认 SMB 文件共享连接
若要测试已启用 Arc 的 Kubernetes 群集与 SMB 文件共享之间的连接,并检查文件共享是否已正确设置,请执行以下步骤:
如果 SMB 文件共享不在同一群集上,请确认 ping 操作是否适用于已启用 Arc 的 Kubernetes 群集,以及具有 SMB 文件共享的虚拟机。 若要检查 ping 操作是否正常运行,请执行以下步骤:
在已启用 Arc 的 Kubernetes 群集中,创建运行任何 Linux 映像(例如 BusyBox 或 Ubuntu)的测试 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 文件共享路径,并检查项目文件是否存在于部署期间指定的正确文件夹中。
优化混合部署的性能
若要最大程度地提高混合部署中标准逻辑应用的效率和性能,需要了解如何分析和评估 CPU、内存分配和缩放机制等关键方面,以便获取有关优化的重要见解。 其他关键元素包括基础 Kubernetes 基础结构、SQL 配置和缩放设置,这可能会显著影响工作流效率和整体性能。 有关详细信息,请参阅 混合部署性能分析和优化建议。