Noções básicas do Helm

Concluído

Ao implantar, controlar a versão e atualizar aplicativos, você precisa garantir que tenha as versões corretas de bibliotecas de software e configurações para que o aplicativo funcione conforme o esperado.

Digamos que sua equipe de desenvolvimento decida implantar o site da empresa de pet shop no Kubernetes. Como parte do processo, sua equipe cria arquivos de implantação, serviço e entrada baseados em YAML. Você codifica e mantém as informações em cada arquivo para cada ambiente de destino manualmente. No entanto, realizar a manutenção de três arquivos para cada ambiente é trabalhoso e aumenta a complexidade à medida que o aplicativo cresce.

A diagram that shows a container deployed to a Kubernetes node using a deployment, a service, and an ingress YAML file.

Você pode usar o Helm para simplificar o processo de implantação do aplicativo e evitar configurações e variáveis de implantação embutidas em código.

O que é o Helm?

O Helm é um gerenciador de pacotes para Kubernetes que combina todos os recursos e informações de implantação de seu aplicativo em um único pacote de implantação.

A diagram shows a containerized app deployed to a Kubernetes cluster using a Helm chart.

Você pode pensar no Helm de forma semelhante ao gerenciador de pacotes do Windows no Windows, a APT (ferramenta de pacote avançada) no Linux ou o Homebrew no macOS. Você especifica o nome do aplicativo que deseja instalar, atualizar ou remover e o Helm cuida do processo.

Com o Helm, você não está limitado a instalar um único aplicativo por vez. O Helm permite que você crie arquivos de script YAML modelados e legíveis para gerenciar a implantação do aplicativo. Esses arquivos de modelo permitem especificar todas as dependências necessárias, o mapeamento de configuração e os segredos usados para gerenciar a implantação de um aplicativo com êxito.

O Helm usa quatro componentes para gerenciar implantações de aplicativo em um cluster do Kubernetes:

  • O cliente do Helm
  • Gráficos Helm
  • Versões do Helm
  • Repositórios do Helm

O que é o cliente do Helm?

O cliente do Helm é um binário instalado do cliente responsável por criar e enviar os arquivos de manifesto necessários para implantar um aplicativo do Kubernetes. O cliente é responsável pela interação entre o usuário e o cluster do Kubernetes.

A diagram shows the communication between three Helm components to create a Helm release; the client, chart, and repository.

O cliente do Helm está disponível para todos os principais sistemas operacionais e está instalado em seu PC cliente. No Azure, o cliente do Helm é pré-instalado no Cloud Shell e dá suporte a todos os recursos de segurança, identidade e autorização do Kubernetes.

Observação

Este módulo considera o uso do Helm v3. Você pode executar o comando helm version para verificar a versão do Helm em execução no dispositivo cliente. Se você estiver executando o Helm v2, saiba que alguns dos parâmetros de comando nesse módulo serão diferentes.

O que é um gráfico do Helm?

Um gráfico do Helm é um pacote de implantação modelo que descreve um conjunto relacionado de recursos do Kubernetes. Ele contém todas as informações necessárias para criar e implantar os arquivos de manifesto para que um aplicativo seja executado em um cluster do Kubernetes.

Um gráfico do Helm consiste em vários arquivos e pastas para descrever o gráfico. Alguns dos componentes são necessários, enquanto outros são opcionais. Você escolhe quais componentes incluir conforme os requisitos de configuração de aplicativos.

A lista a seguir descreve os componentes de arquivo e pasta de um gráfico do Helm com os itens necessários em negrito:

Arquivo / Pasta Descrição
Chart.yaml Um arquivo YAML que contém as informações sobre o gráfico.
values.yaml Os valores de configuração padrão para o gráfico.
templates/ Uma pasta que contém os modelos de implantação para o gráfico.
LICENSE Um arquivo de texto sem formatação que contém a licença do gráfico.
README.md Um arquivo de marcação que contém instruções sobre como usar o gráfico.
values.schema.json** Um arquivo de esquema para aplicar a estrutura no arquivo values.yaml.
charts/ Uma pasta que contém todos os subgráficos para o gráfico principal.
crds/ Definições de recursos personalizados.
templates/Notes.txt Um arquivo de texto que contém observações de uso do modelo.

O que é uma versão do Helm?

Uma versão do Helm é o aplicativo ou grupo de aplicativos implantados usando um gráfico. Sempre que você instala um gráfico, uma nova instância de um aplicativo é criada no cluster. Cada instância tem um nome de versão que lhe permite interagir com a instância específica do aplicativo.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The release is highlighted.

Por exemplo, digamos que você instalou duas instâncias Nginx em seu cluster do Kubernetes usando um gráfico. Posteriormente, você decide atualizar a primeira instância do Nginx, mas não a segunda. Como as duas versões são diferentes, você pode atualizar a primeira versão sem afetar a segunda.

O que é um repositório do Helm?

Um repositório do Helm é um servidor HTTP dedicado que armazena informações em gráficos do Helm. O servidor hospeda um arquivo que descreve gráficos e de que local baixar cada gráfico.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The repository is highlighted.

O projeto do Helm hospeda vários gráficos públicos e existem muitos repositórios com gráficos que você pode reutilizar. Os repositórios do Helm simplificam a descoberta e a reutilização de pacotes do Helm.

Benefícios de usar o Helm

O Helm apresenta vários benefícios que simplificam a implantação de aplicativos e aumentam a produtividade no ciclo de vida de desenvolvimento e implantação de aplicativos nativos de nuvem. Com o Helm, você tem versões de aplicativo que são:

  • Repetível,
  • Confiável,
  • Gerenciáveis em ambientes diversos e complexos, e
  • Reutilizáveis em diferentes equipes de desenvolvimento.

Um gráfico do Helm padroniza a implantação de um aplicativo usando a lógica do modelo empacotado que é parametrizada por valores de entrada definidos. Esse design de pacote controlado por modelo oferece uma abordagem independente do ambiente para implantar e compartilhar aplicativos nativos de nuvem.