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