Tutorial: Rodando WordPress no Kubernetes com Kind no Windows 11 (sem WSL)
Nível: Iniciante
Pré-requisitos: Windows 11, Docker Desktop instalado
Objetivo: Criar um cluster Kubernetes local com Kind, implantar WordPress + MySQL e acessá-lo pelo navegador emhttp://localhost:30008
📦 Parte 1: Instalando o Kind no Windows 11
Passo 1: Instale o Docker Desktop
- Baixe o Docker Desktop para Windows
- Instale e inicie o Docker Desktop
- Certifique-se de que o Docker está rodando (ícone no systray deve estar verde)
⚠️ Importante: Kind usa o Docker para criar nós do Kubernetes. Sem o Docker, o Kind não funciona.
Passo 2: Instale o kubectl (linha de comando do Kubernetes)
- Abra o PowerShell como Administrador
- Execute:
curl.exe -LO "https://dl.k8s.io/release/v1.30.0/bin/windows/amd64/kubectl.exe"
-
Mova o executável para uma pasta no seu
PATH(ex:C:\\Windows):
Move-Item .\\kubectl.exe C:\\Windows\\kubectl.exe
- Teste:
kubectl version --client
✅ Se aparecer a versão, está tudo certo!
Passo 3: Instale o Kind
- No PowerShell (não precisa ser admin):
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.23.0/kind-windows-amd64
-
Renomeie e mova para o
PATH:
Move-Item .\\kind-windows-amd64.exe C:\\Windows\\kind.exe
- Teste:
kind version
✅ Pronto! Agora você tem
kubectlekindfuncionando no Windows 11.
📘 Glossário Básico de Kubernetes
Antes de continuar, vamos entender os termos mais comuns:
| Termo | Definição |
|---|---|
| Kubernetes | Plataforma open-source para automatizar implantação, escalonamento e gerenciamento de aplicações em contêineres. |
| Cluster | Conjunto de máquinas (nós) que executam aplicações em contêineres gerenciadas pelo Kubernetes. Pode ser local (como com Kind) ou na nuvem. |
| Pod | A menor unidade do Kubernetes. Um Pod pode conter um ou mais contêineres que compartilham rede e armazenamento. |
| kubectl | Linha de comando usada para interagir com o cluster Kubernetes (criar, listar, deletar recursos, etc.). |
| Helm | "Gerenciador de pacotes" do Kubernetes. Facilita a instalação de aplicações complexas (como WordPress) com apenas um comando. (Não usaremos Helm neste tutorial, mas é bom saber!) |
🛠️ Parte 2: Criando o Cluster com Kind
Como o Kind não expõe portas automaticamente no Windows, precisamos configurar o mapeamento de portas.
Passo 1: Crie um arquivo de configuração do cluster
Abra o Bloco de Notas e cole:
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30008
hostPort: 30008
listenAddress: "127.0.0.1"
protocol: TCP
Salve como kind-config.yaml na sua pasta de trabalho (ex: C:\\k8s\\kind-config.yaml).
🔍 O que isso faz?
Mapeia a porta 30008 do seu computador → 30008 dentro do nó do cluster, permitindo acessar serviços do Kubernetes pelo navegador.
Passo 2: Crie o cluster
No PowerShell, na pasta onde está o kind-config.yaml:
kind create cluster --name wordpress-cluster --config kind-config.yaml
⏱️ Espere 1-2 minutos. O Kind baixa uma imagem do Kubernetes e sobe um contêiner com o nó de controle.
🧩 Parte 3: Implantando o WordPress + MySQL
Passo 1: Crie o arquivo de implantação
Crie um arquivo chamado wordpress-full.yaml com o seguinte conteúdo:
# wordpress-full.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
meta
name: mysql-pvc
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
meta
name: mysql
spec:
replicas: 1
selector:
matchLabels: { app: mysql }
template:
meta
labels: { app: mysql }
spec:
containers:
- name: mysql
image: mysql:8.0
env:
- name: MYSQL_ROOT_PASSWORD
value: "senha123"
- name: MYSQL_DATABASE
value: "wordpress"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-storage
persistentVolumeClaim:
claimName: mysql-pvc
---
apiVersion: v1
kind: Service
meta
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
---
apiVersion: apps/v1
kind: Deployment
meta
name: wordpress
spec:
replicas: 1
selector:
matchLabels: { app: wordpress }
template:
meta
labels: { app: wordpress }
spec:
containers:
- name: wordpress
image: wordpress:6.6-php8.2-apache
ports:
- containerPort: 80
env:
- name: WORDPRESS_DB_HOST
value: "mysql:3306"
- name: WORDPRESS_DB_NAME
value: "wordpress"
- name: WORDPRESS_DB_USER
value: "root"
- name: WORDPRESS_DB_PASSWORD
value: "senha123"
---
apiVersion: v1
kind: Service
meta
name: wordpress
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30008
selector:
app: wordpress
💡 Explicação rápida:
- Deployment: Define como rodar os contêineres (MySQL e WordPress)
- Service: Expõe os pods na rede. O
NodePortpermite acesso externo.- PersistentVolumeClaim: Garante que os dados do MySQL não sejam perdidos se o Pod for recriado.
Passo 2: Aplique a configuração
No PowerShell:
kubectl apply -f wordpress-full.yaml
Aguarde 1-2 minutos para os contêineres serem baixados e iniciados.
Verifique se os pods estão prontos:
kubectl get pods
Você deve ver algo como:
NAME READY STATUS RESTARTS AGE
mysql-xxxxx 1/1 Running 0 1m
wordpress-xxxxx 1/1 Running 0 1m
🌐 Parte 4: Acessando o WordPress
Abra seu navegador e acesse:
Você verá a tela de instalação do WordPress!
Siga os passos (escolha idioma, crie usuário, etc.) e pronto: seu WordPress está rodando no Kubernetes!
🧹 Parte 5: Limpando Tudo (quando quiser)
Para remover tudo:
# Remove os recursos do Kubernetes
kubectl delete -f wordpress-full.yaml
# Remove o cluster Kind
kind delete cluster --name wordpress-cluster
📚 Guia Rápido: Principais Comandos do Kubernetes
| Comando | O que faz |
|---|---|
|
|
Lista todos os pods em execução |
|
|
Lista os serviços |
|
|
Mostra os logs de um pod |
|
|
Mostra detalhes de um pod (útil para debug) |
|
|
Cria ou atualiza recursos a partir de um arquivo YAML |
|
|
Remove recursos definidos no arquivo |
|
|
Cria um cluster local |
|
|
Remove um cluster local |
✅ Conclusão
Agora você sabe como:
- Instalar Kind e kubectl no Windows 11 (sem WSL)
- Criar um cluster Kubernetes local com mapeamento de portas
- Implantar uma aplicação completa (WordPress + MySQL) no Kubernetes
- Acessar sua aplicação pelo navegador
Esse é um ótimo ponto de partida para explorar mais do Kubernetes: Ingress, ConfigMaps, Secrets, Helm, e muito mais!
📌 Dica para o futuro: Quando quiser testar outras aplicações, basta alterar o arquivo YAML ou usar o
kubectl port-forwardpara acesso rápido sem NodePort.




