HelmDeploy@0 - 打包和部署 Helm 图表 v0 任务

使用此任务通过运行 helm 命令在 Azure 容器服务中部署、配置或更新 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 服务连接连接到 Azure Kubernetes 服务的 Azure Resource Manager。 在服务连接配置时无法访问 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 服务连接连接到 Azure Kubernetes 服务的 Azure Resource Manager。 在服务连接配置时无法访问 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 服务连接
输入别名:kubernetesServiceEndpointstringconnectionType = Kubernetes Service Connection && command != logout && command != package && command != save时是必需的。

指定 Kubernetes 服务连接。


kubernetesServiceConnection - Kubernetes 服务连接
输入别名:kubernetesServiceEndpointstringconnectionType = Kubernetes Service Connection && command != logout && command != package时是必需的。

指定 Kubernetes 服务连接。


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 - 容器注册表的 Azure 订阅
输入别名:azureSubscriptionEndpointForACRstringcommand == save时是必需的。

指定具有 Azure 容器注册表的 Azure 订阅。


azureResourceGroupForACR - 资源组
stringcommand == save时是必需的。

指定具有容器注册表的 Azure 资源组。


azureContainerRegistry - Azure 容器注册表
stringcommand == save时是必需的。

指定要用于推送 Helm 图表的 Azure 容器注册表。


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 - 等待
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 容器注册表的 chartNameForACR - 图表名称
stringcommand == save时是必需的。

Azure 容器注册表中的图表名称。


Azure 容器注册表chartPathForACR - 图表路径
stringcommand == save时是必需的。

Azure 容器注册表中图表目录的文件路径。


任务控制选项

除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性

输出变量

此任务定义以下 输出变量,可以在下游步骤、作业和阶段中使用。

helmExitCode
从指定的 Helm 命令执行发出的退出代码。

helmOutput
从指定的 Helm 命令执行发出的输出。

注解

使用HelmDeploy@0通过运行 Helm 命令在 Azure 容器服务中部署、配置或更新 Kubernetes 群集。 Helm 是一种工具,它使用名为图表的打包格式简化部署和管理 Kubernetes 应用。

可以使用 Helm 定义、版本、共享、安装和升级最复杂的 Kubernetes 应用。

  • Helm 可帮助你将多个 Kubernetes 清单(yaml)(例如服务、部署、配置映射等)合并到名为 Helm Chart 的单个单元中。 无需发明或使用标记化或模板化工具。
  • Helm 图表可帮助你管理应用程序依赖项并部署和回滚作为一个单元。 它们还易于与其他合作伙伴团队创建、版本、发布和共享。

Azure Pipelines 对 Helm 图表具有内置支持:

  • Helm 工具安装程序任务 可用于将正确的 Helm 版本安装到代理上。
  • Helm 包和部署任务可用于打包应用并将其部署到 Kubernetes 群集。 可以使用该任务将 Tiller 安装或更新到 Kubernetes 命名空间、通过 TLS 安全地连接到 Tiller 以部署图表,或运行任何 Helm 命令,例如 lint
  • Helm 任务支持使用 Azure 服务连接连接到 Azure Kubernetes 服务。 可以使用 kubeconfig 或服务帐户连接到任何 Kubernetes 群集。
  • 可以使用 Kubectl 任务来补充 Helm 部署;例如,create/update、imagepullsecret 等。

服务连接

HelmDeploy@0适用于两种服务连接类型:Azure 资源管理器Kubernetes 服务连接。 有关配置这两种连接类型的示例,请参阅 示例

注释

如果指向 Kubernetes 群集的环境资源已在管道的阶段中指定,则不需要服务连接。

访问 AKS 时的 Kubernetes 服务连接注意事项

可以使用以下任一选项创建 Kubernetes 服务连接。

  • KubeConfig
  • 服务帐户
  • Azure 订阅

选择 Kubernetes 服务连接身份验证方法的屏幕截图。

选择 Azure 订阅 选项时,需要在服务连接配置时访问 Kubernetes。 创建服务连接的原因可能有多种,例如,创建专用群集 或者群集 本地帐户已禁用。 在这些情况下,Azure DevOps 无法在服务连接配置时连接到群集,你将看到 加载命名空间 屏幕停滞。

选择 Kubernetes 服务连接身份验证对话框停滞在加载命名空间的屏幕截图。

从 Kubernetes 1.24 开始,长期令牌在默认情况下 不再创建。 Kubernetes 建议不要使用生存期较长的令牌。 因此,使用通过 Azure 订阅创建的 Kubernetes 服务连接的任务 选项无权访问身份验证所需的永久令牌,并且无法访问 Kubernetes 群集。 这还会导致冻结 加载命名空间 对话框。

使用 Azure 资源管理器服务连接访问 AKS

对于 AKS 客户,Azure 资源管理器服务连接类型提供了连接到专用群集或禁用本地帐户的群集的最佳方法。 此方法不依赖于创建服务连接时的群集连接。 对 AKS 的访问将延迟到管道运行时,这具有以下优势:

  • 可以从自承载或规模集代理执行对 AKS 群集的访问,并可以看到群集。
  • 为每个使用 Azure 资源管理器服务连接的任务创建令牌。 这可确保使用生存期较短的令牌连接到 Kubernetes,这是 Kubernetes 建议
  • 即使禁用本地帐户,也可以访问 AKS。

服务连接常见问题解答

我收到以下错误消息:找不到与服务帐户关联的任何机密。 发生了什么事情?

将 Kubernetes 服务连接与 Azure 订阅选项配合使用。 我们正在更新此方法以创建长期令牌。 这预计将在5月中旬推出。 但是,建议根据 Kubernetes 指南开始使用 Azure 服务连接类型,而不是使用长期令牌。

我使用的是 AKS,不想更改任何内容,是否可以继续将任务用于 Kubernetes 服务连接?

我们正在更新此方法以创建长期令牌。 这预计将在5月中旬推出。 但是,请注意,此方法针对 Kubernetes 指南

我使用的是 Kubernetes 任务和 Kubernetes 服务连接,但未使用 AKS。 我应该担心吗?

任务将继续像以前一样工作。

是否删除 Kubernetes 服务连接类型?

无论 Kubernetes 任务在何处运行,我们的 Kubernetes 任务都适用于任何 Kubernetes 群集。 Kubernetes 服务连接将继续存在。

我是 AKS 客户,一切都运行正常,我应该采取行动吗?

无需更改任何内容。 如果在创建期间使用 Kubernetes 服务连接并选择了 Azure 订阅,则应注意有关使用长期令牌 Kubernetes 指南。

我正在创建 Kubernetes 环境,不能选择使用服务连接

如果在创建环境期间无法访问 AKS,则可以使用空环境并将 connectionType 输入设置为 Azure 资源管理器服务连接。

我配置了 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”时引发错误“未知标志: --wait”。

Helm 2 和 Helm 3 之间存在一些中断性变更。 其中一个包括删除 tiller,因此不再支持 helm init 命令。 删除命令:使用 Helm 3.0+ 版本时 init。

使用 Helm 3 时,如果 System.debug 设置为 true 并且 Helm 升级是正在使用的命令,则即使升级成功,管道也会失败。

这是 Helm 3 的已知问题,因为它将一些日志写入 stderr。 如果存在用于 stderr 的日志或退出代码为非零,Helm 部署任务将标记为失败。 设置任务输入 failOnStderr:false 忽略打印到 stderr 的日志。

例子

Azure 资源管理器

此 YAML 示例演示如何使用 Azure 资源管理器来引用 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 服务连接

此 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

安装命令

此 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)

upgrade 命令

此 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 示例演示了保存 命令

- 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,经典版本,经典版本
运行时间 代理,DeploymentGroup
需求 没有
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任何
Settable 变量 任何
代理版本 所有支持的代理版本。
任务类别 部署