共用方式為


使用已啟用 Azure Arc 的 Logic Apps (預覽版) 建立及部署以單一租用戶為基礎的邏輯應用程式工作流程

注意

此功能處於預覽狀態,且受限於 Microsoft Azure 預覽版的補充使用規定

使用已啟用 Azure Arc 的 Logic Apps,您可以建立以單一租用戶為基礎的邏輯應用程式工作流程,並將其部署至您操作和管理的 Kubernetes 基礎結構。 您的邏輯應用程式會在對應至已啟用 Azure Arc 的 Kubernetes 叢集的自訂位置中執行,您在此叢集中已安裝並啟用 Azure App Service 平台延伸模組套件組合。

例如,此叢集可能是 Azure Kubernetes Service、裸機 Kubernetes 或其他設定。 延伸模組套件組合讓您在 Kubernetes 叢集上執行平台服務,例如 Azure Logic Apps、Azure App Service 和 Azure Functions。

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

必要條件

本節針對可用來建立和部署邏輯應用程式工作流程的所有方法和工具,說明其通用的必要條件。 特定工具的必要條件會連同其對應的步驟一起出現。

  • 具有有效訂用帳戶的 Azure 帳戶。 如果您沒有 Azure 訂閱,請建立免費帳戶

  • 具有已啟用 Azure Arc 的 Kubernetes 叢集和「自訂位置」的 Kubernetes 環境,您可以在此裝載和執行 Azure Logic Apps、Azure App Service 和 Azure Functions。

    重要

    請確定您針對 Kubernetes 環境、自訂位置和邏輯應用程式使用相同的資源位置。

    當您在 Kubernetes 叢集上建立 App Service 套件組合延伸模組時,您可以變更預設調整行為,以執行邏輯應用程式工作流程。 當您使用 Azure CLI 命令 az k8s-extension create 建立延伸模組時,請務必包含組態設定 keda.enabled=true

    az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"

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

  • 您自己的 Microsoft Entra 身分識別

    如果您的工作流程需要使用任何 Azure 裝載的連線,例如 Office 365 Outlook 或 Azure 儲存體,您的邏輯應用程式必須使用 Microsoft Entra 身分識別進行驗證。 已啟用 Azure Arc 的 Logic Apps 可以在任何基礎結構上執行,但需要具有使用 Azure 裝載連線權限的身分識別。 若要設定此身分識別,請在 Microsoft Entra ID 中建立應用程式註冊,您的邏輯應用程式將使用該註冊做為必要的身分識別。

    注意

    已啟用 Azure Arc 的 Logic Apps 目前不支援受控識別。

    若要使用 Azure CLI 建立 Microsoft Entra 應用程式註冊,請遵循下列步驟:

    1. 使用 az ad sp create 命令建立應用程式註冊。

    2. 若要檢閱所有詳細資料,請執行 az ad sp show 命令。

    3. 從這兩個命令的輸出中,尋找並儲存用戶端識別碼、物件識別碼、租用戶識別碼和用戶端密碼值,以供稍後使用。

    若要使用 Azure 入口網站建立 Microsoft Entra 應用程式註冊,請遵循下列步驟:

    1. 使用 Azure 入口網站建立新的 Microsoft Entra 應用程式註冊。

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

    3. 在註冊功能表上,選取 [概觀],然後儲存用戶端識別碼、租用戶識別碼和用戶端密碼值。

    4. 若要尋找物件識別碼,請在 [本地目錄中的受控應用程式] 欄位旁,選取應用程式註冊的名稱。 從屬性檢視複製物件識別碼。

建立及部署邏輯應用程式

根據您想要使用 Azure CLI 或 Visual Studio Code,選取相符的索引標籤以檢閱特定必要條件和步驟。

開始之前,您需要擁有下列項目:

  • 本機電腦上安裝的最新 Azure CLI 延伸模組。

  • 適用於 Azure CLI 的「預覽版」Azure Logic Apps (標準) 延伸模組。

    雖然已正式推出單一租用戶 Azure Logic Apps,Azure Logic Apps 延伸模組仍然是預覽版。

  • 要在其中建立邏輯應用程式的 Azure 資源群組

    如果您沒有此資源群組,則請遵循步驟來建立資源群組

  • 要與邏輯應用程式搭配使用以用於資料和執行歷程記錄保留的 Azure 儲存體帳戶。

    如果您沒有此儲存體帳戶,可以在建立邏輯應用程式時建立此帳戶,也可以遵循 步驟來建立儲存體帳戶

檢查環境和 CLI 版本

  1. 登入 Azure 入口網站。 執行下列命令來檢查您的訂閱是否作用中:

    az login
    
  2. 執行下列命令,在終端機或命令視窗中檢查您的 Azure CLI 版本:

    az --version
    

    如需最新版本,請參閱最新版本資訊

  3. 如果您沒有最新版本,請遵循適用於您作業系統或平台的安裝指南,更新您的安裝。

安裝適用於 Azure CLI 的 Azure Logic Apps (標準) 延伸模組

藉由執行下列命令,安裝適用於 Azure CLI 的「預覽版」單一租用戶 Azure Logic Apps (標準) 延伸模組:

az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"

建立資源群組

如果您的邏輯應用程式還沒有資源群組,請執行 az group create 命令來建立群組。 除非您已經為 Azure 帳戶設定預設訂用帳戶,否則請務必搭配使用 --subscription 參數與訂用帳戶名稱或識別碼。 否則,您不需要使用 --subscription 參數。

提示

若要設定預設訂用帳戶,請執行下列命令,並將 MySubscription 取代為您的訂用帳戶名稱或識別碼。

az account set --subscription MySubscription

例如,下列命令會在 eastus 位置中使用名為 MySubscription 的 Azure 訂用帳戶來建立名為 MyResourceGroupName 的資源群組:

az group create --name MyResourceGroupName 
   --subscription MySubscription 
   --location eastus

如果成功建立您的資源群組,則輸出會將 provisioningState 顯示為 Succeeded

<...>
   "name": "testResourceGroup",
   "properties": {
      "provisioningState": "Succeeded"
    },
<...>

建立邏輯應用程式

若要建立已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp create 並搭配下列必要參數。 邏輯應用程式、自訂位置和 Kubernetes 環境的資源位置必須全都相同。

參數 描述
--name -n 邏輯應用程式的唯一名稱
--resource-group -g 您要在其中建立邏輯應用程式的資源群組名稱。 如果您還沒有資源群組,請建立資源群組
--storage-account -s 要與儲存體帳戶搭配使用的邏輯應用程式。 針對相同資源群組中的儲存體帳戶,請使用字串值。 針對不同資源群組中的儲存體帳戶,請使用資源識別碼。
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

若要使用私人 Azure Container Registry (ACR) 映像來建立已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp create 並搭配下列必要參數:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   --deployment-container-image-name myacr.azurecr.io/myimage:tag
   --docker-registry-server-password MyPassword 
   --docker-registry-server-user MyUsername

顯示邏輯應用程式詳細資料

若要顯示已啟用 Azure Arc 的邏輯應用程式詳細資料,請執行命令 az logicapp show 並搭配下列必要參數:

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

部署邏輯應用程式

若要使用 Azure App Service 的 Kudu 壓縮部署來部署已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp deployment source config-zip 並搭配下列必要參數:

重要

請確定您的 zip 檔案包含根層級的專案成品。 這些成品包括所有工作流程資料夾、host.json 和 connections.json 這類設定檔,以及任何其他相關檔案。 請不要新增任何額外的資料夾,也不要將任何成品放入專案結構中尚未存在的資料夾中。 例如,此清單會顯示範例 MyBuildArtifacts.zip 檔案結構:

MyStatefulWorkflow1-Folder
MyStatefulWorkflow2-Folder
connections.json
host.json
az logicapp deployment source config-zip --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --src MyBuildArtifact.zip

啟動邏輯應用程式

若要啟動已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp start 並搭配下列必要參數:

az logicapp start --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

停止邏輯應用程式

若要停止已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp stop 並搭配下列必要參數:

az logicapp stop --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

重新啟動邏輯應用程式

若要重新啟動已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp restart 並搭配下列必要參數:

az logicapp restart --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

刪除邏輯應用程式

若要刪除已啟用 Azure Arc 的邏輯應用程式,請執行命令 az logicapp delete 並搭配下列必要參數:

az logicapp delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

設定連線驗證

目前,已啟用 Azure Arc 的 Kubernetes 叢集不支援使用邏輯應用程式的受控識別來驗證受控 API 連線。 當您在工作流程中使用受控連接器時,您可以建立這些 Azure 託管和受控連線。

相反地,您必須在 Microsoft Entra ID 中建立自己的應用程式註冊。 然後,您可以使用此應用程式註冊,做為在已啟用 Azure Arc 的 Logic Apps 中部署和執行的邏輯應用程式身分識別。 如需詳細資訊,請檢閱最上層的必要條件

從您的應用程式註冊中,您需要用戶端識別碼、物件識別碼、租用戶識別碼和用戶端密碼。 如果您使用 Visual Studio Code 來部署,則具有使用 Microsoft Entra 身分識別來設定邏輯應用程式的內建體驗。 如需詳細資訊,請檢閱建立和部署邏輯應用程式工作流程 - Visual Studio Code

不過,如果您使用 Visual Studio Code 進行開發,但使用 Azure CLI 或自動化管線進行部署,請遵循下列步驟。

在您的專案中設定連線和應用程式設定

  1. 在您的邏輯應用程式專案的 connections.json 檔案中,尋找受控連線的 authentication 物件。 將這個物件的內容取代為您先前在最上層必要條件中產生的應用程式註冊資訊:

    "authentication": {
       "type": "ActiveDirectoryOAuth",
       "audience": "https://management.core.windows.net/",
       "credentialType": "Secret",
       "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')",
       "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')",
       "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')"
    } 
    
  2. 在邏輯應用程式專案的 local.settings.json 檔案中,新增您的用戶端識別碼、物件識別碼、租用戶識別碼和用戶端密碼。 部署後,這些設定會成為邏輯應用程式的設定。

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>",
          "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID",
          "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>",
          "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>"
       }
    }
    

重要

對於實際執行情節或環境,請務必使用金鑰保存庫來保護這類祕密和敏感性資訊。

新增存取原則

在單一租用戶 Azure Logic Apps 中,每個邏輯應用程式都有一個身分識別,可透過存取原則授與權限,以使用 Azure 託管和受控連線。 您可以使用 Azure 入口網站或基礎結構部署來設定這些存取原則。

ARM 範本

在 Azure Resource Manager 範本 (ARM 範本) 中,包含「每個」受控 API 連線的下列資源定義,並提供下列資訊:

參數 描述
<connection-name> 受控 API 連線的名稱,例如 office365
<object-ID> 先前從應用程式註冊儲存的 Microsoft Entra 身分識別的物件識別碼
<tenant-ID> 先前從應用程式註冊儲存的 Microsoft Entra 身分識別的租用戶識別碼
{
   "type": "Microsoft.Web/connections/accessPolicies",
   "apiVersion": "2016-06-01",
   "name": "[concat('<connection-name>'),'/','<object-ID>')]",
   "location": "<location>",
   "dependsOn": [
      "[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
   ],
   "properties": {
      "principal": {
         "type": "ActiveDirectory",
         "identity": {
            "objectId": "<object-ID>",
            "tenantId": "<tenant-ID>"
         }
      }
   }
}

如需詳細資訊,請檢閱 Microsoft.Web/connections/accesspolicies (ARM 範本) 文件。

Azure 入口網站

針對此工作,請使用您先前儲存的用戶端識別碼做為「應用程式識別碼」

  1. 在 Azure 入口網站中,尋找並開啟邏輯應用程式。 在邏輯應用程式的功能表上,選取 [工作流程] 下的 [連線],會列出邏輯應用程式資源工作流程中的所有連線。

  2. 在 [API 連線] 下選取連線,在此範例中為 office365

  3. 在連線功能表上的 [設定],選取 [存取原則] > [新增]

  4. 在 [新增存取原則] 窗格的搜尋方塊中,尋找並選取您先前儲存的用戶端識別碼。

  5. 完成後,請選取 [新增]

  6. 針對邏輯應用程式中每個 Azure 裝載的連線重複這些步驟。

自動化 DevOps 部署

若要組建和部署已啟用 Azure Arc 的邏輯應用程式,您可以使用與以單一租用戶為基礎的邏輯應用程式相同的管線和流程。 若要使用 DevOps 管線將基礎結構部署自動化,請在非容器和容器部署的基礎結構層級進行下列變更。

標準部署 (非容器)

如果您使用 Zip 部署進行邏輯應用程式部署,則不需要設定 Docker 登錄來裝載容器映像。 雖然在技術方面,Kubernetes 上的邏輯應用程式是在容器上執行,但已啟用 Azure Arc 的 Logic Apps 會為您管理這些容器。 在此情節中,當您設定基礎結構時,請完成下列工作:

  • 通知資源提供者,您正在 Kubernetes 上建立邏輯應用程式。
  • 在您的部署中包含 App Service 方案。 如需詳細資訊,請檢閱在部署中包含 App Service 方案

在您的 Azure Resource Manager 範本 (ARM 範本) 中,包含下列值:

項目 JSON 屬性 描述
Location location 請務必使用與自訂位置和 Kubernetes 環境相同的資源位置 (Azure 區域)。 邏輯應用程式、自訂位置和 Kubernetes 環境的資源位置必須全都相同。

注意:此值與自訂位置的名稱不同。

應用程式類型 kind 您要部署的應用程式型別,讓 Azure 平台可以識別您的應用程式。 針對 Azure Logic Apps,這項資訊看起來如以下範例所示:kubernetes,functionapp,workflowapp,linux
擴充位置 extendedLocation 針對您的 Kubernetes 環境,此物件需要「自訂位置」"name",而且必須將 "type" 設為 "CustomLocation"
主控方案資源識別碼 serverFarmId 相關 App Service 方案的資源識別碼,格式如下:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

儲存體連接字串 AzureWebJobsStorage 儲存體帳戶的連接字串

重要事項:您必須在 ARM 範本中提供儲存體帳戶的連接字串。 對於實際執行情節或環境,請務必保護這類祕密和敏感性資訊,例如使用金鑰保存庫。

ARM 範本

下列範例描述已啟用 Azure Arc 的 Logic Apps 資源定義樣本,且可在 ARM 範本中使用。 如需詳細資訊,請檢閱 Microsoft.Web/sites template format (JSON) 文件。

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": "kubernetes,functionapp,workflowapp,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "clientAffinityEnabled": false,
      "name": "[parameters('name')]",
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "dotnet"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "Node|12"
      }
   }
}

注意

根據預設,邏輯應用程式的 FUNCTIONS_WORKER_RUNTIME 應用程式設定是 dotnet。 先前的預設值是 node。 不過,dotnet 現在是所有新舊部署之已啟用 Arc 的邏輯應用程式的預設值,即使是具有不同值的應用程式也一樣。 這項變更應該不會影響工作流程的執行階段,而且一切應該都會運作如常。 如需詳細資訊,請參閱 FUNCTIONS_WORKER_RUNTIME 應用程式設定

邏輯應用程式的 APP_KIND 應用程式設定會設定為 workflowapp,但在某些情況下,由於 Azure Resource Manager 範本或其他未包含設定的案例,因此缺少此應用程式設定。 如果某些動作無法運作,例如執行 JavaScript 程式碼動作或工作流程停止運作,請檢查 APP_KIND 應用程式設定是否存在,且設定為 workflowapp。 如需詳細資訊,請參閱 APP_KIND 應用程式設定

容器部署

如果您想要使用容器工具和部署流程,您可以將邏輯應用程式容器化,並部署至已啟用 Azure Arc 的 Logic Apps。 在此情節中,當您設定基礎結構時,請完成下列高階工作:

  • 設定 Docker 登錄來裝載容器映像。

  • 若要將邏輯應用程式容器化,請將下列 Dockerfile 新增至邏輯應用程式專案的根資料夾,遵循組建映像並將其發佈至 Docker 登錄的步驟。例如,您可檢閱教學課程:使用 Azure Container Registry 工作在雲端中組建和部署容器映像

    注意

    如果您使用 SQL 做為儲存體提供者,請確定您使用 Azure Functions 映像 3.3.1 版或更新版本。

    FROM mcr.microsoft.com/azure-functions/node:3.3.1
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
    FUNCTIONS_V2_COMPATIBILITY_MODE=true
    COPY . /home/site/wwwroot
    RUN cd /home/site/wwwroot
    
  • 通知資源提供者,您正在 Kubernetes 上建立邏輯應用程式。

  • 在您的部署範本中,指向您打算部署的 Docker 登錄和容器映像。 單一租用戶 Azure Logic Apps 會使用此資訊,從 Docker 登錄取得容器映像。

  • 在您的部署中包含 App Service 方案。 如需詳細資訊,請檢閱在部署中包含 App Service 方案

在您的 Azure Resource Manager 範本 (ARM 範本) 中,包含下列值:

項目 JSON 屬性 描述
Location location 請務必使用與自訂位置和 Kubernetes 環境相同的資源位置 (Azure 區域)。 邏輯應用程式、自訂位置和 Kubernetes 環境的資源位置必須全都相同。

注意:此值 與您自訂位置名稱不同。

應用程式類型 kind 您要部署的應用程式型別,讓 Azure 平台可以識別您的應用程式。 針對 Azure Logic Apps,這項資訊看起來如以下範例所示:kubernetes,functionapp,workflowapp,container
擴充位置 extendedLocation 針對您的 Kubernetes 環境,此物件需要「自訂位置」"name",而且必須將 "type" 設為 "CustomLocation"
容器名稱 linuxFxVersion 容器的名稱,格式如下:DOCKER\|<container-name>
主控方案資源識別碼 serverFarmId 相關 App Service 方案的資源識別碼,格式如下:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

儲存體連接字串 AzureWebJobsStorage 儲存體帳戶的連接字串

重要事項:當您部署 Docker 容器時,您必須在 ARM 範本中提供儲存體帳戶的連接字串。 對於實際執行情節或環境,請務必保護這類祕密和敏感性資訊,例如使用金鑰保存庫。

如要參考 Docker 登錄和容器映像,請在範本中包含這些值:

項目 JSON 屬性 描述
Docker 登錄伺服器 URL DOCKER_REGISTRY_SERVER_URL Docker 登錄伺服器的 URL
Docker 登錄伺服器 DOCKER_REGISTRY_SERVER_USERNAME 存取 Docker 登錄伺服器的使用者名稱
Docker 登錄伺服器密碼 DOCKER_REGISTRY_SERVER_PASSWORD 存取 Docker 登錄伺服器的密碼

ARM 範本

下列範例描述已啟用 Azure Arc 的 Logic Apps 資源定義樣本,且可在 ARM 範本中使用。 如需詳細資訊,請檢閱 Microsoft.Web/sites template format (ARM 範本) 文件。

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": " kubernetes,functionapp,workflowapp,container",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "name": "[parameters('name')]",
      "clientAffinityEnabled": false,
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "dotnet"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }, 
            {
               "name": "DOCKER_REGISTRY_SERVER_URL",
               "value": "<docker-registry-server-URL>"
            },
            { 
               "name": "DOCKER_REGISTRY_SERVER_USERNAME",
               "value": "<docker-registry-server-username>"
            },
            {
               "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
               "value": "<docker-registry-server-password>"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "DOCKER|<container-name>"
      }
   }
}

注意

先前,FUNCTIONS_WORKER_RUNTIME 設定的預設值是 node。 現在,dotnet 是所有新舊部署之標準邏輯應用程式的預設值,即使是具有不同值的應用程式也一樣。 這項變更應該不會影響工作流程的執行階段,而且一切應該都會運作如常。 如需詳細資訊,請參閱 FUNCTIONS_WORKER_RUNTIME 應用程式設定

在部署中包含 App Service 方案

不論您是標準部署還是容器部署,都必須在部署中包含 App Service 方案。 雖然此方案與 Kubernetes 環境不太相關,但標準和容器部署仍需要 App Service 方案。

其他建立選項雖通常會處理此方案的 Azure 資源佈建,但如果您的部署使用「基礎結構即程式碼」範本,您必須明確建立方案的 Azure 資源。 主控方案資源不會有變化,只有 sku 資訊會變更。

在您的 Azure Resource Manager 範本 (ARM 範本) 中,包含下列值:

項目 JSON 屬性 描述
Location location 請務必使用與自訂位置和 Kubernetes 環境相同的資源位置 (Azure 區域)。 邏輯應用程式、自訂位置和 Kubernetes 環境的資源位置必須全都相同。

注意:此值與自訂位置的名稱不同。

種類 kind 要部署的應用程式服務方案類型,必須是 kubernetes,linux
擴充位置 extendedLocation 針對您的 Kubernetes 環境,此物件需要「自訂位置」"name",而且必須將 "type" 設為 "CustomLocation"
主控方案名稱 name App Service 方案的名稱
方案層級 sku: tier App Service 方案層級,也就是 K1
計劃名稱 sku: name App Service 方案名稱,也就是 Kubernetes

ARM 範本

下列範例描述可用於應用程式部署的 App Service 方案資源定義樣本。 如需詳細資訊,請檢閱 Microsoft.Web/serverfarms template format (ARM 範本) 文件。

{
   "type": "Microsoft.Web/serverfarms",
   "apiVersion": "2020-12-01",
   "location": "<location>",
   "name": "<hosting-plan-name>",
   "kind": "kubernetes,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
   },
   "sku": {
      "tier": "Kubernetes",
      "name": "K1", 
      "capacity": 1
   },
   "properties": {
      "kubeEnvironmentProfile": {
         "id": "[parameters('kubeEnvironmentId')]"
      }
   }
}

變更預設調整行為

已啟用 Azure Arc 的 Logic Apps 會根據後端儲存體佇列中的作業數目,自動管理邏輯應用程式的縮放。 不過,您可以變更預設調整行為。

在邏輯應用程式中,工作流程定義會指定要執行的動作順序。 每當觸發工作流程執行時,Azure Logic Apps 執行階段會為工作流程定義中的每個動作型別建立「作業」。 執行階段接著會將這些作業組織成「作業排序器」。 此排序器會協調工作流程定義的執行作業,但基礎 Azure Logic Apps 作業協調流程引擎會執行每個作業。

對於具狀態工作流程,作業協調流程引擎會使用儲存體佇列訊息來排程作業排序器中的作業。 在幕後,作業發送器 (或發送器背景工作角色執行個體) 會監視這些作業佇列。 協調流程引擎會使用預設最小數目和最大數目的背景工作角色執行個體來監視作業佇列。 針對無狀態工作流程,協調流程引擎會完全將動作狀態保留在記憶體中。

若要變更預設調整行為,您可以指定其他最小數目和最大數目的背景工作角色執行個體來監視作業佇列。

變更調整的必要條件

在已啟用 Azure Arc 的 Kubernetes 叢集上,您先前建立的 App Service 套件組合延伸模組必須將 keda.enabled 屬性設定為 true。 如需詳細資訊,請檢閱最上層的必要條件

變更調整閾值

在已啟用 Azure Arc 的 Logic Apps 中,作業佇列的長度會觸發調整事件,並設定邏輯應用程式調整頻率的閾值。 您可以變更佇列長度,其預設值設定為 20 個作業。 若要減少調整頻率,請增加佇列長度。 若要更常調整,請減少佇列長度。 此流程可能會經歷一些試用和錯誤。

若要變更佇列長度,請在邏輯應用程式專案的根層級 host.json 檔案中,設定 Runtime.ScaleMonitor.KEDA.TargetQueueLength 屬性,例如:

"extensions": {
   "workflow": {
      "settings": {
         "Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
      }
   }
}

變更輸送量上限

在現有的邏輯應用程式資源上,您可以變更背景工作角色執行個體的數目上限,其預設值設定為 2。 此值控制多少背景工作角色執行個體可以監視工作佇列的上限。

若要變更此最大值,請使用 Azure CLI (僅限邏輯應用程式建立) 和 Azure 入口網站。

Azure CLI

若要建立新的邏輯應用程式,請執行命令 az logicapp create 並搭配下列參數:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]

若要設定執行個體計數上限,請使用 --settings 參數:

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --settings "K8SE_APP_MAX_INSTANCE_COUNT=10"

Azure 入口網站

在以單一租用戶為基礎的邏輯應用程式設定中,請依照下列步驟新增或編輯 K8SE_APP_MAX_INSTANCE_COUNT 設定值:

  1. 在 Azure 入口網站中,尋找並開啟以單一租用戶為基礎的邏輯應用程式。

  2. 在邏輯應用程式功能表的 [設定] 下,選取 [設定]

  3. 在 [設定] 窗格的 [應用程式設定] 下,新增應用程式設定或編輯現有值 (如果已新增)。

    1. 選取 [新增應用程式設定],然後新增 K8SE_APP_MAX_INSTANCE_COUNT 設定 (包含您想要的最大值)。

    2. K8SE_APP_MAX_INSTANCE_COUNT 設定編輯現有值。

  4. 當您完成時,請儲存您的變更。

變更輸送量下限

在現有的邏輯應用程式資源上,您可以變更背景工作角色執行個體的數目下限,其預設值設定為 1。 此值控制多少背景工作角色執行個體可以監視工作佇列的下限。 如需高可用性或效能,請增加此值。

若要變更此最小值,請使用 Azure CLI 或 Azure 入口網站。

Azure CLI

針對現有的邏輯應用程式資源,請使用下列參數執行命令 az logicapp scale

az logicapp scale --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --instance-count 5 

若要建立新的邏輯應用程式,請執行命令 az logicapp create 並搭配下列參數:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]

Azure 入口網站

在您的以單一租用戶為基礎的邏輯應用程式設定中,依照下列步驟變更擴增屬性值:

  1. 在 Azure 入口網站中,尋找並開啟以單一租用戶為基礎的邏輯應用程式。

  2. 在邏輯應用程式功能表的 [設定] 下,選取 [擴增]

  3. 在 [擴增] 窗格中,將最小執行個體滑杆拖曳至您想要的值。

  4. 當您完成時,請儲存您的變更。

疑難排解問題

若要取得已部署邏輯應用程式的詳細資訊,請嘗試下列選項:

存取應用程式設定和組態

若要存取您的應用程式設定,請執行命令 az logicapp config appsettings 並搭配下列參數:

az logicapp config appsettings list --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

若要設定應用程式設定,請執行命令 az logicapp config appsettings set 並搭配下列參數。 請務必將 --settings 參數與您的設定名稱和值搭配使用。

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --settings "MySetting=1"

若要刪除應用程式設定,請執行命令 az logicapp config appsettings delete 並搭配下列參數。 請務必將 --setting-names 參數與您想要刪除的設定名稱搭配使用。

az logicapp config appsettings delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --setting-names MySetting

檢視邏輯應用程式屬性

若要檢視應用程式的資訊和屬性,請使用下列參數執行命令 az logicapp show

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

監視工作流程活動

若要檢視邏輯應用程式中工作流程的活動,請遵循下列步驟:

  1. 在 Azure 入口網站中,尋找並開啟您已部署的邏輯應用程式。

  2. 在邏輯應用程式功能表上,選取 [工作流程],然後選取您的工作流程。

  3. 在工作流程功能表上,選取 [監視]

收集記錄

若要取得邏輯應用程式的記錄資料,如果尚未啟用,請在邏輯應用程式上啟用 Application Insights。

下一步