Compartilhar via


HelmDeploy@0 – Empacotar e implantar a tarefa de gráficos do Helm v0

Use essa tarefa para implantar, configurar ou atualizar um cluster do Kubernetes no Serviço de Contêiner do Azure executando comandos helm.

Sintaxe

# 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.

Entradas

connectionType - tipo de conexão
string. Necessário quando command != logout && command != package && command != save. Valores permitidos: Azure Resource Manager, Kubernetes Service Connection, None. Valor padrão: Azure Resource Manager.

Especifica o tipo de conexão.

  • Kubernetes Service Connection – especifique Kubernetes Service Connection para se conectar a qualquer cluster do Kubernetes usando kubeconfig ou a Conta de Serviço do Azure. Permite que você forneça um arquivo KubeConfig, especifique uma Conta de Serviço ou importe uma instância do AKS com a opção assinatura do Azure. Importar uma instância do AKS com a opção de Assinatura do Azure requer acesso ao cluster do Kubernetes no momento da configuração da Conexão de Serviço.
  • Azure Resource Manager – Especifique Azure Resource Manager para se conectar a um Serviço de Kubernetes do Azure usando a Conexão de Serviço do Azure. Não acessa o cluster do Kubernetes no tempo de configuração da Conexão de Serviço.
  • None - Use uma configuração pré-criada do Kubernetes armazenada localmente.

Para obter mais informações, consulte de conexão do Serviço na seção comentários do a seguir.


azureSubscription - assinatura do Azure
Alias de entrada: azureSubscriptionEndpoint. string. Necessário quando connectionType = Azure Resource Manager && command != logout && command != package && command != save.

O nome da Conexão de Serviço do Azure. Especifique uma assinatura do Azure que tenha seu registro de contêiner.


azureResourceGroup - grupo de recursos
string. Necessário quando connectionType = Azure Resource Manager && command != logout && command != package && command != save.

O nome do grupo de recursos na assinatura. Especifique um Grupo de Recursos do Azure.


kubernetesCluster - cluster do Kubernetes
string. Necessário quando connectionType = Azure Resource Manager && command != logout && command != package && command != save.

O nome do cluster do AKS. Especifique um Cluster Gerenciado do Azure.


useClusterAdmin - Usar credenciais de administrador de cluster
boolean. Opcional. Use quando connectionType = Azure Resource Manager && command != logout && command != package && command != save. Valor padrão: false.

Usa credenciais de administrador de cluster em vez de credenciais de usuário de cluster padrão.


kubernetesServiceConnection - de conexão do serviço Kubernetes
Alias de entrada: kubernetesServiceEndpoint. string. Necessário quando connectionType = Kubernetes Service Connection && command != logout && command != package && command != save.

Especifica uma conexão de serviço do Kubernetes.


namespace - namespace
string. Opcional. Use quando command != logout && command != package && command != save.

O namespace no qual você executa os comandos kubectl. Se não for especificado, a tarefa usará o namespace padrão. Especifique o namespace do Kubernetes a ser usado. Você pode especificar o namespace Tiller na seção avançada da tarefa ou passando a opção --tiller-namespace como um argumento.


azureSubscriptionForACR - assinatura do Azure para o Registro de Contêiner
Alias de entrada: azureSubscriptionEndpointForACR. string. Necessário quando command == save.

Especifica uma assinatura do Azure que tem o Registro de Contêiner do Azure.


azureResourceGroupForACR - grupo de recursos
string. Necessário quando command == save.

Especifica um Grupo de Recursos do Azure que tem o Registro de Contêiner.


azureContainerRegistry - do Registro de Contêiner do Azure
string. Necessário quando command == save.

Especifica um Registro de Contêiner do Azure a ser usado para enviar gráficos do Helm por push.


comando command -
string. Obrigatório Valores permitidos: create, delete, expose, get, init, install, login, logout, ls, package, rollback, save, upgrade, uninstall. Valor padrão: ls.

Especifica um comando helm.


chartType - tipo de gráfico
string. Necessário quando command == install || command == upgrade. Valores permitidos: Name, FilePath (Caminho do Arquivo). Valor padrão: Name.

Especifica como você deseja inserir informações do gráfico. Você pode fornecer o nome do gráfico ou pasta/caminho de arquivo para o gráfico.


de nome do gráfico chartName -
string. Necessário quando chartType == Name.

O nome da referência de gráfico a ser instalada. Isso pode ser uma URL ou um nome de gráfico. Por exemplo, se o nome do gráfico for stable/mysql, a tarefa será executada helm install stable/mysql.


chartPath - caminho do gráfico
string. Necessário quando chartType == FilePath || command == package.

O caminho para o gráfico a ser instalado. Esse pode ser um caminho para um gráfico empacotado ou um caminho para um diretório de gráfico descompactado. Por exemplo, se você especificar ./redis, a tarefa será executada helm install ./redis. Se você estiver consumindo um gráfico publicado como um artefato, o caminho será $(System.DefaultWorkingDirectory)/ARTIFACT-NAME/Charts/CHART-NAME.


chartVersion - versão
Alias de entrada: version. string. Opcional. Use quando command == package || command == install || command == upgrade.

Especifica a versão exata do gráfico a ser instalada. Se você não especificar a versão do gráfico, a tarefa instalará a versão mais recente. Defina a versão no gráfico para esta versão semver.


releaseName - nome da versão
string. Opcional. Use quando command == install || command == upgrade.

O nome da versão. Se você não especificar o nome da versão, a tarefa gerará uma geração automática para você. A entrada releaseName só é válida para comandos install e upgrade.


overrideValues - definir valores
string. Opcional. Use quando command == install || command == upgrade.

Especifica valores na linha de comando. Essa entrada pode especificar vários valores ou valores separados com vírgulas: key1=val1,key2=val2.

Você também pode especificar vários valores delimitando-os com uma nova linha, da seguinte maneira:

  • chave1=val1
  • chave2=val2

Se você tiver um valor que contenha novas linhas, use a opção valueFile. Caso contrário, a tarefa tratará a nova linha como um delimitador. A tarefa constrói o comando Helm usando esses valores definidos. Por exemplo, você pode definir o valor usando um comando como o seguinte: helm install --set key1=val1 ./redis.


de arquivo de valor valueFile -
string. Opcional. Use quando command == install || command == upgrade.

Especifica valores em um arquivo YAML ou em uma URL. Por exemplo, especificar myvalues.yaml resulta em helm install --values=myvals.yaml.


de Destino destination -
string. Opcional. Use quando command == package. Valor padrão: $(Build.ArtifactStagingDirectory).

Especifica valores em um arquivo YAML ou em uma URL.


canaryimage - Usar a versão de imagem canário.
boolean. Opcional. Use quando command == init. Valor padrão: false.

Especifica a imagem do Tiller canário. Use a versão de pré-lançamento mais recente do Tiller.


upgradetiller - de Tiller de Atualização
boolean. Opcional. Use quando command == init. Valor padrão: true.

Se true, essa entrada atualizará Tiller se Tiller já estiver instalado.


updatedependency - atualizar de dependência
boolean. Opcional. Use quando command == install || command == package. Valor padrão: false.

Se true, essa entrada atualizará uma atualização de dependência do Helm antes de instalar o gráfico. Atualiza as dependências de requirements.yaml para o diretório charts/ antes do empacotamento.


save - Salvar
boolean. Opcional. Use quando command == package. Valor padrão: true.

Salva o gráfico empacotado no repositório de gráfico local quando definido como true​.


install - Instalar se a versão não estiver presente.
boolean. Opcional. Use quando command == upgrade. Valor padrão: true.

Se uma versão com esse nome ainda não existir, essa entrada executará uma instalação.


recreate - recriar pods.
boolean. Opcional. Use quando command == upgrade. Valor padrão: false.

Executa a reinicialização de pods para o recurso, se aplicável.


resetValues - redefinir valores.
boolean. Opcional. Use quando command == upgrade. Valor padrão: false.

Redefine os valores para os valores incorporados ao gráfico.


force - Força
boolean. Opcional. Use quando command == upgrade. Valor padrão: false.

Força uma atualização de recurso por meio de uma ação de exclusão ou recriação, se necessário.


waitForExecution - de espera
boolean. Opcional. Use quando command == init || command == install || command == upgrade. Valor padrão: true.

Bloqueia a ação até que a execução do comando seja concluída.


argumentos arguments -
string. Opcional. Use quando command != login && command != logout.

As opções de comando do Helm.


enableTls - habilitar do TLS
boolean. Opcional. Use quando command != login && command != logout && command != package && command != save. Valor padrão: false.

Habilita o uso de SSL entre Helm e Tiller.


caCert - de certificado de autoridade de certificação
string. Necessário quando enableTls == true && command != login && command != logout && command != package && command != save.

O certificado de AC usado para emitir um certificado para o cliente Tiller e Helm.


de Certificado certificate -
string. Necessário quando enableTls == true && command != login && command != logout && command != package && command != save.

Especifique o certificado Tiller ou o certificado do cliente Helm.


privatekey - key
string. Necessário quando enableTls == true && command != login && command != logout && command != package && command != save.

Especifique a chave tiller ou a chave do cliente Helm.


tillernamespace - namespace tiller
string. Opcional. Use quando command != login && command != logout && command != package && command != save.

Especifique o namespace do Kubernetes do Tiller.


failOnStderr - falha no de erro padrão
boolean. Opcional. Use quando command != login && command != logout && command != package && command != save. Valor padrão: false.

Se essa entrada for true, essa tarefa falhará se algum erro for gravado no pipeline de erros ou se algum dado for gravado no fluxo de Erro Padrão. Caso contrário, a tarefa depende do código de saída para determinar a falha.


publishPipelineMetadata - Publicar de metadados de pipeline
boolean. Opcional. Use quando command != login && command != logout && command != package && command != save. Valor padrão: true.

Se essa entrada for true, a tarefa coletará e publicará metadados de implantação.


chartNameForACR - nome do gráfico para o Registro de Contêiner do Azure
string. Necessário quando command == save.

O nome do gráfico no Registro de Contêiner do Azure.


chartPathForACR - caminho do gráfico para o Registro de Contêiner do Azure
string. Necessário quando command == save.

O caminho do arquivo para o diretório do gráfico no Registro de Contêiner do Azure.


Opções de controle de tarefa

Todas as tarefas têm opções de controle além das suas entradas de tarefas. Para obter mais informações, consulte as opções de Controle de e as propriedades comuns da tarefa.

Variáveis de saída

Essa tarefa define as seguintes variáveis de saída , que você pode consumir em etapas downstream, trabalhos e estágios.

helmExitCode
o código de saída emitido da execução do comando Helm especificado.

helmOutput
a saída emitida da execução do comando Helm especificado.

Observações

Use HelmDeploy@0 para implantar, configurar ou atualizar um cluster do Kubernetes no Serviço de Contêiner do Azure executando comandos do Helm. O Helm é uma ferramenta que simplifica a implantação e o gerenciamento de aplicativos do Kubernetes usando um formato de empacotamento chamado gráficos.

Você pode definir, versão, compartilhar, instalar e atualizar até mesmo o aplicativo Kubernetes mais complexo usando o Helm.

  • O Helm ajuda você a combinar vários manifestos do Kubernetes (yaml), como serviço, implantações, configmaps e muito mais em uma única unidade chamada Gráficos do Helm. Você não precisa inventar ou usar uma tokenização ou uma ferramenta de modelagem.
  • Os Gráficos do Helm ajudam você a gerenciar as dependências do aplicativo e a implantar, bem como a reversão como uma unidade. Eles também são fáceis de criar, versão, publicar e compartilhar com outras equipes de parceiros.

O Azure Pipelines tem suporte interno para gráficos do Helm:

  • A tarefa do instalador da Ferramenta Helm pode ser usada para instalar a versão correta do Helm nos agentes.
  • O pacote do Helm e a tarefa de implantação podem ser usados para empacotar o aplicativo e implantá-lo em um cluster do Kubernetes. Você pode usar a tarefa para instalar ou atualizar o Tiller em um namespace do Kubernetes, para se conectar com segurança ao Tiller via TLS para implantar gráficos ou para executar qualquer comando do Helm, como lint.
  • A tarefa helm dá suporte à conexão com um Serviço de Kubernetes do Azure usando uma conexão de serviço do Azure. Você pode se conectar a qualquer cluster do Kubernetes usando kubeconfig ou uma conta de serviço.
  • As implantações do Helm podem ser complementadas usando a tarefa do Kubectl; por exemplo, criar/atualizar, imagepullsecret e outros.

Conexão de serviço

HelmDeploy@0 funciona com dois tipos de conexão de serviço: do Azure Resource Manager e de Conexão de Serviço kubernetes. Consulte Exemplos para obter exemplos sobre como configurar esses dois tipos de conexão.

Observação

Uma conexão de serviço não será necessária se um recurso de ambiente que aponta para um cluster do Kubernetes já tiver sido especificado no estágio do pipeline.

Considerações sobre a Conexão de Serviço do Kubernetes ao acessar o AKS

Você pode criar uma conexão de serviço do Kubernetes com qualquer uma das opções a seguir.

  • KubeConfig
  • Conta de serviço
  • Assinatura do Azure

Captura de tela da escolha de um método de autenticação de conexão de serviço do Kubernetes.

Ao selecionar a opção assinatura do Azure, o Kubernetes precisa estar acessível ao Azure DevOps no momento da configuração da conexão de serviço. Pode haver vários motivos pelos quais uma conexão de serviço não pode ser criada, por exemplo, você criou um cluster privado ou o cluster contas locais desabilitadas. Nesses casos, o Azure DevOps não pode se conectar ao cluster no momento da configuração da conexão de serviço e você verá um DevOps travado carregando namespaces tela.

Captura de tela da escolha de uma caixa de diálogo de autenticação de conexão de serviço do Kubernetes paralisada no carregamento de namespaces.

A partir do Kubernetes 1.24, os tokens de longa duração não são mais criados por padrão. O Kubernetes recomenda não usar tokens de longa duração. Como resultado, as tarefas que usam uma conexão de serviço do Kubernetes criada com a opção Assinatura do Azure não têm acesso ao token permanente necessário para autenticação e não podem acessar o cluster do Kubernetes. Isso também resulta na caixa de diálogo de carregamento de namespaces de congelados.

Usar a Conexão de Serviço do Azure Resource Manager para acessar o AKS

Para clientes do AKS, o tipo de conexão de serviço do Azure Resource Manager fornece o melhor método para se conectar a um cluster privado ou um cluster que tem contas locais desabilitadas. Esse método não depende da conectividade de cluster no momento em que você cria uma conexão de serviço. O acesso ao AKS é adiado para o runtime do pipeline, que tem as seguintes vantagens:

  • O acesso a um cluster AKS (privado) pode ser executado de um agente auto-hospedado ou de conjunto de dimensionamento com linha de visão para o cluster.
  • Um token é criado para cada tarefa que usa uma conexão de serviço do Azure Resource Manager. Isso garante que você esteja se conectando ao Kubernetes com um token de curta duração, que é o de recomendação do Kubernetes.
  • O AKS pode ser acessado mesmo quando as contas locais são desabilitadas.

Perguntas frequentes sobre a conexão de serviço

Recebo a seguinte mensagem de erro: não foi possível localizar nenhum segredo associado à conta de serviço. O que é que está a acontecer?

Você está usando a conexão do serviço Kubernetes com a opção assinatura do Azure. Estamos atualizando esse método para criar tokens de longa duração. Espera-se que isso esteja disponível em meados de maio. No entanto, é recomendável começar a usar o tipo de conexão de serviço do Azure e não usar tokens de longa duração de acordo com diretrizes do Kubernetes.

Estou usando o AKS e não quero alterar nada, posso continuar a usar tarefas com a conexão de serviço do Kubernetes?

Estamos atualizando esse método para criar tokens de longa duração. Espera-se que isso esteja disponível em meados de maio. No entanto, lembre-se de que essa abordagem é contra de diretrizes do Kubernetes.

Estou usando as tarefas do Kubernetes e a conexão de serviço do Kubernetes, mas não o AKS. Devo me preocupar?

As tarefas continuarão funcionando como antes.

O tipo de conexão de serviço kubernetes será removido?

Nossas tarefas do Kubernetes funcionam com qualquer cluster do Kubernetes, independentemente de onde estejam sendo executadas. A conexão de serviço do Kubernetes continuará a existir.

Sou cliente do AKS e tudo está funcionando bem, devo agir?

Não há necessidade de mudar nada. Se você estiver usando a conexão de serviço kubernetes e a assinatura do Azure selecionada durante a criação, você deverá estar ciente das diretrizes do Kubernetes sobre como usar tokens de longa duração.

Estou criando um ambiente do Kubernetes e não tenho nenhuma opção para usar conexões de serviço

Caso não possa acessar o AKS durante o tempo de criação do ambiente, use um ambiente vazio e defina a entrada connectionType para uma conexão de serviço do Azure Resource Manager.

Configurei o AKS com o RBAC do Azure Active Directory e meu pipeline não funciona. Essas atualizações resolverão isso?

Acessar o Kubernetes quando o RBAC do AAD está habilitado não está relacionado à criação de token. Para evitar um prompt interativo, daremos suporte a kubelogin em uma atualização futura.

Valores de comando

A entrada de comando aceita um dos seguintes comandos helm: create/delete/expose/get/init/install/login/logout/ls/package/rollback/upgrade. Exemplos são fornecidos na seção exemplos.

Cada entrada de comando é mapeada para um conjunto de entradas de tarefa. Os comandos mapeados para uma entrada de tarefa são designados no bloco de sintaxe YAML e na tabela de entradas da tarefa

Resolução de problemas

A tarefa HelmDeploy lança o erro 'sinalizador desconhecido: --wait' ao executar 'helm init --wait --client-only' na versão helm 3.0.2.

Há algumas mudanças significativas entre Helm 2 e Helm 3. Um deles inclui a remoção do lemes e, portanto, não há mais suporte para helm init comando. Remover comando: inite quando usar o Helm 3.0+ versões.

Ao usar o Helm 3, se System.debug for definido como true e a atualização do Helm for o comando que está sendo usado, o pipeline falhará mesmo que a atualização tenha sido bem-sucedida.

Esse é um problema conhecido com o Helm 3, pois grava alguns logs no stderr. A Tarefa de Implantação do Helm será marcada como falha se houver logs para stderr ou o código de saída não for zero. Defina o failOnStderr de entrada da tarefa: false para ignorar os logs impressos no stderr.

Exemplos

Azure Resource Manager

Este exemplo yaml mostra como o Azure Resource Manager é usado para se referir ao cluster do Kubernetes. Isso é usado com um dos comandos do helm e os valores apropriados necessários para o comando:

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)

Conexão de Serviço do Kubernetes

Este exemplo yaml mostra como a conexão de serviço do Kubernetes é usada para se referir ao cluster do Kubernetes. Isso é usado com um dos comandos do helm e os valores apropriados necessários para o comando:

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

Comandos

A entrada de comando aceita um dos seguintes comandos helm: create/delete/expose/get/init/install/login/logout/ls/package/rollback/upgrade.

Este exemplo yaml demonstra o comando ls:

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

comando init

Este exemplo yaml demonstra o comando init:

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

comando instalar

Este exemplo yaml demonstra o comando instalar:

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

comando package

Este exemplo yaml demonstra o comando do pacote:

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

comando upgrade

Este exemplo yaml demonstra o comando upgrade:

- 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

salvar comando

Este exemplo yaml demonstra o comando salvar :

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

Empacotar e assinar gráficos do Helm

Nesta seção, você aprenderá a empacotar e assinar gráficos do Helm em um pipeline.

Gerar um par de chaves pública privada para assinar o gráfico do helm usando GPG

  1. Baixe gpg.

  2. Inicie o prompt de comando em um modo de administrador. Execute o comando a seguir para gerar um par de chaves pública privada para assinar o gráfico do helm usando gpg. Ao criar a chave, você será solicitado a fornecer o nome de usuário e o endereço de email. O "endereço de email de nome" é usado posteriormente para nomear o par de chaves público-privada que é criado.

    gpg --full-generate-key
    

    gerar de chave

  3. Você será solicitado a fornecer a frase secreta. Dê o valor e clique em ok.

    captura de tela que mostra a frase secreta.

  4. Depois de criar a chave, você pode ver a lista de chaves que contém privadas e públicas usando o comando a seguir.

    • Para ver a lista de chaves privadas

      gpg --list-secret-keys
      

      Private KeysPrivate Keysde chaves privadas

    • Para ver a lista de chaves públicas

      gpg --list-keys
      

      Public KeysPublic Keysde chaves públicas

  5. Armazene as chaves privadas e públicas em dois arquivos diferentes com a extensão gpg, conforme mostrado abaixo.

    • Para uma chave privada
    gpg --export-secret-key AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00 contoso@microsoft.com > C:/somepath/privatekeys.gpg
    

    Você verá o arquivo privatekeys.gpg exportado para o caminho mencionado acima.

    • Para uma chave pública
    gpg --export-key AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00 contoso@microsoft.com > C:/somepath/publickey.gpg
    

    Você verá o arquivo publickey.gpg exportado para o caminho mencionado acima.

No Azure DevOps, salve o arquivo privatekey.gpg na biblioteca seção de arquivos seguros.

Exemplo

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)

Requisitos

Requisito Descrição
Tipos de pipeline YAML, build clássico, versão clássica
Execuções em Agente, DeploymentGroup
de demandas Nenhum
recursos Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho.
restrições de comando Qualquer
variáveis settable Qualquer
Versão do agente Todas as versões de agente com suporte.
Categoria de tarefa Implantar