Login
Login

Criar charts do Helm

Atualizado em 10 de February de 2026

Helm charts permitem empacotar aplicações Kubernetes em um bundle conveniente que inclui todos os recursos necessários para implantação e gerenciamento. Charts automatizam a criação, atualização e remoção de aplicações no Kubernetes, tornando a gestão mais simples e flexível.

Criar um novo chart

Para criar um novo chart, use o comando:

helm create <chart_name>

O Helm vai gerar automaticamente uma estrutura de diretórios básica e arquivos contendo os templates e configurações necessários para implantar a aplicação no Kubernetes.

Arquivos e diretórios principais

Chart.yaml

O arquivo principal do chart, que contém metadados: nome, versão, descrição e versão da aplicação. Pode incluir informações de dependências caso a aplicação dependa de outros charts.

Exemplo de uso:

  • Especifica qual aplicação está sendo implantada e sua versão.
  • Facilita o gerenciamento de versões do chart e rastreamento de mudanças.

values.yaml

Arquivo com parâmetros padrão usados para definir valores aplicados aos templates do chart, gerando os manifests finais do Kubernetes.

Exemplo de uso:

  • Define parâmetros como número de réplicas, tipo de serviço e imagem do container.
  • Permite sobrescrever valores via flag --set ou arquivo adicional durante a instalação.

templates/

Diretório contendo templates YAML para arquivos Kubernetes que definem objetos (pods, deployments, services etc.) que serão criados quando o chart for instalado. Templates usam a linguagem Go para gerar dinamicamente manifests com base nos valores do values.yaml.

Exemplo de uso:

  • Templates para criar objetos Kubernetes (ex.: deployment.yaml, service.yaml).
  • Lógica para configuração flexível de recursos (ex.: número de réplicas ou tipo de serviço).

charts/

Diretório para dependências, ou seja, outros charts necessários para a aplicação funcionar. Dependências podem ser instaladas localmente ou baixadas de repositórios remotos.

Exemplo de uso:

  • Dependências são baixadas com helm dependency update se especificadas no Chart.yaml.

.helmignore

Arquivo que funciona como .gitignore, excluindo arquivos e diretórios ao empacotar o chart em um arquivo tar.

Exemplo de uso:

  • Exclui arquivos desnecessários (ex.: documentação ou arquivos temporários) do pacote final.

Agora que revisamos a estrutura básica de um chart e a finalidade dos arquivos principais, vamos para um exemplo prático. Vamos criar um chart para implantar NGINX, configurar todos os parâmetros necessários e ver como os templates usam os dados do values.yaml para gerar recursos Kubernetes.

Criar a estrutura básica do chart

Comece criando a estrutura básica do chart:

helm create nginx-chart

Isso criará o diretório nginx-chart/ com os arquivos básicos.

nginx-chart
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│   	└── test-connection.yaml
└── values.yaml

Configurar o arquivo Chart.yaml

O Chart.yaml é um elemento chave de qualquer Helm chart. Ele especifica metadados do chart, como nome, versão, descrição e informações sobre dependências.

Exemplo de conteúdo do Chart.yaml para o chart NGINX:

apiVersion: v2      
name: nginx-chart   
description: A Helm chart for deploying NGINX  
version: 0.1.0      
appVersion: "1.21.0"

Campos principais:

  • apiVersion: versão da API do Helm para este chart. Use v2 para charts do Helm 3.
  • name: nome do chart, único no repositório.
  • description: breve descrição do que o chart faz.
  • version: versão do chart. Sempre que fizer alterações no chart, atualize esta versão.
  • appVersion: versão da aplicação (neste caso, NGINX) que será implantada. Não afeta a lógica do Helm, mas ajuda o usuário a identificar a versão instalada.

Configurar o arquivo values.yaml

O values.yaml é usado para definir valores padrão de parâmetros que podem ser alterados durante a instalação do chart. Configure assim:

replicaCount: 2

image:
  repository: nginx
  tag: "1.21.0"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80

serviceAccount:
  create: true
  name: ""

ingress:
  enabled: false
  annotations: {}
  hosts:
	- host: chart-example.local
  	paths: []
  tls: []

autoscaling:
  enabled: false
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 80

resources: {}

nodeSelector: {}

tolerations: []

affinity: {}

Este arquivo contém as seguintes configurações:

  • replicaCount: número de réplicas da aplicação.
  • image: configuração da imagem do container NGINX, incluindo versão (tag).
  • service: tipo de serviço e porta de acesso ao NGINX.
  • serviceAccount: cria uma service account para o chart.
  • ingress: parâmetros do Ingress (desativado por padrão).
  • autoscaling: parâmetros de autoscaling (desativado por padrão).

Configurar templates do chart

Agora vamos configurar os templates na pasta templates/, que usarão os valores do values.yaml.

templates/service.yaml

Template para criar um serviço Kubernetes:

apiVersion: v1
kind: Service
metadata:
  name: {{ include "nginx-chart.fullname" . }}
  labels:
	app: {{ include "nginx-chart.name" . }}
spec:
  type: {{ .Values.service.type }}
  ports:
	- port: {{ .Values.service.port }}
  	targetPort: 80
  selector:
	app: {{ include "nginx-chart.name" . }}

templates/deployment.yaml

Template para criar um deployment NGINX:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "nginx-chart.fullname" . }}
  labels:
	app: {{ include "nginx-chart.name" . }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
	matchLabels:
  	app: {{ include "nginx-chart.name" . }}
  template:
	metadata:
  	labels:
    	app: {{ include "nginx-chart.name" . }}
	spec:
  	serviceAccountName: {{ if .Values.serviceAccount.create }}{{ include "nginx-chart.serviceAccountName" . }}{{ else }}{{ .Values.serviceAccount.name }}{{ end }}
  	containers:
    	- name: nginx
      	image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
      	ports:
        	- containerPort: 80

templates/serviceaccount.yaml

Template para criar uma service account:

{{- if .Values.serviceAccount.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{ include "nginx-chart.serviceAccountName" . }}
{{- end }}

Verificar e instalar o chart

Verifique o chart em busca de erros:

helm lint ./nginx-chart

Instale o chart:

helm install test-nginx ./nginx-chart

Verifique o status do release:

helm status test-nginx

Verifique o estado dos pods:

kubectl get pods

Remover o chart

Quando a aplicação não for mais necessária, pode ser removida:

helm uninstall test-nginx
Esta página foi útil?
Atualizado em 10 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support