Kubernetes: dicas e truques na orquestração de containers - Parte 5
Neste novo artigo (parte 5) retomo a série com dicas e truques envolvendo a orquestração de containers com Kubernetes.
A seguir listei os links dos 4 primeiros posts que já publiquei, caso ainda não tenha consultado os mesmos ou pretenda revê-los:
Kubernetes: dicas e truques na orquestração de containers - Parte 1
Kubernetes: dicas e truques na orquestração de containers - Parte 2
Kubernetes: dicas e truques na orquestração de containers - Parte 3
Kubernetes: dicas e truques na orquestração de containers - Parte 4
Exibindo informações adicionais sobre Pods e Deployment em execução
A seguir temos um exemplo de uso do comando kubectl get pods:
kubectl get pods -n apifinancas
Listando os Pods disponíveis no namespace apifinancas:
Já no próximo exemplo o comando kubectl get deployments:
kubectl get deployments -n apifinancas
Trará os Deployments para o namespace apifinancas:
Utilizando a opção -o wide ou --output wide serão exibidos detalhes adicionais para Pods:
kubectl get pods -n apifinancas -o wide
E Deployments:
kubectl get deployments -n apifinancas --output wide
Monitorando alterações em objetos com o parâmetro --watch
Podemos nos valer do parâmetro --watch com o objetivo de monitorar alterações em estruturas como Pods:
kubectl get pods -n apifinancas -o wide --watch
E Deployments:
kubectl get deployments -n apifinancas --output wide --watch
Decorrido algum tempo veremos o status dos novos (Pending, ContainerCreating, Runing) e antigos Pods (Terminating):
E do objeto Deployment (com a mudança na imagem da tag 4 para a 5):
Criando ambientes para testes com Redis, SQL Server e RabbitMQ
Nesta seção temos exemplos de criação de Deployments + Services/Load Balancers visando a montagem de ambientes de testes utilizando Redis:
SQL Server 2019:
E RabbitMQ:
No caso específico do RabbitMQ 2 portas foram expostas:
- 5672, para o envio e consumo de mensagens;
- 15672, com a interface de gerenciamento desta solução de mensageria.
Na próxima imagem podemos observar esta interface do RabbitMQ:
Obviamente que tais exemplos se destinam à criação rápida de instâncias para testes. Num eventual cenário que envolvesse as tecnologias mencionadas em ambiente de Produção deveriam ser configurados aspectos de segurança como o uso de certificados, secrets e volumes para os dados manipulados por instâncias de cada um destes serviços (Redis, SQL Server 2019 e Redis).
Declarando diferentes objetos num mesmo arquivo YAML
Observando os exemplos da seção anterior podemos notar que num mesmo arquivo YAML foram declarados objetos de Deployment (incluindo definições de Pods) e Services/Load Balancers. A separação entre essas diferentes estruturas num mesmo arquivo YAML acontece através do uso de 3 sinais de “-” (negativo) em uma linha: ---
Assim a execução do comando kubectl apply para cada arquivo:
kubectl apply -f .\redis-k8s.yml -n rediskubectl apply -f .\sqlserver-k8s.yml -n sqlserverkubectl apply -f .\rabbitmq-k8s.yml -n rabbitmq
Resultaria na criação dos respectivos Deployments + Pods e Services/Load Balancers.
Resultaria na criação dos respectivos Deployments + Pods e Services/Load Balancers.
Na imagem a seguir temos um exemplo disto com a criação de um Deployment e de um Service para um ambiente de testes com o Redis: