DevSecOps

9 dez, 2019

Kubernetes: dicas e truques na orquestração de containers – Parte 1

Publicidade

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.

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);
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-monitor-sites
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: monitor-sites
            image: renatogroffe/job-monitor-sites-3-0
            env:
            - name: BaseMonitoramento
              value: STRING_CONEXAO
          restartPolicy: OnFailure

 

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: