分享方式:


AzureFunctionOnKubernetes@1 - Kubernetes v1 上的 Azure 函式工作

將 Azure 函式部署至 Kubernetes 叢集。

Syntax

# Azure Function on Kubernetes v1
# Deploy Azure function to Kubernetes cluster.
- task: AzureFunctionOnKubernetes@1
  inputs:
  # Service Connections
    connectionType: 'Kubernetes Service Connection' # 'Azure Resource Manager' | 'Kubernetes Service Connection'. Required. Service connection type. Default: Kubernetes Service Connection.
    dockerRegistryServiceConnection: # string. Required. Docker registry service connection. 
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection. Kubernetes service connection. 
    #azureSubscriptionConnection: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager. Kubernetes cluster. 
  # Commands
    #namespace: # string. Kubernetes namespace. 
    #secretName: # string. Secret Name. 
    #dockerHubNamespace: # string. Docker Hub namespace. 
    appName: # string. Required. Application Name. 
    #functionRootDirectory: # string. Function root directory. 
    #waitForStability: true # boolean. Wait for stability. Default: true.
    #arguments: # string. Arguments.

輸入

connectionType - 服務連線類型
string. 必要。 允許值:Azure Resource ManagerKubernetes Service Connection。 預設值:Kubernetes Service Connection

選取 Kubernetes 服務連線類型。

  • Kubernetes Service Connection - 可讓您提供 KubeConfig 檔案、指定服務帳戶,或使用 Azure 訂 用帳戶選項匯入 AKS 實例。 使用 Azure 訂 用帳戶選項匯入 AKS 實例需要在服務連線設定時間存取 Kubernetes 叢集。
  • Azure Resource Manager - 可讓您選取 AKS 實例。 無法在服務連線設定時間存取 Kubernetes 叢集。

如需詳細資訊,請參閱


dockerRegistryServiceConnection - Docker 登錄服務連線
string. 必要。

選取 Docker 登錄服務連線。


kubernetesServiceConnection - Kubernetes 服務連線
輸入別名: kubernetesServiceEndpointstring. 當 connectionType = Kubernetes Service Connection 時為必要。

選取 Kubernetes 服務連線。


azureSubscriptionConnection - Azure 訂用帳戶
輸入別名: azureSubscriptionEndpointstring. 當 connectionType = Azure Resource Manager 時為必要。

選取包含Azure Container Registry的 Azure Resource Manager 訂用帳戶。注意:若要設定新的服務連線,請從清單中選取 Azure 訂用帳戶,然後按一下 [授權]。 如果您的訂用帳戶未列出,或您想要使用現有的服務主體,您可以使用 [新增] 或 [管理] 按鈕來設定 Azure 服務連線。


azureResourceGroup - 資源群組
string. 當 connectionType = Azure Resource Manager 時為必要。

選取 Azure 資源群組。


kubernetesCluster - Kubernetes 叢集
string. 當 connectionType = Azure Resource Manager 時為必要。

選取 Azure 受控叢集。


namespace - Kubernetes 命名空間
string.

Kubernetes 命名空間。


secretName - 秘密名稱
string.

包含函式組態資料的 Kubernetes 秘密 (例如AzureWebJobsStorage: Azure storage connection string) 。


dockerHubNamespace - Docker Hub命名空間
string.

Docker Hub命名空間。 私人Docker Hub存放庫的必要專案。


appName - 應用程式名稱
string. 必要。

應用程式名稱。 建立的 Kubernetes 物件會使用此名稱。 這應該遵循資源名稱的 Kubernetes 命名慣例。


functionRootDirectory - 函式根目錄
string.

函式根目錄。 應該包含 host.json。 Docker 建置和推送是從這個目錄執行。


waitForStability - 等候穩定性
boolean. 預設值:true

等候 Kubernetes 物件達到所需的狀態。


arguments - 參數
string.

將引數傳遞至 命令。 例如:
--no-docker --service-type NodePort。


工作控制選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性

輸出變數

無。

備註

存取 AKS 時的 Kubernetes Service 連線考慮

您可以使用下列任何選項來建立 Kubernetes 服務連線。

  • KubeConfig
  • 服務帳戶
  • Azure 訂用帳戶

選擇 Kubernetes 服務連線驗證方法的螢幕擷取畫面。

選取 [Azure 訂 用帳戶] 選項時,Azure DevOps 必須在服務連線設定時間存取 Kubernetes。 可能會因為無法建立服務連線的各種原因,例如您 建立了私人叢集 ,或叢集 已停用本機帳戶。 在這些情況下,Azure DevOps 無法在服務連線設定時間連線到您的叢集,而且您會看到停滯的 [載入命名空間 ] 畫面。

選擇 Kubernetes 服務連線驗證對話方塊停滯于載入命名空間的螢幕擷取畫面。

從 Kubernetes 1.24 開始, 預設不會再建立長期保存的權杖。 Kubernetes 不建議使用長期保存的權杖。 因此,使用以 Azure 訂 用帳戶建立的 Kubernetes 服務連線工作無法存取驗證所需的永久權杖,而且無法存取 Kubernetes 叢集。 這也會導致凍結的 [載入命名空間 ] 對話方塊。

使用 Azure Resource Manager 服務連線來存取 AKS

對於 AKS 客戶,Azure Resource Manager服務連線類型提供連線到私人叢集的最佳方法,或已停用本機帳戶的叢集。 當您建立服務連線時,這個方法不相依于叢集連線。 AKS 的存取會延後至管線執行時間,其優點如下:

  • 您可以從可看見叢集的自我裝載或擴展集代理程式,存取 (私人) AKS 叢集。
  • 系統會針對使用 Azure Resource Manager 服務連線的每個工作建立權杖。 這可確保您使用短期權杖連線到 Kubernetes,這是 Kubernetes 建議
  • 即使停用本機帳戶,也可以存取 AKS。

服務連線常見問題

我收到下列錯誤訊息:找不到與服務帳戶相關聯的任何秘密。 這是為什麼?

您正在使用 Kubernetes 服務與 Azure 訂用帳戶連線選項。 我們正在更新這個方法來建立長期保存的權杖。 這預期會在 5 月中提供。 不過,建議您開始使用 Azure 服務連線類型,而不是根據 Kubernetes 指導方針使用長期權杖。

我使用的是 AKS,而不想變更任何專案,是否可以繼續搭配 Kubernetes 服務連線使用工作?

我們正在更新這個方法來建立長期保存的權杖。 這預期會在 5 月中提供。 不過,請注意,此方法是針對 Kubernetes 指導方針

我使用的是 Kubernetes 工作和 Kubernetes 服務連線,但不是 AKS。 我應該擔心嗎?

您工作會如往常一樣繼續運作。

是否會移除 Kubernetes 服務連線類型?

我們的 Kubernetes 工作會使用任何 Kubernetes 叢集,不論其執行位置為何。 Kubernetes 服務連線將繼續存在。

我是 AKS 客戶,而且一切都正常運作,我應該採取動作嗎?

不需要變更任何專案。 如果您在建立期間使用 Kubernetes 服務連線和選取的 Azure 訂用帳戶,您應該留意 使用長期權杖的 Kubernetes 指引

我正在建立 Kubernetes 環境,而且沒有選項可以使用服務連線

如果無法在環境建立期間存取 AKS,您可以使用空的環境,並將輸入設定 connectionType 為 Azure Resource Manager服務連線。

我已使用 Azure Active Directory RBAC 設定 AKS,而我的管線無法運作。 這些更新會解決嗎?

啟用 AAD RBAC 時存取 Kubernetes 與權杖建立無關。 為了防止互動式提示,我們將在未來的更新中支援 kubelogin

規格需求

需求 描述
管線類型 YAML、傳統組建、傳統版本
在 上執行 Agent、DeploymentGroup
要求
Capabilities 此工作不符合作業中後續工作的任何需求。
命令限制 任何
可設定變數 任何
代理程式版本 所有支援的代理程式版本。
工作類別 部署