共用方式為


HelmDeploy@0 - 封裝及部署 Helm 圖表 v0 工作

執行 helm 命令,使用此工作在 Azure Container Service 中部署、設定或更新 Kubernetes 叢集。

語法

# Package and deploy Helm charts v0
# Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands.
- task: HelmDeploy@0
  inputs:
  # Kubernetes Cluster
    #connectionType: 'Azure Resource Manager' # 'Azure Resource Manager' | 'Kubernetes Service Connection' | 'None'. Required when command != logout && command != package && command != save. Connection Type. Default: Azure Resource Manager.
    #azureSubscription: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Kubernetes cluster. 
    #useClusterAdmin: false # boolean. Optional. Use when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Use cluster admin credentials. Default: false.
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection && command != logout && command != package && command != save. Kubernetes Service Connection. 
    #namespace: # string. Optional. Use when command != logout && command != package && command != save. Namespace. 
  # Azure Container Registry
    #azureSubscriptionForACR: # string. Alias: azureSubscriptionEndpointForACR. Required when command == save. Azure subscription for Container Registry. 
    #azureResourceGroupForACR: # string. Required when command == save. Resource group. 
    #azureContainerRegistry: # string. Required when command == save. Azure Container Registry. 
  # Commands
    command: 'ls' # 'create' | 'delete' | 'expose' | 'get' | 'init' | 'install' | 'login' | 'logout' | 'ls' | 'package' | 'rollback' | 'save' | 'upgrade' | 'uninstall'. Required. Command. Default: ls.
    #chartType: 'Name' # 'Name' | 'FilePath'. Required when command == install || command == upgrade. Chart Type. Default: Name.
    chartName: # string. Required when chartType == Name. Chart Name. 
    #chartPath: # string. Required when chartType == FilePath || command == package. Chart Path. 
    #chartVersion: # string. Alias: version. Optional. Use when command == package || command == install || command == upgrade. Version. 
    #releaseName: # string. Optional. Use when command == install || command == upgrade. Release Name. 
    #overrideValues: # string. Optional. Use when command == install || command == upgrade. Set Values. 
    #valueFile: # string. Optional. Use when command == install || command == upgrade. Value File. 
    #destination: '$(Build.ArtifactStagingDirectory)' # string. Optional. Use when command == package. Destination. Default: $(Build.ArtifactStagingDirectory).
    #canaryimage: false # boolean. Optional. Use when command == init. Use canary image version. Default: false.
    #upgradetiller: true # boolean. Optional. Use when command == init. Upgrade Tiller. Default: true.
    #updatedependency: false # boolean. Optional. Use when command == install || command == package. Update Dependency. Default: false.
    #save: true # boolean. Optional. Use when command == package. Save. Default: true.
    #install: true # boolean. Optional. Use when command == upgrade. Install if release not present. Default: true.
    #recreate: false # boolean. Optional. Use when command == upgrade. Recreate Pods. Default: false.
    #resetValues: false # boolean. Optional. Use when command == upgrade. Reset Values. Default: false.
    #force: false # boolean. Optional. Use when command == upgrade. Force. Default: false.
    #waitForExecution: true # boolean. Optional. Use when command == init || command == install || command == upgrade. Wait. Default: true.
    #arguments: # string. Optional. Use when command != login && command != logout. Arguments. 
    #chartNameForACR: # string. Required when command == save. Chart Name For Azure Container Registry. 
    #chartPathForACR: # string. Required when command == save. Chart Path for Azure Container Registry. 
  # TLS
    #enableTls: false # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Enable TLS. Default: false.
    #caCert: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. CA certificate. 
    #certificate: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. Certificate. 
    #privatekey: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. Key. 
  # Advanced
    #tillernamespace: # string. Optional. Use when command != login && command != logout && command != package && command != save. Tiller namespace. 
    #failOnStderr: false # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Fail on Standard Error. Default: false.
    #publishPipelineMetadata: true # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Publish pipeline metadata. Default: true.
# Package and deploy Helm charts v0
# Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands.
- task: HelmDeploy@0
  inputs:
  # Kubernetes Cluster
    #connectionType: 'Azure Resource Manager' # 'Azure Resource Manager' | 'Kubernetes Service Connection' | 'None'. Required when command != logout && command != package && command != save. Connection Type. Default: Azure Resource Manager.
    #azureSubscription: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Kubernetes cluster. 
    #useClusterAdmin: false # boolean. Optional. Use when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Use cluster admin credentials. Default: false.
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection && command != logout && command != package && command != save. Kubernetes Service Connection. 
    #namespace: # string. Optional. Use when command != logout && command != package && command != save. Namespace. 
  # Azure Container Registry
    #azureSubscriptionForACR: # string. Alias: azureSubscriptionEndpointForACR. Required when command == save. Azure subscription for Container Registry. 
    #azureResourceGroupForACR: # string. Required when command == save. Resource group. 
    #azureContainerRegistry: # string. Required when command == save. Azure Container Registry. 
  # Commands
    command: 'ls' # 'create' | 'delete' | 'expose' | 'get' | 'init' | 'install' | 'login' | 'logout' | 'ls' | 'package' | 'rollback' | 'save' | 'upgrade'. Required. Command. Default: ls.
    #chartType: 'Name' # 'Name' | 'FilePath'. Required when command == install || command == upgrade. Chart Type. Default: Name.
    chartName: # string. Required when chartType == Name. Chart Name. 
    #chartPath: # string. Required when chartType == FilePath || command == package. Chart Path. 
    #chartVersion: # string. Alias: version. Optional. Use when command == package || command == install || command == upgrade. Version. 
    #releaseName: # string. Optional. Use when command == install || command == upgrade. Release Name. 
    #overrideValues: # string. Optional. Use when command == install || command == upgrade. Set Values. 
    #valueFile: # string. Optional. Use when command == install || command == upgrade. Value File. 
    #destination: '$(Build.ArtifactStagingDirectory)' # string. Optional. Use when command == package. Destination. Default: $(Build.ArtifactStagingDirectory).
    #canaryimage: false # boolean. Optional. Use when command == init. Use canary image version. Default: false.
    #upgradetiller: true # boolean. Optional. Use when command == init. Upgrade Tiller. Default: true.
    #updatedependency: false # boolean. Optional. Use when command == install || command == package. Update Dependency. Default: false.
    #save: true # boolean. Optional. Use when command == package. Save. Default: true.
    #install: true # boolean. Optional. Use when command == upgrade. Install if release not present. Default: true.
    #recreate: false # boolean. Optional. Use when command == upgrade. Recreate Pods. Default: false.
    #resetValues: false # boolean. Optional. Use when command == upgrade. Reset Values. Default: false.
    #force: false # boolean. Optional. Use when command == upgrade. Force. Default: false.
    #waitForExecution: true # boolean. Optional. Use when command == init || command == install || command == upgrade. Wait. Default: true.
    #arguments: # string. Optional. Use when command != login && command != logout. Arguments. 
    #chartNameForACR: # string. Required when command == save. Chart Name For Azure Container Registry. 
    #chartPathForACR: # string. Required when command == save. Chart Path for Azure Container Registry. 
  # TLS
    #enableTls: false # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Enable TLS. Default: false.
    #caCert: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. CA certificate. 
    #certificate: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. Certificate. 
    #privatekey: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. Key. 
  # Advanced
    #tillernamespace: # string. Optional. Use when command != login && command != logout && command != package && command != save. Tiller namespace. 
    #failOnStderr: false # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Fail on Standard Error. Default: false.
    #publishPipelineMetadata: true # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Publish pipeline metadata. Default: true.
# Package and deploy Helm charts v0
# Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands.
- task: HelmDeploy@0
  inputs:
  # Kubernetes Cluster
    #connectionType: 'Azure Resource Manager' # 'Azure Resource Manager' | 'Kubernetes Service Connection' | 'None'. Required when command != logout && command != package. Connection Type. Default: Azure Resource Manager.
    #azureSubscription: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager && command != logout && command != package. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package. Kubernetes cluster. 
    #useClusterAdmin: false # boolean. Optional. Use when connectionType = Azure Resource Manager && command != logout && command != package. Use cluster admin credentials. Default: false.
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection && command != logout && command != package. Kubernetes Service Connection. 
    #namespace: # string. Optional. Use when command != logout && command != package. Namespace. 
  # Commands
    command: 'ls' # 'create' | 'delete' | 'expose' | 'get' | 'init' | 'install' | 'login' | 'logout' | 'ls' | 'package' | 'rollback' | 'upgrade'. Required. Command. Default: ls.
    #chartType: 'Name' # 'Name' | 'FilePath'. Required when command == install || command == upgrade. Chart Type. Default: Name.
    chartName: # string. Required when chartType == Name. Chart Name. 
    #chartPath: # string. Required when chartType == FilePath || command == package. Chart Path. 
    #chartVersion: # string. Alias: version. Optional. Use when command == package. Version. 
    #releaseName: # string. Optional. Use when command == install || command == upgrade. Release Name. 
    #overrideValues: # string. Optional. Use when command == install || command == upgrade. Set Values. 
    #valueFile: # string. Optional. Use when command == install || command == upgrade. Value File. 
    #destination: '$(Build.ArtifactStagingDirectory)' # string. Optional. Use when command == package. Destination. Default: $(Build.ArtifactStagingDirectory).
    #canaryimage: false # boolean. Optional. Use when command == init. Use canary image version. Default: false.
    #upgradetiller: true # boolean. Optional. Use when command == init. Upgrade Tiller. Default: true.
    #updatedependency: false # boolean. Optional. Use when command == install || command == package. Update Dependency. Default: false.
    #save: true # boolean. Optional. Use when command == package. Save. Default: true.
    #install: true # boolean. Optional. Use when command == upgrade. Install if release not present. Default: true.
    #recreate: false # boolean. Optional. Use when command == upgrade. Recreate Pods. Default: false.
    #resetValues: false # boolean. Optional. Use when command == upgrade. Reset Values. Default: false.
    #force: false # boolean. Optional. Use when command == upgrade. Force. Default: false.
    #waitForExecution: true # boolean. Optional. Use when command == init || command == install || command == upgrade. Wait. Default: true.
    #arguments: # string. Optional. Use when command != login && command != logout. Arguments. 
  # TLS
    #enableTls: false # boolean. Optional. Use when command != login && command != logout && command != package. Enable TLS. Default: false.
    #caCert: # string. Required when enableTls == true && command != login && command != logout && command != package. CA certificate. 
    #certificate: # string. Required when enableTls == true && command != login && command != logout && command != package. Certificate. 
    #privatekey: # string. Required when enableTls == true && command != login && command != logout && command != package. Key. 
  # Advanced
    #tillernamespace: # string. Optional. Use when command != login && command != logout && command != package. Tiller namespace. 
    #failOnStderr: true # boolean. Optional. Use when command != login && command != logout && command != package. Fail on Standard Error. Default: true.

輸入

connectionType - 連線類型
stringcommand != logout && command != package && command != save時為必要項。 允許的值:Azure Resource ManagerKubernetes Service ConnectionNone。 預設值:Azure Resource Manager

指定連接類型。

  • Kubernetes Service Connection - 指定使用 kubeconfig 或 Azure 服務帳戶連線到任何 Kubernetes 叢集的 Kubernetes Service Connection。 可讓您提供 KubeConfig 檔案、指定服務帳戶,或使用 Azure 訂用帳戶 選項匯入 AKS 實例。 使用 Azure 訂用帳戶 選項匯入 AKS 實例,需要在服務連線設定時間存取 Kubernetes 叢集。
  • Azure Resource Manager - 指定 Azure Resource Manager 使用 Azure 服務連線連線至 Azure Kubernetes Service。 不會在服務連線設定時間存取 Kubernetes 叢集。
  • None - 使用儲存在本機的預先建立 Kubernetes 組態。

如需詳細資訊,請參閱下列 < 備註> 一節中的 服務連線


connectionType - 連線類型
stringcommand != logout && command != package時為必要項。 允許的值:Azure Resource ManagerKubernetes Service ConnectionNone。 預設值:Azure Resource Manager

指定連接類型。

  • Kubernetes Service Connection - 指定使用 kubeconfig 或 Azure 服務帳戶連線到任何 Kubernetes 叢集的 Kubernetes Service Connection。 可讓您提供 KubeConfig 檔案、指定服務帳戶,或使用 Azure 訂用帳戶 選項匯入 AKS 實例。 使用 Azure 訂用帳戶 選項匯入 AKS 實例,需要在服務連線設定時間存取 Kubernetes 叢集。
  • Azure Resource Manager - 指定 Azure Resource Manager 使用 Azure 服務連線連線至 Azure Kubernetes Service。 不會在服務連線設定時間存取 Kubernetes 叢集。
  • None - 使用儲存在本機的預先建立 Kubernetes 組態。

如需詳細資訊,請參閱下列 < 備註> 一節中的 服務連線


azureSubscription - Azure 訂用帳戶
輸入別名:azureSubscriptionEndpointstringconnectionType = Azure Resource Manager && command != logout && command != package && command != save時為必要項。

Azure 服務連線的名稱。 指定具有容器登錄的 Azure 訂用帳戶。


azureSubscription - Azure 訂用帳戶
輸入別名:azureSubscriptionEndpointstringconnectionType = Azure Resource Manager && command != logout && command != package時為必要項。

Azure 服務連線的名稱。 指定具有容器登錄的 Azure 訂用帳戶。


azureResourceGroup - 資源群組
stringconnectionType = Azure Resource Manager && command != logout && command != package && command != save時為必要項。

訂用帳戶內的資源組名。 指定 Azure 資源群組。


azureResourceGroup - 資源群組
stringconnectionType = Azure Resource Manager && command != logout && command != package時為必要項。

訂用帳戶內的資源組名。 指定 Azure 資源群組。


kubernetesCluster - Kubernetes 叢集
stringconnectionType = Azure Resource Manager && command != logout && command != package && command != save時為必要項。

AKS 叢集的名稱。 指定 Azure 受控叢集。


kubernetesCluster - Kubernetes 叢集
stringconnectionType = Azure Resource Manager && command != logout && command != package時為必要項。

AKS 叢集的名稱。 指定 Azure 受控叢集。


useClusterAdmin - 使用叢集管理員認證
boolean。 選擇性。 connectionType = Azure Resource Manager && command != logout && command != package && command != save時使用 。 預設值:false

使用叢集管理員認證,而不是預設叢集用戶認證。


useClusterAdmin - 使用叢集管理員認證
boolean。 選擇性。 connectionType = Azure Resource Manager && command != logout && command != package時使用 。 預設值:false

使用叢集管理員認證,而不是預設叢集用戶認證。


kubernetesServiceConnection - Kubernetes Service 連線
輸入別名:kubernetesServiceEndpointstringconnectionType = Kubernetes Service Connection && command != logout && command != package && command != save時為必要項。

指定 Kubernetes Service 連線。


kubernetesServiceConnection - Kubernetes Service 連線
輸入別名:kubernetesServiceEndpointstringconnectionType = Kubernetes Service Connection && command != logout && command != package時為必要項。

指定 Kubernetes Service 連線。


namespace - 命名空間
string。 選擇性。 command != logout && command != package && command != save時使用 。

您執行 kubectl 命令的命名空間。 如果未指定,工作會使用預設命名空間。 指定要使用的 Kubernetes 命名空間。 您可以在工作的進階區段中指定 Tiller 命名空間,或傳遞 --tiller-namespace 選項做為自變數。


namespace - 命名空間
string。 選擇性。 command != logout && command != package時使用 。

您執行 kubectl 命令的命名空間。 如果未指定,工作會使用預設命名空間。 指定要使用的 Kubernetes 命名空間。 您可以在工作的進階區段中指定 Tiller 命名空間,或傳遞 --tiller-namespace 選項做為自變數。


azureSubscriptionForACR - Container Registry 的 Azure 訂用帳戶
輸入別名:azureSubscriptionEndpointForACRstringcommand == save時為必要項。

指定具有 Azure Container Registry 的 Azure 訂用帳戶。


azureResourceGroupForACR - 資源群組
stringcommand == save時為必要項。

指定具有 Container Registry 的 Azure 資源群組。


azureContainerRegistry - Azure Container Registry
stringcommand == save時為必要項。

指定要用於推送 Helm 圖表的 Azure Container Registry。


command - 命令
string。 必須的。 允許的值:createdeleteexposegetinitinstallloginlogoutlspackagerollbacksaveupgradeuninstall。 預設值:ls

指定 Helm 命令。


command - 命令
string。 必須的。 允許的值:createdeleteexposegetinitinstallloginlogoutlspackagerollbacksaveupgrade。 預設值:ls

指定 Helm 命令。


command - 命令
string。 必須的。 允許的值:createdeleteexposegetinitinstallloginlogoutlspackagerollbackupgrade。 預設值:ls

指定 Helm 命令。


chartType - 圖表類型
stringcommand == install || command == upgrade時為必要項。 允許的值:NameFilePath (檔案路徑)。 預設值:Name

指定您想要輸入圖表資訊的方式。 您可以提供圖表的名稱或圖表的資料夾/檔案路徑。


chartName - 圖表名稱
stringchartType == Name時為必要項。

要安裝的圖表參考名稱。 這可以是URL或圖表名稱。 例如,如果圖表名稱是 stable/mysql,工作就會執行 helm install stable/mysql


chartPath - 圖表路徑
stringchartType == FilePath || command == package時為必要項。

要安裝之圖表的路徑。 這可以是已封裝圖表的路徑或未封裝圖表目錄的路徑。 例如,如果您指定 ./redis,工作會執行 helm install ./redis。 如果您要取用發行為成品的圖表,則路徑會 $(System.DefaultWorkingDirectory)/ARTIFACT-NAME/Charts/CHART-NAME


chartVersion - 版本
輸入別名:versionstring。 選擇性。 command == package || command == install || command == upgrade時使用 。

指定要安裝的確切圖表版本。 如果您未指定圖表版本,工作會安裝最新版本。 將圖表上的版本設定為這個 semver 版本。


chartVersion - 版本
輸入別名:versionstring。 選擇性。 command == package時使用 。

指定要安裝的確切圖表版本。 如果您未指定圖表版本,工作會安裝最新版本。 將圖表上的版本設定為這個 semver 版本。


releaseName - 版本名稱
string。 選擇性。 command == install || command == upgrade時使用 。

版本名稱。 如果您未指定發行名稱,工作會自動為您產生一個版本名稱。 releaseName 輸入僅適用於 installupgrade 命令。


overrideValues - 設定值
string。 選擇性。 command == install || command == upgrade時使用 。

指定命令列上的值。 這個輸入可以使用逗號來指定多個或個別的值:key1=val1,key2=val2

您也可以使用新行分隔多個值,如下所示:

  • key1=val1
  • key2=val2

如果您有包含新行的值,請使用 [valueFile] 選項。 否則,工作會將新行視為分隔符。 工作會使用這些集合值來建構 Helm 命令。 例如,您可以使用如下所示的命令來設定值:helm install --set key1=val1 ./redis


valueFile - 值檔案
string。 選擇性。 command == install || command == upgrade時使用 。

指定 YAML 檔案或 URL 中的值。 例如,指定 myvalues.yaml 會導致 helm install --values=myvals.yaml


destination - 目的地
string。 選擇性。 command == package時使用 。 預設值:$(Build.ArtifactStagingDirectory)

指定 YAML 檔案或 URL 中的值。


canaryimage - 使用 Canary 映射版本。
boolean。 選擇性。 command == init時使用 。 預設值:false

指定 Canary Tiller 影像。 使用 Tiller 的最新發行前版本。


upgradetiller - 升級 Tiller
boolean。 選擇性。 command == init時使用 。 預設值:true

如果 true,則此輸入會在已安裝 Tiller 時升級 Tiller。


updatedependency - 更新相依性
boolean。 選擇性。 command == install || command == package時使用 。 預設值:false

如果 true,此輸入會在安裝圖表之前更新 Helm 相依性更新。 在封裝之前,將相依性從 requirements.yaml 更新至 charts/ 目錄。


save - 儲存
boolean。 選擇性。 command == package時使用 。 預設值:true

當設定為 true​時,將封裝的圖表儲存至本機圖表存放庫。


install - 如果版本不存在,請安裝。
boolean。 選擇性。 command == upgrade時使用 。 預設值:true

如果此名稱的發行尚未存在,此輸入會執行安裝。


recreate - 重新建立Pod。
boolean。 選擇性。 command == upgrade時使用 。 預設值:false

如果適用,請針對資源執行Pod重新啟動。


resetValues - 重設值。
boolean。 選擇性。 command == upgrade時使用 。 預設值:false

將值重設為圖表內建的值。


force - Force
boolean。 選擇性。 command == upgrade時使用 。 預設值:false

視需要強制透過刪除或重新建立動作來更新資源。


waitForExecution - Wait
boolean。 選擇性。 command == init || command == install || command == upgrade時使用 。 預設值:true

封鎖動作,直到命令執行完成為止。


arguments - 自變數
string。 選擇性。 command != login && command != logout時使用 。

Helm 命令選項。


enableTls - 啟用 TLS
boolean。 選擇性。 command != login && command != logout && command != package && command != save時使用 。 預設值:false

啟用 Helm 與 Tiller 之間的 SSL。


enableTls - 啟用 TLS
boolean。 選擇性。 command != login && command != logout && command != package時使用 。 預設值:false

啟用 Helm 與 Tiller 之間的 SSL。


caCert - CA 憑證
stringenableTls == true && command != login && command != logout && command != package && command != save時為必要項。

用來發行 Tiller 和 Helm 用戶端憑證的 CA 憑證。


caCert - CA 憑證
stringenableTls == true && command != login && command != logout && command != package時為必要項。

用來發行 Tiller 和 Helm 用戶端憑證的 CA 憑證。


certificate - 憑證
stringenableTls == true && command != login && command != logout && command != package && command != save時為必要項。

指定 Tiller 憑證或 Helm 用戶端憑證。


certificate - 憑證
stringenableTls == true && command != login && command != logout && command != package時為必要項。

指定 Tiller 憑證或 Helm 用戶端憑證。


privatekey - 金鑰
stringenableTls == true && command != login && command != logout && command != package && command != save時為必要項。

指定 Tiller 金鑰或 Helm 用戶端金鑰。


privatekey - 金鑰
stringenableTls == true && command != login && command != logout && command != package時為必要項。

指定 Tiller 金鑰或 Helm 用戶端金鑰。


tillernamespace - Tiller 命名空間
string。 選擇性。 command != login && command != logout && command != package && command != save時使用 。

指定 Tiller 的 Kubernetes 命名空間。


tillernamespace - Tiller 命名空間
string。 選擇性。 command != login && command != logout && command != package時使用 。

指定 Tiller 的 Kubernetes 命名空間。


標準錯誤failOnStderr - 失敗
boolean。 選擇性。 command != login && command != logout && command != package && command != save時使用 。 預設值:false

如果此輸入 true,則如果任何錯誤寫入錯誤管線,或將任何數據寫入標準錯誤數據流,則此工作會失敗。 否則,工作會依賴結束代碼來判斷失敗。


標準錯誤failOnStderr - 失敗
boolean。 選擇性。 command != login && command != logout && command != package時使用 。 預設值:true

如果此輸入 true,則如果任何錯誤寫入錯誤管線,或將任何數據寫入標準錯誤數據流,則此工作會失敗。 否則,工作會依賴結束代碼來判斷失敗。


publishPipelineMetadata - 發佈管線元數據
boolean。 選擇性。 command != login && command != logout && command != package && command != save時使用 。 預設值:true

如果此輸入 true,工作會收集併發佈部署元數據。


Azure Container Registry chartNameForACR - 圖表名稱
stringcommand == save時為必要項。

Azure Container Registry 中的圖表名稱。


chartPathForACR - Azure Container Registry 的圖表路徑
stringcommand == save時為必要項。

Azure Container Registry 中圖表目錄的檔案路徑。


工作控制選項

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

輸出變數

此工作會定義下列 輸出變數,您可以在下游步驟、作業和階段中取用這些變數。

helmExitCode
從執行指定的 Helm 命令發出的結束代碼。

helmOutput
從執行指定的 Helm 命令發出的輸出。

備註

執行 Helm 命令,使用HelmDeploy@0在 Azure Container Service 中部署、設定或更新 Kubernetes 叢集。 Helm 是一種工具,可使用稱為圖表的封裝格式簡化部署和管理 Kubernetes 應用程式。

您可以使用 Helm 來定義、版本、共用、安裝及升級最複雜的 Kubernetes 應用程式。

  • Helm 可協助您將多個 Kubernetes 指令清單 (yaml) 例如服務、部署、configmap 等等合併成稱為 Helm Chart 的單一單元。 您不需要發明或使用標記化或範本化工具。
  • Helm Chart 可協助您管理應用程式相依性,以及以單位的形式進行復原。 它們也很容易建立、版本、發佈,並與其他合作夥伴小組共用。

Azure Pipelines 具有 Helm 圖表的內建支援:

  • Helm Tool 安裝程式工作 可用來將正確的 Helm 版本安裝到代理程式。
  • Helm 套件和部署工作可用來封裝應用程式,並將其部署至 Kubernetes 叢集。 您可以使用工作將 Tiller 安裝或更新為 Kubernetes 命名空間、安全地連線到 Tiller over TLS 以部署圖表,或執行任何 Helm 命令,例如 lint
  • Helm 工作支援使用 Azure 服務連線來連線到 Azure Kubernetes Service。 您可以使用 kubeconfig 或服務帳戶連線到任何 Kubernetes 叢集。
  • Helm 部署可以使用 Kubectl 工作來補充;例如,create/update、imagepullsecret 和其他專案。

服務連線

HelmDeploy@0適用於兩種服務連線類型:Azure Resource ManagerKubernetes Service Connection。 如需設定這兩種連線類型的範例,請參閱 範例

備註

如果指向 Kubernetes 叢集的環境資源已在管線的階段中指定,則不需要服務連線。

存取 AKS 時的 Kubernetes Service 連線考慮

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

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

選擇 Kubernetes 服務連線驗證方法的螢幕快照。

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

選擇 Kubernetes 服務連線驗證對話框停滯在載入命名空間的螢幕快照。

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

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

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

  • 您可以從可看見叢集的自我裝載或擴展集代理程式,存取 (private) 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

命令值

命令輸入會接受下列其中一個 helm 命令:create/delete/expose/get/init/install/login/logout/ls/package/rollback/upgrade。 範例提供於 範例 一節中。

每個命令輸入都會對應至一組工作輸入。 對應至工作輸入的命令是在 YAML 語法區塊和工作輸入資料表中指定

故障排除

HelmDeploy 工作會在 Helm 3.0.2 版本上執行 'helm init --wait --client-only' 時擲回錯誤 'unknown flag: --wait'。

Helm 2 與 Helm 3 之間有一些重大變更。 其中一個包括移除耕地,因此不再支援 helm init 命令。 拿掉命令:當您使用 Helm 3.0+ 版本時,init。

使用 Helm 3 時,如果 System.debug 設定為 true 且 Helm 升級是正在使用的命令,即使升級成功,管線仍會失敗。

這是 Helm 3 的已知問題,因為它會將一些記錄寫入 stderr。 如果有 stderr 或結束代碼的記錄為非零,Helm 部署工作會標示為失敗。 設定工作輸入 failOnStderr:false 忽略列印至 stderr 的記錄。

範例

Azure Resource Manager

此 YAML 範例示範如何使用 Azure Resource Manager 來參考 Kubernetes 叢集。 這會與其中一個 helm 命令搭配使用, 和命令所需的適當值:

variables:
  azureSubscriptionEndpoint: Contoso
  azureContainerRegistry: contoso.azurecr.io
  azureResourceGroup: Contoso
  kubernetesCluster: Contoso

- task: HelmDeploy@0
  displayName: Helm deploy
  inputs:
    connectionType: Azure Resource Manager
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)

Kubernetes Service 連線

此 YAML 範例示範如何使用 Kubernetes 服務連線來參考 Kubernetes 叢集。 這會與其中一個 helm 命令搭配使用, 和命令所需的適當值:

- task: HelmDeploy@0
  displayName: Helm deploy
  inputs:
    connectionType: Kubernetes Service Connection
    kubernetesServiceEndpoint: Contoso

指令

命令輸入會接受下列其中一個 helm 命令:create/delete/expose/get/init/install/login/logout/ls/package/rollback/upgrade。

此 YAML 範例示範 ls 命令:

- task: HelmDeploy@0
  displayName: Helm list
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: ls
    arguments: --all

init 命令

此 YAML 範例示範 init 命令:

- task: HelmDeploy@0
  displayName: Helm init
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: init
    upgradetiller: true
    waitForExecution: true
    arguments: --client-only

install 命令

此 YAML 範例示範 安裝 命令:

- task: HelmDeploy@0
  displayName: Helm install
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: install
    chartType: FilePath
    chartPath: Application/charts/sampleapp

package 命令

此 YAML 範例示範 套件 命令:

- task: HelmDeploy@0
  displayName: Helm package
  inputs:
    command: package
    chartPath: Application/charts/sampleapp
    destination: $(Build.ArtifactStagingDirectory)

升級命令

此 YAML 範例示範 升級 命令:

- task: HelmDeploy@0
  displayName: Helm upgrade
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: upgrade
    chartType: filepath
    chartPath: $(Build.ArtifactStagingDirectory)/sampleapp-v0.2.0.tgz
    releaseName: azuredevopsdemo
    install: true
    waitForExecution: false

save 命令

此 YAML 範例示範 save 命令:

- task: HelmDeploy@0
  displayName: Helm save
  inputs:
    command: save
    chartNameForACR: mycontainerregistry.azurecr.io/helm/hello-world:v1
    chartPathForACR: Application/charts/sampleapp
    azureSubscriptionEndpointForACR: $(azureSubscriptionEndpointForACR)
    azureResourceGroupForACR: $(azureResourceGroupForACR)
    azureContainerRegistry: $(azureContainerRegistry)

封裝和簽署 Helm 圖表

在本節中,您將瞭解如何封裝和簽署管線中的 Helm 圖表。

產生私鑰組,以使用 GPG 簽署 helm 圖表

  1. 下載 GPG

  2. 以系統管理員模式啟動命令提示字元。 執行下列命令來產生私鑰組,以使用 gpg 簽署 helm 圖表。 建立金鑰時,系統會提示您輸入使用者名稱和電子郵件位址。 稍後會使用「名稱電子郵件位址」來命名所建立的私鑰組。

    gpg --full-generate-key
    

    產生金鑰

  3. 系統會提示您輸入複雜密碼。 提供值,然後按兩下 [確定]。

    顯示複雜密碼的螢幕快照。

  4. 建立金鑰之後,您可以使用下列命令查看包含私用和公用的密鑰清單。

    • 若要查看私鑰清單

      gpg --list-secret-keys
      

      私鑰

    • 若要查看公鑰清單

      gpg --list-keys
      

      公鑰

  5. 將私鑰和公鑰儲存在擴展名 gpg 的 2 個不同的檔案中,如下所示。

    • 針對私鑰
    gpg --export-secret-key AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00 contoso@microsoft.com > C:/somepath/privatekeys.gpg
    

    您會看到 privatekeys.gpg 匯出至上述路徑的檔案。

    • 針對公鑰
    gpg --export-key AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00 contoso@microsoft.com > C:/somepath/publickey.gpg
    

    您會看到匯出至上述路徑的 publickey.gpg 檔案。

在 Azure DevOps 中,將 privatekey.gpg 檔案儲存在連結庫 安全檔案 區段中。

範例

pool:
  name: Hosted Ubuntu 1604

variables:
  # The below variable should be secure
  HelmKeyPassphrase: contoso@123
  keyName: contoso contoso@microsoft.com
  azureSubscriptionEndpoint: contoso
  azureResourceGroup: contoso
  kubernetesCluster: contoso

steps:
- task: DownloadSecureFile@1
  displayName: Download Secure file
  inputs:
    secureFile: privatekey.gpg
  name: privateKeyRing

- task: HelmInstaller@0
  displayName: Install Helm 2.12.0
  inputs:
    helmVersion: 2.12.0

- task: HelmDeploy@0
  displayName: helm init
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: init
    arguments: --client-only

- task: HelmDeploy@0
  displayName: helm package
  inputs:
    command: package
    chartPath: Application/charts/sampleapp
    arguments: --sign --key "$(keyName)" --keyring $(privateKeyRing.secureFilePath)
  env:
    HelmKeyPassphrase: $(HelmKeyPassphrase)

需求

要求 說明
管線類型 YAML、傳統組建、傳統版本
執行於 Agent、DeploymentGroup
需求 沒有
功能 此工作不符合作業中後續工作的任何需求。
命令限制 任意
Settable 變數 任意
代理程式版本 所有支援的代理程式版本。
工作類別 部署