共用方式為


在您自己的基礎結構上建立混合式部署的標準邏輯應用程式工作流程 (預覽)

適用於:Azure Logic Apps (標準)

注意

這項功能處於預覽狀態,會產生使用量費用,並受限於 Azure 預覽版Microsoft補充使用規定。

針對您需要使用、控制及管理自己的基礎結構的案例,您可以使用 Azure Logic Apps 中的混合式部署模型來建立標準邏輯應用程式工作流程。 此模型提供針對需要本機處理、記憶體和網路存取之部分連線環境建置和裝載整合解決方案的功能。 您的基礎結構可以包含內部部署系統、私人雲端和公用雲端。 使用混合式模型時,您的標準邏輯應用程式工作流程是由 Azure Logic Apps 運行時間所提供,該運行時間裝載於內部部署,作為 Azure Container Apps 延伸模組的一部分。

如需架構概觀,其中顯示標準邏輯應用程式工作流程裝載並執行於部分連線的環境中,請參閱 設定標準邏輯應用程式混合式部署的基礎結構需求。

本操作指南說明如何在您設定裝載應用程式所需的內部部署資源之後,使用混合式部署模型來建立及部署標準邏輯應用程式工作流程。

限制

  • 標準邏輯應用程式的混合式部署僅適用於 與已啟用 Azure Arc 的 AKS 上的 Azure Container Apps 相同的區域。

  • 此預覽版本中目前無法使用下列功能:

    • 受控識別驗證
    • 透過 SAP 內建連接器存取 SAP
    • 使用 .NET Framework 的 C# 自訂程式代碼,以及此邏輯應用程式中名為 呼叫本機函式的內建動作
    • 自定義程式代碼的 XSLT 1.0

    已啟用 Azure Arc 的 Kubernetes 叢集目前不支援受控 API 連線的受控識別驗證。 相反地,您必須使用 entra ID Microsoft建立自己的應用程式註冊。 如需詳細資訊, 請遵循本指南稍後的這些步驟。

  • 某些以函式為基礎的觸發程式,例如 Azure Blob、Cosmos DB 和事件中樞,需要連線到與您的標準邏輯應用程式相關聯的 Azure 記憶體帳戶。 如果您使用任何函式型觸發程式,請在 Azure 入口網站 或邏輯應用程式專案的 Visual Studio Code local.settings.json 檔案中,於標準邏輯應用程式應用程式的環境變數中新增下列應用程式設定,並提供記憶體帳戶 連接字串:

    "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 入口網站搜尋方塊中輸入邏輯應用程式,然後選取 [邏輯應用程式]

  2. 在 [邏輯應用程式] 頁面工具列上,選取 [新增]

  3. 在 [建立邏輯應用程式] 頁面的 [標準] 下,選取 [混合式]。

  4. 在 [ 建立邏輯應用程式 (混合式)] 頁面上,提供下列資訊:

    屬性 必填 Description
    訂用帳戶 Yes <Azure-訂閱-名稱> 您的 Azure 訂用帳戶名稱。

    此範例使用隨用隨付
    資源群組 Yes <Azure-資源-群組-名稱> 您在 其中建立混合式應用程式和相關資源的 Azure 資源群組 。 此名稱在各區域中必須是唯一的,而且只能包含字母、數字、連字號 (-)、底線 (_)、括弧(()) 和句點 (.)。

    此範例會建立名為 Hybrid-RG 的資源群組。
    邏輯應用程式名稱 Yes <logic-app-name> 邏輯應用程式名稱,在區域之間必須是唯一的,而且只能包含小寫字母、數位或連字元 (-)。

    此範例使用 my-logic-app-hybrid
    區域 Yes <Azure-region> 在已啟用 Azure Arc 的 AKS 上支援 Azure 容器應用程式的 Azure 區域

    此範例使用美國東部
    容器應用程式連線環境 Yes <connected-environment-name> 已啟用 Arc 的 Kubernetes 叢集,您建立為邏輯應用程式的部署環境。 如需詳細資訊,請參閱 教學課程:在已啟用 Azure Arc 的 Kubernetes 上啟用 Azure Container Apps。
    設定記憶體設定 Yes 已啟用或停用 繼續前往 [建立邏輯應用程式(混合式)] 頁面上的 [記憶體] 索引標籤。

    下列範例顯示 Azure 入口網站 中具有範例值的邏輯應用程式建立頁面:

    顯示 Azure 入口網站和邏輯應用程式建立頁面的螢幕快照。

  5. 在 [ 記憶體 ] 頁面上,提供您先前設定之記憶體提供者和 SMB 檔案共用的下列資訊:

    屬性 必填 Description
    SQL 連接字串 Yes <sql-server-connection-string> 您先前儲存的 SQL Server 連接字串。 如需詳細資訊,請參閱 建立 SQL Server 記憶體提供者
    主機名稱 Yes <file-share-host-name> SMB 檔案共用的主機名。
    檔案共享路徑 Yes <file-share-path> SMB 檔案共用的檔案共享路徑。
    使用者名稱 Yes <file-share-user-name> SMB 檔案共享的用戶名稱。
    密碼 Yes <file-share-password> SMB 檔案共享的密碼。
  6. 當您完成時,請選取 [檢閱 + 建立]。 確認提供的資訊,然後選取 [ 建立]。

  7. 在 Azure 完成部署之後,選取 [移至資源]。

    此螢幕快照顯示已建立為容器應用程式之混合式部署的標準邏輯應用程式 Azure 入口網站。

    注意

    在入口網站中,有數個已知問題存在於使用混合式裝載選項的標準邏輯應用程式周圍。 這些邏輯應用程式會出現在容器應用程式標籤中,這與使用工作流程服務方案或 App Service 環境 V3 裝載選項的標準邏輯應用程式不同。 如需詳細資訊,請參閱已知問題和疑難解答 - Azure 入口網站

  8. 在 [Azure 入口網站] 的資源功能表上,於 [工作流程] 底下選取 [工作流程]。

  9. 在 [ 工作流程 ] 頁面工具列上,選取 [新增 ] 以新增空白的具狀態或無狀態工作流程。

  10. 在設計工具開啟之後,藉由新增觸發程式和動作來建置您的工作流程。

    如需詳細資訊,請參閱使用觸發程序和動作建置工作流程

    注意

    具有混合式裝載選項的標準邏輯應用程式會在您儲存變更至子工作流程時,自動建立新的修訂,這是來自 Azure Container Apps 的版本設定概念。 此修訂可能需要一些時間才能啟動,這表示在您儲存任何變更之後,您可能想要等候數分鐘,再測試工作流程。

    如果您的變更仍然未出現在工作流程中,您可以檢查修訂是否存在:

    1. 在資源功能表上的 [修訂] 底下,選取 [修訂和複本]。

    2. 在 [ 修訂和複 本] 頁面上的 [使用中修訂 ] 索引卷標上,檢查清單上是否顯示新的修訂。

    如需詳細資訊,請參閱以下資源:

變更 Azure 入口網站 中的CPU和記憶體配置

若要編輯標準邏輯應用程式資源的 CPU 和記憶體設定,請遵循下列步驟:

  1. Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在資源功能表上的 [設定] 底下,選取 [容器]。

  3. 在 [ 容器] 頁面工具列上,選取 [ 編輯和部署],這會開啟 [ 編輯容器 ] 窗格。

  4. 在 [屬性] 索引標籤的 [容器資源配置] 底下,變更下列值以符合您的案例:

    屬性 數值 Description
    CPU 核心 - 預設值:1
    - 最小值:0.25
    - 最大值:2
    決定要指派給容器實例的CPU核心。 您可以將此值增加 0.25 個核心,上限為最大值。 此邏輯應用程式的所有容器實例總數限製為 2 個核心。
    記憶體 - 預設值:2
    - 最小值:0.1
    - 最大值:4
    決定要指派給容器實例的記憶體容量(Gi)。 您可以將此值增加 0.1 Gi 到最大值。 此邏輯應用程式所有容器實例的總容量限製為4 Gi。
  5. 完成時,請選取 [儲存]

變更 Azure 入口網站 中的複本調整

您可以控制部署以回應觸發程式事件之復本範圍的自動調整。 復本是邏輯應用程式資源修訂或版本的新實例。 若要變更此範圍的最小值和最大值,您可以修改縮放規則,以判斷觸發縮放的事件類型。 如需詳細資訊,請參閱在 Azure 容器應用程式中設定調整規則 (機器翻譯)。

  1. Azure 入口網站中,開啟您的標準邏輯應用程式資源。

  2. 在資源功能表上的 [設定] 底下,選取 [調整]。

  3. 在 [調整] 頁面上的 [調整規則] 設定,變更下列值以符合您的案例:

    屬性 數值 Description
    最小復本 - 預設值:1
    - 最小值:0
    - 最大值:1000
    決定在任何指定時間允許修訂的複本數目下限。 此值會覆寫縮放規則,而且必須小於複本數目上限。
    最大複本 - 預設值:30
    - 最小值:0
    - 最大值:1000
    決定在任何指定時間允許修訂的複本數目上限。 此值會覆寫縮放規則。
  4. 完成時,請選取 [儲存]

在 Azure 入口網站 中控制邏輯應用程式的輸入流量

您可以啟用輸入,將邏輯應用程式公開至公用 Web、虛擬網路和其他邏輯應用程式。 Azure 會透過一組規則強制執行輸入設定,以控制將外部和內部流量路由傳送至邏輯應用程式。 啟用輸入時,您不需要建立 Azure Load Balancer、公用 IP 位址或任何其他 Azure 資源來啟用內送的 HTTP 要求或 TCP 流量。 如需詳細資訊,請參閱 容器應用程式中的輸入。

注意

當您啟用輸入時,所有流量預設都會導向至最新的修訂。 移至 [修訂管理] 頁面以變更流量設定。

  1. 在資源功能表上的 [設定] 底下,選取 [輸入]。

  2. 在 [輸入] 頁面上,選取 [輸入] 旁的 [已啟用] 方塊

  3. 根據您的案例,設定其餘選項。

    如需詳細資訊,請參閱下列文件:

設定受控 API 連線的驗證

若要在已啟用 Azure Arc 的 Kubernetes 叢集上裝載的標準邏輯應用程式工作流程中驗證受控 API 連線,您必須使用 Microsoft Entra ID 建立自己的應用程式註冊。 然後,您可以將此應用程式註冊的值新增為標準邏輯應用程式資源中的環境變數,以改為驗證 API 連線。

使用 Microsoft Entra 識別碼建立應用程式註冊

Azure 入口網站

  1. Azure 入口網站 中,遵循快速入門:向 Microsoft 身分識別平台 註冊應用程式,以建立應用程式註冊。

  2. 建立完成之後,請在入口網站中尋找新的應用程式註冊。

  3. 在資源功能表上,選取 [概觀],然後儲存下列值,以供稍後進行連線驗證:

    • 用戶端識別碼
    • 租用戶識別碼
    • 用戶端密碼
  4. 針對物件識別碼,請遵循下列步驟:

    1. 在 [概 觀] 頁面上,針對您的應用程式註冊選取 [本機目錄 ] 連結中的 [受控應用程式],如下所示:

      此螢幕快照顯示本機目錄中受控應用程式已選取連結的應用程式註冊。

    2. 在開啟的頁面上,複製並儲存 物件標識碼

      顯示應用程式註冊的螢幕快照,其中包含選取的物件標識符。

  5. 現在, 將儲存的值新增為環境變數 至標準邏輯應用程式資源。

Azure CLI

  1. 若要建立應用程式註冊,請使用 az ad sp create 命令

  2. 若要檢閱所有屬性,請使用 az ad sp show 命令

  3. 在這兩個指令的輸出中,尋找並儲存下列值,稍後您需要進行連線驗證:

    • Client ID
    • 物件識別碼
    • 租用戶識別碼
    • 用戶端密碼
  4. 現在, 將儲存的值新增為環境變數 至標準邏輯應用程式資源。

將應用程式註冊值新增至標準邏輯應用程式

  1. Azure 入口網站中,移至您的標準邏輯應用程式資源。

  2. 在資源功能表上的 [設定] 底下,選取 [容器],然後選取 [環境變數] 索引標籤。

    如需應用程式設定和主機設定的詳細資訊,請參閱 編輯應用程式設定和主機設定

  3. 在工具列上,選取 [ 編輯並部署]。

  4. 在 [ 編輯容器 ] 窗格中,選取 [環境變數],然後選取 [ 新增]。

  5. 在下表中,新增具有指定值的每個環境變數:

    環境變數
    WORKFLOWAPP_AAD_CLIENTID <my-client-ID>
    WORKFLOWAPP_AAD_OBJECTID <my-object-ID>
    WORKFLOWAPP_AAD_TENANTID <my-tenant-ID>
    WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret>
  6. 完成時,請選取 [儲存]

儲存和參考用戶端識別碼和客戶端密碼

您可以將用戶端識別碼和客戶端密碼值儲存在邏輯應用程式資源中做為秘密,然後改為在 [環境變數] 索引卷標上參考這些值。

  1. 在 Azure 入口網站中,前往您的邏輯應用程式資源。

  2. 在資源功能表上的 [設定] 底下,選取 [秘密]。

  3. 在工具列上,選取 [新增]

  4. 在 [ 新增秘密] 窗格中,為每個秘密 提供下列資訊,然後選取 [ 新增]:

    機碼
    WORKFLOWAPP_AAD_CLIENTID <my-client-ID>
    WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret>

已知問題與疑難排解

Azure 入口網站

  • 您的標準邏輯應用程式會部署並顯示為 Azure Container Apps 資源,但類型會顯示為邏輯應用程式(混合式)。

  • Azure 會在 Container Apps 資源清單中包含您的標準邏輯應用程式,而不是 Logic Apps 資源清單。

  • 您的 Azure Container Apps 連線環境會將您的標準邏輯應用程式列為具有名為混合式邏輯應用程式的應用程式類型

  • 若要在儲存工作流程之後反映設計工具中的變更,您可能需要偶爾重新整理設計工具。

已啟用 Arc 的 Kubernetes 叢集

在罕見的情況下,您可能會注意到叢集中的記憶體使用量很高。 若要避免此問題,請相應放大或新增節點集區的自動調整。

函式主機未執行

部署標準邏輯應用程式之後,請確認您的應用程式正在正確執行。

  1. 在 Azure 入口網站 中,移至邏輯應用程式的容器應用程式資源。

  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 入口網站 中,移至您的 Kubernetes 服務實例。

  2. 在實例功能表上的 [設定] 底下,選取 [節點集區]。

  3. 在 [ 節點工具] 頁面工具列上,選取 [ + 新增節點集區]。

如需詳細資訊,請參閱下列文件:

未安裝 SMB 容器記憶體介面 (CSI) 驅動程式

執行先前的 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
help 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

如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 上的容器記憶體介面 (CSI) 驅動程式。