Helm
Helm é um gerenciador de pacotes popular para Kubernetes que ajuda você a empacotar, implantar e gerenciar aplicativos.
Helm Installation
1 2 3 | |
Using Helm Charts
Requirements
- Kind Cluster Running
Disponibilizando um repositório de charts:
1 2 3 4 5 6 7 8 | |
Depois de instalado, você poderá listar os charts que pode instalar:
1 | |
1 2 3 4 5 6 | |
Deploying a chart
instalando um chart do repositório da bitnami:
1 | |
1 2 3 4 5 6 7 | |
Removendo o chart instalando anteriormente:
1 | |
Helm basic usage
Check Helm commands oficial documentation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Empacotando sua aplicação usando Helm
Para empacotar sua aplicação, você só precisa navegar até o diretório raiz do sua aplicação e criar um Chart Helm executando o comando helm create
Isso criará uma nova estrutura de diretório que contém modelos, valores e outros arquivos de configuração.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Agora basta modificar os arquivos gerados no diretório do Chart:
-
Modifique o arquivo
Chart.yamlpara fornecer metadados sobre seu Chart -
Personalize o arquivo
values.yamlpara definir variáveis e valores padrão para sua aplicação. -
Personalize os manifestos do Kubernetes do sua aplicação no diretório
templates/
-
O
values.yamlcontém os valores padrão para um Chart. Esses valores podem ser substituídos pelos usuários durante a instalação do helm ou atualização do helm fazendo alterações no arquivo ou usando a opção--setpara sobrescrever valores (geralmente senhas e dados sensíveis). -
O diretório
templates/contém os arquivos de modelo que serão processados para gerar os manifestos finais do Kubernetes para implantação. -
O arquivo
Chart.yamlcontém os metadados do Chart. -
O diretório
charts/pode conter subcharts
Depois de empacotar sua aplicação como um Chart Helm, você pode implantá-lo em um cluster Kubernetes:
Install the Helm chart using the following command
1 2 3 4 | |
Personalize a instalação fornecendo values.yaml ou usando o sinalizador --set para substituir valores específicos:
1 | |
use --set to specify values directly on the command line.
Updating and Uninstalling
1 2 3 4 5 | |
Instale ou atualize uma release com um comando
Use helm upgrade com o parâmetro --install. Isso fará com que o Helm verifique se a release já está instalada para atualização. Caso contrário, ele executará uma instalação.
1 | |
Values Files
Um dos objetos built-in em um template helm é o Values. Este objeto fornece acesso aos valores passados para o Chart.
-
Um arquivo com values é passado para a instalação ou atualização do helm com o sinalizador -f
helm install -f myvals.yaml ./mychart -
Parâmetros individuais podem ser passados com
--set1helm install --set foo=bar ./mychart
Os arquivos de valores são arquivos YAML simples. Vamos editar mychart/values.yaml e depois editar nosso template de ConfigMap removendo os valores padrões em values.yaml, vamos definir apenas um parâmetro:
1 | |
Now we can use this inside of a template:
1 2 3 4 5 6 7 | |
Notice on the last line we access favoriteDrink as an attribute of Values
How this renders:
1 | |
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Como favoriteDrink é definido no arquivo values.yaml como coffee, esse é o valor exibido no template.
- Podemos substituir isso facilmente adicionando um parametro
--setem nossa chamada para a instalação do helm:
1 | |
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Já que --set tem precedência maior que o arquivo values.yaml padrão, nosso modelo gera drink: slurm.
Os arquivos de valores também podem conter conteúdo mais estruturado. Por exemplo:
-
poderíamos criar uma seção favorita em nosso arquivo
values.yamle adicionar nossas chaves lá:1 2 3
favorite: drink: coffee food: pizza -
Agora teríamos que modificar um pouco o template:
1 2 3 4 5 6 7 8
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" drink: {{ .Values.favorite.drink }} food: {{ .Values.favorite.food }}
Deleting a default key
Se precisar excluir uma chave definida no values, você pode substituir o valor da chave para nulo, nesse caso o Helm irá removerá a chave.
Exemplo: o Chart Drupal estável permite configurar um liveness probe
Aqui estão os valores padrão:
1 2 3 4 5 | |
Se você tentar substituir o handler usado no livenessProbe para exec em vez de httpGet usando:
1 | |
O Helm unirá as chaves, resultando no seguinte YAML:
1 2 3 4 5 6 7 8 9 | |
No entanto, deployment falharia porque você não pode declarar mais de um handler para o livenessProbe. Para superar isso, você pode instruir o Helm a excluir livenessProbe.httpGet definindo-o como null:
1 | |