Поделиться через


HelmDeploy@0 . Упаковка и развертывание задач Helm chart v0

Используйте эту задачу для развертывания, настройки или обновления кластера Kubernetes в службе контейнеров Azure, выполнив команды helm.

Синтаксис

# 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. Укажите Kubernetes Service Connection для подключения к любому кластеру Kubernetes с помощью kubeconfig или учетной записи службы Azure. Позволяет предоставить файл KubeConfig, указать учетную запись службы или импортировать экземпляр AKS с параметром подписки Azure. При импорте экземпляра AKS с параметром подписки Azure требуется доступ к кластеру Kubernetes во время настройки подключения службы.
  • Azure Resource Manager. Укажите Azure Resource Manager для подключения к службе Azure Kubernetes с помощью подключения к службе Azure. Не обращается к кластеру Kubernetes во время настройки подключения службы.
  • None. Используйте предварительно созданную конфигурацию Kubernetes, хранящуюся локально.

Дополнительные сведения см. в подключения к службе в следующем разделе примечания.


connectionType - тип подключения
string. Требуется, если command != logout && command != package. Допустимые значения: Azure Resource Manager, Kubernetes Service Connection, None. Значение по умолчанию: Azure Resource Manager.

Определяет тип подключения.

  • Kubernetes Service Connection. Укажите Kubernetes Service Connection для подключения к любому кластеру Kubernetes с помощью kubeconfig или учетной записи службы Azure. Позволяет предоставить файл KubeConfig, указать учетную запись службы или импортировать экземпляр AKS с параметром подписки Azure. При импорте экземпляра AKS с параметром подписки Azure требуется доступ к кластеру Kubernetes во время настройки подключения службы.
  • Azure Resource Manager. Укажите Azure Resource Manager для подключения к службе Azure Kubernetes с помощью подключения к службе Azure. Не обращается к кластеру 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 с реестром контейнеров.


группы ресурсов
string. Требуется, если connectionType = Azure Resource Manager && command != logout && command != package && command != save.

Имя группы ресурсов в подписке. Укажите группу ресурсов Azure.


группы ресурсов
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.

Использует учетные данные администратора кластера вместо учетных данных пользователя кластера по умолчанию.


подключения службы Kubernetes kubernetesServiceConnection -
Псевдоним ввода: kubernetesServiceEndpoint. string. Требуется, если connectionType = Kubernetes Service Connection && command != logout && command != package && command != save.

Указывает подключение службы Kubernetes.


подключения службы Kubernetes kubernetesServiceConnection -
Псевдоним ввода: 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.


группы ресурсов
string. Требуется, если command == save.

Указывает группу ресурсов Azure с реестром контейнеров.


реестра контейнеров Azure azureContainerRegistry -
string. Требуется, если command == save.

Указывает реестр контейнеров Azure, используемый для отправки диаграмм Helm.


Команда 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 - Использовать версию канаречного образа.
boolean. Необязательно. Используется при command == init. Значение по умолчанию: false.

Указывает канареарный образ Тиллера. Используйте последнюю предварительную версию Тиллера.


upgradetiller - Обновление Тиллера
boolean. Необязательно. Используется при command == init. Значение по умолчанию: true.

Если true, входные данные обновляют Тиллер, если Тиллер уже установлен.


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.

Включает использование SSL между Helm и Тиллером.


enableTls - включить TLS
boolean. Необязательно. Используется при command != login && command != logout && command != package. Значение по умолчанию: false.

Включает использование SSL между Helm и Тиллером.


caCert - Сертификат ЦС
string. Требуется, если enableTls == true && command != login && command != logout && command != package && command != save.

Сертификат ЦС, используемый для выдачи сертификата для клиента Tiller и Helm.


caCert - Сертификат ЦС
string. Требуется, если enableTls == true && command != login && command != logout && command != package.

Сертификат ЦС, используемый для выдачи сертификата для клиента Tiller и Helm.


certificate - сертификатов
string. Требуется, если enableTls == true && command != login && command != logout && command != package && command != save.

Укажите сертификат Тиллера или сертификат клиента Helm.


certificate - сертификатов
string. Требуется, если enableTls == true && command != login && command != logout && command != package.

Укажите сертификат Тиллера или сертификат клиента Helm.


privatekey - ключ
string. Требуется, если enableTls == true && command != login && command != logout && command != package && command != save.

Укажите ключ Тиллера или ключ клиента Helm.


privatekey - ключ
string. Требуется, если enableTls == true && command != login && command != logout && command != package.

Укажите ключ Тиллера или ключ клиента Helm.


tillernamespace - пространство имен Тиллера
string. Необязательно. Используется при command != login && command != logout && command != package && command != save.

Укажите пространство имен Kubernetes Тиллера.


tillernamespace - пространство имен Тиллера
string. Необязательно. Используется при command != login && command != logout && command != package.

Укажите пространство имен 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, задача собирает и публикует метаданные развертывания.


имя диаграммы chartNameForACR - для реестра контейнеров Azure
string. Требуется, если command == save.

Имя диаграммы в реестре контейнеров Azure.


Путь к диаграмме chartPathForACR - для реестра контейнеров Azure
string. Требуется, если command == save.

Путь к каталогу диаграммы в реестре контейнеров Azure.


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.

Выходные переменные

Эта задача определяет следующие выходные переменные, которые можно использовать в подчиненных шагах, заданиях и этапах.

helmExitCode
Код выхода, полученный из выполнения указанной команды Helm.

helmOutput
Выходные данные, полученные из выполнения указанной команды Helm.

Замечания

Используйте HelmDeploy@0 для развертывания, настройки или обновления кластера Kubernetes в службе контейнеров Azure, выполнив команды Helm. Helm — это средство, которое упрощает развертывание приложений Kubernetes и управление ими с помощью формата упаковки, называемого диаграммами.

Вы можете определить, версию, поделиться, установить и обновить даже самое сложное приложение Kubernetes с помощью Helm.

  • Helm помогает объединить несколько манифестов Kubernetes (yaml), таких как служба, развертывания, конфигурации и многое другое в одном модуле с именем Helm Chart. Вам не нужно либо изобретать, либо использовать маркеризацию или инструмент шаблонирования.
  • Helm Chart помогает управлять зависимостями приложений и развертывать, а также откат как единицу. Они также легко создавать, версии, публиковать и предоставлять общий доступ другим командам партнеров.

Azure Pipelines поддерживает встроенные диаграммы Helm:

  • Задачу установщика программы Helm можно использовать для установки правильной версии Helm на агенты.
  • Пакет Helm и задача развертывания можно использовать для упаковки приложения и развертывания в кластере Kubernetes. Задачу можно использовать для установки или обновления Тиллера в пространстве имен Kubernetes, безопасного подключения к Тиллеру по протоколу TLS для развертывания диаграмм или выполнения любой команды Helm, например lint.
  • Задача Helm поддерживает подключение к службе Azure Kubernetes с помощью подключения к службе Azure. Вы можете подключиться к любому кластеру Kubernetes с помощью kubeconfig или учетной записи службы.
  • Развертывания Helm можно дополнить с помощью задачи Kubectl; например, create/update, imagepullsecret и другие.

Подключение к службе

HelmDeploy@0 работает с двумя типами подключений службы: Azure Resource Manager и подключением к службе Kubernetes. Примеры см. в примерах по настройке этих двух типов подключений.

Примечание.

Подключение к службе не требуется, если ресурс среды, указывающий на кластер Kubernetes, уже указан на этапе конвейера.

Рекомендации по подключению к службе Kubernetes при доступе к AKS

Вы можете создать подключение службы Kubernetes с любым из следующих параметров.

  • KubeConfig
  • Учетная запись службы
  • Подписка Azure

снимок экрана: выбор метода проверки подлинности подключения службы Kubernetes.

При выборе параметра подписки Azure kubernetes необходимо получить доступ к Azure DevOps во время настройки подключения службы. Могут возникнуть различные причины, по которым невозможно создать подключение к службе, например, вы создали частный кластер или кластер имеет локальных учетных записей, отключенных. В этих случаях Azure DevOps не может подключиться к кластеру во время настройки подключения к службе, и вы увидите зависшие экране загрузки пространств имен.

снимок экрана: выбор диалогового окна проверки подлинности подключения службы Kubernetes при загрузке пространств имен.

Начиная с Kubernetes 1.24 долговременные маркеры больше не создаются по умолчанию. Kubernetes рекомендует не использовать долгосрочные токены. В результате задачи, использующие подключение службы Kubernetes, созданное с помощью параметра подписки Azure, не имеют доступа к постоянному маркеру, необходимому для проверки подлинности и не удается получить доступ к кластеру Kubernetes. Это также приводит к замороженной загрузке пространств имен диалоге.

Использование подключения службы Azure Resource Manager для доступа к AKS

Для клиентов AKS тип подключения службы Azure Resource Manager предоставляет лучший способ подключения к частному кластеру или кластеру с отключенными локальными учетными записями. Этот метод не зависит от подключения к кластеру во время создания подключения к службе. Доступ к AKS откладывается в среду выполнения конвейера, что имеет следующие преимущества:

  • Доступ к (частному) кластеру AKS можно выполнить из локального или масштабируемого агента с линией зрения к кластеру.
  • Маркер создается для каждой задачи, которая использует подключение службы Azure Resource Manager. Это гарантирует подключение к Kubernetes с коротким маркером, который является рекомендацией Kubernetes.
  • Доступ к AKS можно получить даже при отключении локальных учетных записей.

Часто задаваемые вопросы о подключении к службе

Я получаю следующее сообщение об ошибке: не удалось найти секрет, связанный с учетной записью службы. Что происходит?

Вы используете подключение к службе Kubernetes с параметром подписки Azure. Мы обновляем этот метод для создания долгосрочных маркеров. Ожидается, что это будет доступно в середине мая. Однако рекомендуется начать использовать тип подключения службы Azure, а не использовать долгоживущие маркеры в руководстве Kubernetes.

Я использую AKS и не хочу ничего изменить, можно ли продолжать использовать задачи с подключением службы Kubernetes?

Мы обновляем этот метод для создания долгосрочных маркеров. Ожидается, что это будет доступно в середине мая. Тем не менее, обратите внимание, что этот подход подходит для руководства Kubernetes.

Я использую задачи Kubernetes и подключение службы Kubernetes, но не AKS. Должен ли я беспокоиться?

Задачи будут продолжать работать, как и раньше.

Будет ли удален тип подключения службы Kubernetes?

Наши задачи Kubernetes работают с любым кластером Kubernetes независимо от того, где они работают. Подключение службы Kubernetes будет продолжать существовать.

Я клиент AKS, и все работает хорошо, должен ли я действовать?

Изменить ничего не нужно. Если вы используете подключение службы Kubernetes и выбранную подписку Azure во время создания, следует учитывать руководство по Kubernetes по использованию долгосрочных маркеров.

Я создаю среду Kubernetes и не могу использовать подключения к службам.

Если вы не сможете получить доступ к AKS во время создания среды, можно использовать пустую среду и задать connectionType входные данные для подключения службы Azure Resource Manager.

У меня есть AKS, настроенный с помощью Azure Active Directory RBAC, и мой конвейер не работает. Будут ли эти обновления разрешать это?

Доступ к Kubernetes при включении AAD RBAC не связан с созданием маркера. Чтобы предотвратить интерактивный запрос, мы будем поддерживать kubelogin в будущем обновлении.

Значения команд

Входные данные команды принимают одну из следующих команд helm: create/delete/expose/get/init/install/login/ls/package/rollback/upgrade. Примеры приведены в разделе Примеры.

Все входные данные команды сопоставляются с набором входных данных задач. Команды, сопоставленные с входными данными задачи, назначаются в блоке синтаксиса YAML и в таблице входных данных задачи

Устранение неполадок

Задача HelmDeploy выдает ошибку "неизвестный флаг: --wait" при выполнении "helm init --wait --client-only" в Helm 3.0.2 версии.

Есть некоторые критические изменения между Helm 2 и Helm 3. Одна из них включает удаление тиллера, поэтому helm init команда больше не поддерживается. Удалите команду: инициализация при использовании версий Helm 3.0+ .

При использовании Helm 3, если system.debug имеет значение true, и используется команда Helm, конвейер завершается ошибкой, даже если обновление выполнено успешно.

Это известная проблема с Helm 3, как она записывает некоторые журналы в stderr. Задача развертывания Helm помечается как неудачная, если есть журналы для stderr или кода выхода ненулевых. Задайте входные данные задачи 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

В этом примере 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/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

Команда пакета

В этом примере 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 демонстрируется команда сохранения :

- 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 в конвейере.

Создание пары закрытых ключей для подписи диаграммы helm с помощью GPG

  1. Скачайте GPG.

  2. Запустите командную строку в режиме администратора. Выполните следующую команду, чтобы создать пару закрытого ключа, чтобы подписать диаграмму helm с помощью gpg. При создании ключа вам будет предложено указать имя пользователя и адрес электронной почты. Позже имя адреса электронной почты используется для имени созданной пары закрытых ключей.

    gpg --full-generate-key
    

    создать ключ

  3. Вам будет предложено ввести парольную фразу. Присвойте значение и нажмите кнопку "ОК".

    снимок экрана, на котором показана парольная фраза.

  4. После создания ключа можно просмотреть список ключей, содержащих как закрытые, так и открытые, с помощью следующей команды.

    • Просмотр списка закрытых ключей

      gpg --list-secret-keys
      

    • Просмотр списка открытых ключей

      gpg --list-keys
      

      открытых ключей

  5. Сохраните закрытые и открытые ключи в 2 разных файлах с расширением gpg, как показано ниже.

    • Для закрытого ключа
    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 Любое
Версия агента Все поддерживаемые версии агента.
Категория задач Внедрять