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-arm64Deixar o binário do Kind executável:
chmod +x ./kinddocker build -t explorecalifornia.com .
docker run --rm --name explorecalifornia.com -p 5000:80 -d explorecalifornia.comCriar o cluster com o Kind usando a configuração fornecida:
./kind create cluster --name explorecalifornia.com --config ./kind_config.yamlAplicar o ConfigMap:
kubectl apply -f ./kind_configmap.yamlIniciar o Docker Registry local:
docker run --name local-registry -d --restart=always -p 5000:5000 registry:2Taguear 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.comValidar o registro:
curl --location http://127.0.0.1:5000/v2/_catalogConectar o registro local à rede do Kind:
docker network connect kind local-registryCriar 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.yamlAplicar o deployment:
kubectl apply -f deployment.yamlVerificar se o pod foi criado:
kubectl get pods -l app=explorecalifornia.comFazer o port-forward para acessar a aplicação na porta 8080:
kubectl port-forward deployment/explorecalifornia.com 8080:80A 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.yamlEditar o arquivo service.yaml e modificar o campo metadata.name para explorecalifornia-svc.
Aplicar o serviço:
kubectl apply -f service.yamlVerificar todos os recursos relacionados:
kubectl get all -l app=explorecalifornia.comFazer o port-forward para acessar a aplicação na porta 8080:
kubectl port-forward service/explorecalifornia-svc 8080:80A 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.yamlEditar o arquivo ingress.yaml:
- Modificar o campo
pathTypeparaPrefix. - 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.yamlAplicar a configuração do Ingress Controller:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yamlValidar se o Ingress Controller foi aplicado corretamente:
kubectl get all -n ingress-nginxAdicionar o host no arquivo /etc/hosts:
sudo vim /etc/hostsAdicionar a linha:
127.0.0.1 explorecalifornia.com
Aplicar novamente o arquivo ingress.yaml:
kubectl apply -f ingress.yamlVerificar 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
