Baixar o Kind para MacOS (com chip ARM64):
curl --location --output ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.11.1/kind-darwin-arm64
Deixar o binário do Kind executável:
chmod +x ./kind
docker build -t explorecalifornia.com .
docker run --rm --name explorecalifornia.com -p 5000:80 -d explorecalifornia.com
Criar o cluster com o Kind usando a configuração fornecida:
./kind create cluster --name explorecalifornia.com --config ./kind_config.yaml
Aplicar o ConfigMap:
kubectl apply -f ./kind_configmap.yaml
Iniciar o Docker Registry local:
docker run --name local-registry -d --restart=always -p 5000:5000 registry:2
Taguear a imagem e empurrar para o registro local:
docker tag explorecalifornia.com 127.0.0.1:5000/explorecalifornia.com
docker push 127.0.0.1:5000/explorecalifornia.com
Validar o registro:
curl --location http://127.0.0.1:5000/v2/_catalog
Conectar o registro local à rede do Kind:
docker network connect kind local-registry
Criar o deployment com o comando dry-run
e gerar o arquivo deployment.yaml
:
kubectl create deployment --dry-run=client --image 127.0.0.1:5000/explorecalifornia.com explorecalifornia.com --output=yaml > deployment.yaml
Aplicar o deployment:
kubectl apply -f deployment.yaml
Verificar se o pod foi criado:
kubectl get pods -l app=explorecalifornia.com
Fazer o port-forward para acessar a aplicação na porta 8080:
kubectl port-forward deployment/explorecalifornia.com 8080:80
A aplicação deve estar acessível na porta 8080.
Criar o serviço ClusterIP com o comando dry-run
e gerar o arquivo service.yaml
:
kubectl create service clusterip --dry-run=client --tcp=80:80 explorecalifornia.com --output=yaml > service.yaml
Editar o arquivo service.yaml
e modificar o campo metadata.name
para explorecalifornia-svc
.
Aplicar o serviço:
kubectl apply -f service.yaml
Verificar todos os recursos relacionados:
kubectl get all -l app=explorecalifornia.com
Fazer o port-forward para acessar a aplicação na porta 8080:
kubectl port-forward service/explorecalifornia-svc 8080:80
A aplicação deve estar acessível na porta 8080.
Criar o Ingress com o comando dry-run
e gerar o arquivo ingress.yaml
:
kubectl create ingress explorecalifornia.com --rule="explorecalifornia.com/=explorecalifornia-svc:80" --dry-run=client --output=yaml > ingress.yaml
Editar o arquivo ingress.yaml
:
- Modificar o campo
pathType
paraPrefix
. - Retirar o objeto
status.loadbalancer
.
Descomentar as linhas comentadas em kind_config.yaml
e reexecutar o comando para criar o cluster, apenas para validar se está tudo correto.
Recriar o cluster (se necessário):
./kind create cluster --name explorecalifornia.com --config ./kind_config.yaml
Aplicar a configuração do Ingress Controller:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
Validar se o Ingress Controller foi aplicado corretamente:
kubectl get all -n ingress-nginx
Adicionar o host no arquivo /etc/hosts
:
sudo vim /etc/hosts
Adicionar a linha:
127.0.0.1 explorecalifornia.com
Aplicar novamente o arquivo ingress.yaml
:
kubectl apply -f ingress.yaml
Verificar se o Ingress está funcionando corretamente:
curl http://explorecalifornia.com
-
Escalar o deployment para 5 réplicas:
kubectl scale deployment explorecalifornia.com --replicas=5
-
Verificar nós no cluster:
kubectl get nodes
-
Verificar pods no namespace
kube-system
:kubectl get pods --namespace kube-system
-
Verificar clusters do KIND:
./kind get clusters
-
Deletar o cluster:
./kind delete cluster --name explorecalifornia.com
-
Remover o Docker Registry local:
docker rm local-registry