Criando e implantando um aplicativo com Helm

1. Criando um modelo personalizado

O comando helm create <nome_do_modelo> é usado para criar um novo chart Helm. Helm é o gerenciador de pacotes do Kubernetes, utilizado para definir, instalar e atualizar aplicações no Kubernetes.

Ao executar o comando helm create mychart, o Helm cria uma estrutura de diretórios contendo um chart básico. Este chart é um modelo para definir aplicações no Kuberentes, incluindo arquivos como Chart.yaml (que descreve metadados do chart), values.yaml (para armazenar valores padrão e prompts de entrada) e templates/ (que define os templates dos recursos do Kubernetes).

Após a criação do chart, ele pode ser empacotado em um arquivo .tgz usando o comando helm package e instalado ou atualizado no cluster Kubernetes com helm install ou helm upgrade.

# Cria um novo chart
$ helm create mychart

# Verifica a criação do chart
$ ls
mychart

# Navega até o diretório do chart
$ cd mychart
$ ls
charts  Chart.yaml  templates  values.yaml

2. Limpar a pasta templates e usar comandos k8s para exportar YAML

# Navega até a pasta templates
$ cd templates
$ ls
deployment.yaml  _helpers.tpl  hpa.yaml  ingress.yaml  NOTES.txt  serviceaccount.yaml  service.yaml  tests

# Limpa a pasta templates
$ rm -rf *
$ ls

3. Criar YAML usando comandos k8s

# Cria um novo deployment e salva o YAML
$ kubectl create deploy web-test --image=nginx --dry-run -o yaml > web-deploy.yaml

Este comando cria um novo objeto Deployment no Kubernetes, chamado web-test, utilizando a imagem nginx como base. As opções utilizadas são:

  • kubectl: ferramenta de linha de comando para interagir com o Kubernetes.
  • create: cria um novo recurso.
  • deploy: especifica que o recurso criado será um Deployment.
  • web-test: nome do Deployment.
  • --image=nginx: imagem Docker a ser usada.
  • --dry-run: simula a execução sem realmente criar o recurso.
  • -o yaml: formata a saída como YAML.
  • > web-deploy.yaml: redireciona a saída para um arquivo.

4. Criar um serviço (svc)

$ kubectl expose deployment web-test --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > servics.yaml

Este comando expõe o Deployment web-test como um serviço, configurando a porta 80. As opções utilizadas são:

  • expose: expõe um Pod como um serviço.
  • --port=80: porta do serviço.
  • --target-port=80: porta do alvo (Pod).
  • --type=NodePort: tipo de serviço.
  • --dry-run e -o yaml: simulam a criação e formatam a saída como YAML.
  • > servics.yaml: redireciona a saída para um arquivo.

5. Arquivos criados na pasta templates

$ ls
servics.yaml  web-deploy.yaml

6. Instalando o template personalizado com Helm

# Instala o chart
$ helm install web1 mychart/
NAME: web1
LAST DEPLOYED: Sun Jan 14 01:10:06 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

# Verifica os pods e serviços criados
$ kubectl get svc -A
NAMESPACE     NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP                  203d
default       web-test              NodePort    10.103.178.251   <none>        80:30187/TCP             39s

$ kubectl get pod -A
NAMESPACE     NAME                                 READY   STATUS              RESTARTS   AGE
default       nginx-dep1-cf6cfcf66-2sh46           0/1     Completed           0          37d
default       web-test-5f547489c6-rm5c8            0/1     ContainerCreating   0          63s

7. Desinstalando o aplicativo com Helm

# Desinstala o release
$ helm uninstall web1
release "web1" uninstalled

8. Atualizando o aplicativo com Helm

# Instala o chart novamente
$ helm install web1 mychart/
NAME: web1
LAST DEPLOYED: Sun Jan 14 01:14:16 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

# Atualiza o chart
$ helm upgrade web1 mychart/
Release "web1" has been upgraded. Happy Helming!
NAME: web1
LAST DEPLOYED: Sun Jan 14 01:14:23 2024
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None

Tags: Helm kubernetes YAML Deployment Service

Publicado em 9-22 22:22