Kind + Kubernetes Local: clusters rápidos para testes e CI

kindkubernetesk8s
Banner sobre Kind e Kubernetes

Introdução

O Kubernetes (K8s) se consolidou como a principal ferramenta de orquestração de containers, mas configurar clusters locais para testes ou desenvolvimento pode ser trabalhoso. É nesse cenário que surge o Kind (Kubernetes in Docker) — uma solução leve que roda clusters Kubernetes completos dentro de containers Docker.

Criado inicialmente para testes do próprio Kubernetes, o Kind rapidamente se tornou útil também para desenvolvedores e engenheiros DevOps que desejam experimentar e validar aplicações em um ambiente Kubernetes local, sem a complexidade da nuvem.

TL;DR

Kind (Kubernetes in Docker) é uma ferramenta open source que cria clusters Kubernetes completos dentro de containers Docker, sem precisar de VMs. Ideal para desenvolvimento local, testes e pipelines de CI/CD, o Kind provisiona clusters descartáveis em segundos — permitindo validar manifests e aplicações sem depender de ambientes em nuvem.


O que é o Kind?

Kind é um projeto open source que executa clusters Kubernetes dentro de containers Docker.

  • Cada do cluster é um container.
  • O cluster é totalmente descartável.
  • É ideal para testes locais, pipelines de CI/CD e aprendizado.

Em resumo: com poucos comandos você tem um cluster Kubernetes completo rodando na sua máquina.

Arquitetura: Kind em uma única visão

graph TD
    A["Máquina Host"] --> B["Docker Engine"]
    B --> C["Kind Cluster"]
    C --> D["Control Plane<br/>(container)"]
    C --> E["Worker 1<br/>(container)"]
    C --> F["Worker N<br/>(container)"]
    D --> G["API Server<br/>etcd<br/>Controller Manager"]
    E --> H["Kubelet<br/>Container Runtime<br/>Network Proxy"]
    F --> H
    I["kubectl"] --> D
    J["Docker CLI"] --> B

Vantagens do Kind

  1. Rapidez – Criação de clusters em segundos.
  2. Portabilidade – Funciona em qualquer máquina com Docker.
  3. Simplicidade – Não depende de VMs, como o Minikube.
  4. Integração em CI/CD – Muito usado em pipelines de testes.
  5. Flexibilidade – Suporte a múltiplos nós e configuração via YAML.

Instalação

Pré-requisitos:

  • Docker instalado.
  • Go (opcional, se for compilar do código-fonte).

Instalação simples (Linux/MacOS):

# Via Go
go install sigs.k8s.io/kind@latest

Ou via binário pré-compilado

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.23.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind

Criando um cluster

Com um único comando você já tem um cluster rodando:

kind create cluster --name meu-cluster

Verificando os nós:

kubectl get nodes

Customizando o cluster

Você pode criar clusters com múltiplos nós via arquivo de configuração:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
  disableDefaultCNI: false
  kubeProxyMode: ipvs
nodes:
  - role: control-plane
  - role: worker
  - role: worker

Criando o cluster:

kind create cluster --config kind-config.yaml --name cluster-dev

Topologia de um cluster multi-nó

graph TB
    subgraph cluster["Kind Cluster: cluster-dev"]
        CP["Control Plane Node<br/>(container)"]
        W1["Worker Node 1<br/>(container)"]
        W2["Worker Node 2<br/>(container)"]

        CP --> API["API Server<br/>Scheduler<br/>Controller Manager"]
        W1 --> KB1["Kubelet<br/>Container Runtime"]
        W2 --> KB2["Kubelet<br/>Container Runtime"]

        API -->|manages| KB1
        API -->|manages| KB2
    end

    kubectl["kubectl<br/>(client)"] -->|API calls| API

Integração com Docker

Como os nós são containers Docker, você pode listá-los:

docker ps
docker exec -it <container-id> bash

Ciclo de vida: do local para CI/CD

graph LR
    A["kind create cluster<br/>--config kind-config.yaml"] --> B["Cluster<br/>Running"]
    B --> C["kubectl apply<br/>-f deployment.yaml"]
    C --> D["App<br/>Deployed"]
    D --> E["Execute Tests<br/>Integration Tests<br/>E2E Tests"]
    E --> F{Tests<br/>Pass?}
    F -->|Yes| G["CI/CD Success<br/>Push to Registry"]
    F -->|No| H["Debug Logs<br/>Fix Issues"]
    H --> I["kind delete cluster<br/>--name cluster-dev"]
    G --> I
    I --> J["Cleanup<br/>Next Run"]
    J -->|Repeat| A

Casos de uso

  • Desenvolvimento local: testar aplicações antes da nuvem.
  • CI/CD: validar deployments em pipelines.
  • Aprendizado: praticar comandos de Kubernetes.
  • Testes de configuração: validar manifests e CRDs em ambiente isolado.

Limitações

Apesar de útil, o Kind não substitui clusters reais em produção:

  • Não foi feito para workloads críticos.
  • Rede e performance diferem de ambientes em nuvem.
  • Recursos limitados à máquina host.

Conclusão

O Kind é uma ferramenta poderosa para quem trabalha com Kubernetes. Ele simplifica a criação de clusters locais, acelera o desenvolvimento e é ideal para cenários de teste, aprendizado e integração contínua.

Se você busca praticidade e agilidade com Kubernetes, o Kind é uma das melhores opções disponíveis.

Relacionados

Postagens relacionadas

kindkubernetesk8sdocker+2