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
-
连接类型
string
。
command != logout && command != package && command != save
时是必需的。 允许的值:Azure Resource Manager
、Kubernetes Service Connection
、None
。 默认值: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
-
连接类型
string
。
command != logout && command != package
时是必需的。 允许的值:Azure Resource Manager
、Kubernetes Service Connection
、None
。 默认值: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 订阅
输入别名:azureSubscriptionEndpoint
。
string
。
connectionType = Azure Resource Manager && command != logout && command != package && command != save
时是必需的。
Azure 服务连接的名称。 指定具有容器注册表的 Azure 订阅。
azureSubscription
-
Azure 订阅
输入别名:azureSubscriptionEndpoint
。
string
。
connectionType = Azure Resource Manager && command != logout && command != package
时是必需的。
Azure 服务连接的名称。 指定具有容器注册表的 Azure 订阅。
azureResourceGroup
-
资源组
string
。
connectionType = Azure Resource Manager && command != logout && command != package && command != save
时是必需的。
订阅中的资源组的名称。 指定 Azure 资源组。
azureResourceGroup
-
资源组
string
。
connectionType = Azure Resource Manager && command != logout && command != package
时是必需的。
订阅中的资源组的名称。 指定 Azure 资源组。
kubernetesCluster
-
Kubernetes 群集
string
。
connectionType = Azure Resource Manager && command != logout && command != package && command != save
时是必需的。
AKS 群集的名称。 指定 Azure 托管群集。
kubernetesCluster
-
Kubernetes 群集
string
。
connectionType = 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 服务连接
输入别名:kubernetesServiceEndpoint
。
string
。
connectionType = Kubernetes Service Connection && command != logout && command != package && command != save
时是必需的。
指定 Kubernetes 服务连接。
kubernetesServiceConnection
-
Kubernetes 服务连接
输入别名:kubernetesServiceEndpoint
。
string
。
connectionType = 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 订阅
输入别名:azureSubscriptionEndpointForACR
。
string
。
command == save
时是必需的。
指定具有 Azure 容器注册表的 Azure 订阅。
azureResourceGroupForACR
-
资源组
string
。
command == save
时是必需的。
指定具有容器注册表的 Azure 资源组。
azureContainerRegistry
-
Azure 容器注册表
string
。
command == save
时是必需的。
指定要用于推送 Helm 图表的 Azure 容器注册表。
command
-
命令
string
。 必填。 允许的值:create
、delete
、expose
、get
、init
、install
、login
、logout
、ls
、package
、rollback
、save
、upgrade
、uninstall
。 默认值:ls
。
指定 Helm 命令。
command
-
命令
string
。 必填。 允许的值:create
、delete
、expose
、get
、init
、install
、login
、logout
、ls
、package
、rollback
、save
、upgrade
。 默认值:ls
。
指定 Helm 命令。
command
-
命令
string
。 必填。 允许的值:create
、delete
、expose
、get
、init
、install
、login
、logout
、ls
、package
、rollback
、upgrade
。 默认值:ls
。
指定 Helm 命令。
chartType
-
图表类型
string
。
command == install || command == upgrade
时是必需的。 允许的值:Name
、FilePath
(文件路径)。 默认值:Name
。
指定输入图表信息的方式。 可以提供图表的名称或图表的文件夹/文件路径。
chartName
-
图表名称
string
。
chartType == Name
时是必需的。
要安装的图表引用的名称。 这可以是 URL 或图表名称。 例如,如果图表名称 stable/mysql
,则任务将运行 helm install stable/mysql
。
chartPath
-
图表路径
string
。
chartType == FilePath || command == package
时是必需的。
要安装的图表的路径。 这可以是打包图表的路径,也可以是解包图表目录的路径。 例如,如果指定 ./redis
,则任务将运行 helm install ./redis
。 如果要使用作为项目发布的图表,则路径将 $(System.DefaultWorkingDirectory)/ARTIFACT-NAME/Charts/CHART-NAME
。
chartVersion
-
版本
输入别名:version
。
string
。 可选。 当 command == package || command == install || command == upgrade
时使用。
指定要安装的确切图表版本。 如果未指定图表版本,则任务将安装最新版本。 将图表上的版本设置为此 semver 版本。
chartVersion
-
版本
输入别名:version
。
string
。 可选。 当 command == package
时使用。
指定要安装的确切图表版本。 如果未指定图表版本,则任务将安装最新版本。 将图表上的版本设置为此 semver 版本。
releaseName
-
发布名称
string
。 可选。 当 command == install || command == upgrade
时使用。
发布名称。 如果未指定发布名称,则任务会自动生成一个版本。
releaseName
输入仅适用于 install
和 upgrade
命令。
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 证书
string
。
enableTls == true && command != login && command != logout && command != package && command != save
时是必需的。
用于为 Tiller 和 Helm 客户端颁发证书的 CA 证书。
caCert
-
CA 证书
string
。
enableTls == true && command != login && command != logout && command != package
时是必需的。
用于为 Tiller 和 Helm 客户端颁发证书的 CA 证书。
certificate
-
证书
string
。
enableTls == true && command != login && command != logout && command != package && command != save
时是必需的。
指定 Tiller 证书或 Helm 客户端证书。
certificate
-
证书
string
。
enableTls == true && command != login && command != logout && command != package
时是必需的。
指定 Tiller 证书或 Helm 客户端证书。
privatekey
-
密钥
string
。
enableTls == true && command != login && command != logout && command != package && command != save
时是必需的。
指定 Tiller 密钥或 Helm 客户端密钥。
privatekey
-
密钥
string
。
enableTls == 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
- 图表名称
string
。
command == save
时是必需的。
Azure 容器注册表中的图表名称。
Azure 容器注册表的 chartPathForACR
- 图表路径
string
。
command == save
时是必需的。
Azure 容器注册表中图表目录的文件路径。
任务控制选项
除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性。
输出变量
注解
使用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 订阅
选择 Azure 订阅 选项时,需要在服务连接配置时访问 Kubernetes。 创建服务连接的原因可能有多种,例如,创建专用群集 或者群集 本地帐户已禁用。 在这些情况下,Azure DevOps 无法在服务连接配置时连接到群集,你将看到 加载命名空间 屏幕停滞。
从 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 图表进行签名
下载 GPG。
在管理员模式下启动命令提示符。 运行以下命令以生成私钥对,以使用 gpg 对 helm 图表进行签名。 创建密钥时,系统会提示输入用户名和电子邮件地址。 稍后使用“名称电子邮件地址”来命名创建的私钥对。
gpg --full-generate-key
系统会提示输入通行短语。 提供该值并单击“确定”。
创建密钥后,可以使用以下命令查看包含私有和公用的密钥列表。
查看私钥列表
gpg --list-secret-keys
查看公钥列表
gpg --list-keys
将私钥和公钥存储在扩展名为 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)