Kubernetes: dicas e truques na orquestração de containers - Parte 1
Neste novo artigo inicio uma série com diversas dicas e truques envolvendo o uso do Kubernetes como solução para orquestração de containers Docker. Sempre que possível darei andamento a esta iniciativa, com novos conteúdos e orientações úteis a profissionais da área de Desenvolvimento, Infraestrutura e DevOps.
Aproveito este post para deixar aqui também um convite. Entre os dias 2 e 4 de Dezembro/2019 acontecerá o DevWeek 2019, o evento de final de ano do Canal .NET voltado a desenvolvedores de software.
Serão 9 palestras noturnas, gratuitas e online ao longo de 3 dias, cobrindo diversas tecnologias e temas de destaque na área de software (sobretudo .NET, Microsoft Azure, Docker e Kubernetes).
Para efetuar sua inscrição acesse e faça sua inscrição pelo Meetup, a transmissão será via YouTube e a grade será divulgada em breve.
Azure Kubernetes Service (AKS): criando um cluster Kubernetes na nuvem Microsoft
Tendo por objetivo simplificar o gerenciamento e a operação de clusters do Kubernetes, o Azure Kubernetes Service (AKS) é um serviço que integra a plataforma de cloud computing da Microsoft.
Já abordei a criação de ambientes e a implementação de soluções com essa alternativa no seguinte artigo:
Orquestração de containers na Nuvem com o Azure Kubernetes Service (AKS) | Microsoft Tech
E também em um webcast gravado para a Microsoft (juntamente com meu amigo Milton Câmara - Microsoft MVP) e que pode ser assistido gratuitamente através do seguinte link:
Kubernetes: do Pod ao Deployment Automatizado
Na imagem a seguir é possível observar um recurso do AKS com 2 nodes Linux:
A infraestrutura alocada por este recurso pode ser observada na próxima imagem:
Cronjobs: execução pré-agendada de Jobs/rotinas de processamento
Embora o uso do Kubernetes esteja comumente associado ao deployment de soluções Web, temos também a opção de publicar num cluster aplicações que executarão como rotinas de maneira periódica: isto é possível através da criação de jobs automatizados conhecidos como CronJobs.
Nesta seção demonstrarei a publicação de um CronJob em um cluster Kubernetes, fazendo uso para isto da seguinte imagem pública disponibilizada no Docker Hub:
renatogroffe/job-monitor-sites-3-0
O job correspondente a tal imagem foi implementado utilizando .NET Core 3.0, com o código do mesmo já disponibilizado no GitHub:
.NET Core 3.0 + Console Application + Azure Table Storage + Serilog + Docker
O conteúdo do arquivo YAML com as definições para a criação de um CronJob está na listagem a seguir:
- Em kind foi especificado o tipo do objeto (CronJob);
- O nome do job (cronjob-monitor-sites) está indicado na propriedade name de metadata;
- Dentro de spec temos a propriedade schedule, em que uma cron expression será utilizada para determinar a periodicidade com que acontecerá o processamento. Neste exemplo foram definidas execuções a cada 2 minutos;
- Já em container temos especificada a imagem que servirá de base para a geração do CronJob (renatogroffe/job-monitor-sites-3–0). Em env foi configurada a string de conexão (BaseMonitoramento) ao Azure Table Storage, valor este indicado na imagem anterior.
Para criar o CronJob baseado neste arquivo YAML executar o seguinte comando (via PowerShell ou Bash):
kubectl create -f .\cronjob-monitoramentosites.yaml
Com o comando:
kubectl get cronjobs
Podemos verificar o status atual do CronJob. No exemplo da próxima imagem é possível notar que o job está suspenso, aguardando uma próxima execução:
Ao consultar a tabela Monitoramento vinculada à conta storagegroff teremos os resultados de execuções do CronJob: