Este repositório foi criado para estudar Kubernetes através do curso FullCycle. Para isso, desenvolvi uma aplicação em Golang e configurei vários ambientes no Kubernetes para essa aplicação: DEV (Desenvolvimento), QAA (Qualidade), HML (Homologação) e PRD (Produção).
Neste tutorial, utilizaremos o Kind para rodar o Kubernetes localmente. Vamos criar Pods da mesma aplicação em diferentes ambientes, a saber:
- DEV (Desenvolvimento)
- QAA (Qualidade e Automação)
- HML (Homologação)
- PRD (Produção)
Primeiro, vamos criar um cluster Kubernetes usando o Kind:
kind create cluster --config=kind-cluster.yaml
Em seguida, conecte o kubectl
para interagir com o cluster recém-criado:
kubectl cluster-info --context kind-kind-cluster
Para permitir acesso externo aos Pods, adicionaremos o Ingress ao nosso cluster:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
Espere até que o controlador do Ingress esteja pronto:
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=90s
Agora, vamos realizar o deploy dos Pods para cada ambiente usando artefatos Deployment do Kubernetes:
kubectl apply -f <ambiente>/deployment.yaml
Verifique a criação dos Pods:
kubectl get pods
Em seguida, realizaremos o deploy dos Services para cada ambiente usando artefatos Service do Kubernetes:
kubectl apply -f <ambiente>/service.yaml
Verifique os Services criados:
kubectl get svc
Em seguida, realizaremos o deploy dos ConfigMap para cada ambiente usando artefatos ConfigMap do Kubernetes:
kubectl apply -f <ambiente>/configmap.yaml
Verifique os Services criados:
kubectl get confimap
Agora, criaremos o recurso Ingress para roteamento das requisições:
kubectl apply -f ingress.yaml
Verifique a criação do Ingress:
kubectl get ingress
Por fim, teste o acesso aos Pods em cada ambiente utilizando os seguintes links:
Este tutorial fornece uma visão geral clara e concisa de como configurar um ambiente Kubernetes local com diferentes ambientes usando o Kind. Certifique-se de ajustar os nomes dos arquivos <ambiente>/deployment.yaml
e <ambiente>/service.yaml
conforme necessário para cada ambiente específico.
Este tutorial irá guiá-lo através do processo de simulação do Horizontal Pod Autoscaler (HPA) em um cluster Kubernetes. Vamos aplicar o HPA, realizar um teste de carga para aumentar o consumo de CPU e verificar a criação de novas réplicas de pods.
Primeiro, aplique o artefato HPA no seu cluster Kubernetes. Substitua <ambiente>
pelo nome do seu ambiente.
kubectl apply -f <ambiente>/hpa.yaml
Após aplicar o HPA, verifique se ele foi criado corretamente:
kubectl get hpa
Você deve ver uma saída que mostra o HPA configurado no seu cluster.
Para aumentar o consumo de CPU e "forçar" o HPA a adicionar mais réplicas de pods, utilizaremos o Fortio para realizar um teste de carga. Execute o seguinte comando:
kubectl run -it --rm --image=fortio/fortio fortio -- load -qps 800 -t 120s -c 10 "http://server-golang-<ambiente>/info"
-qps 800
: Define a taxa de requisições por segundo.-t 120s
: Define a duração do teste para 120 segundos.-c 10
: Define o número de conexões simultâneas.
Após o teste de carga, aguarde alguns segundos e verifique se o HPA ajustou o número de réplicas conforme esperado.
Para verificar o estado atual do HPA:
kubectl get hpa
Para ver quantos pods foram criados em resposta ao aumento de carga:
kubectl get pods
Se tudo estiver configurado corretamente, você verá que o número de réplicas foi aumentado automaticamente pelo HPA para lidar com o aumento de carga. Este é um exemplo prático de como o HPA pode ajudar a gerenciar a escalabilidade de aplicações no Kubernetes.