Páginas filhas
  • DSERTSS3-3783 - DT TRANSMITE - Kubernetes - Liviness / Readness (EDI-WORKER | EDI-API)


01. DADOS GERAIS

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

Módulo:

TOTVS Transmite

Função:Não Há
País:Brasil
Ticket:Não Há
Requisito/Story/Issue (informe o requisito relacionado) :DSERTSS3-3783

02. SITUAÇÃO/REQUISITO

Configuração do liveness / readness probe no kubernetes para monitorar a saúde dos pods dos projetos transmit-edi-api e transmit-edi-worker, com o objetivo de reiniciá-lo quando identificado que o mesmo não está saudável e assim restabelecer o serviço.

03. SOLUÇÃO

Conforme definição dos recursos liveness / readness probe descritos na documentação do kubermetes e baseado no funcionamento dos projetos edi-api e edi-worker, foi possível implementar o requisito da issue utilizando somente o liveness probe.

As seguintes configurações e alterações foram implementadas:

  • transmit-edi-api:
    • Disponibilizado endpoint api/v1/edi/healthy para realização do teste via requisição Http Get;
    • Alteração no arquivo deployment.yaml configurando o recurso para executar o teste utilizando o endpoint acima;
  • transmit-edi-worker:
    • Implementado método para gerar o arquivo /healthy/livenessState.txt no diretório local da aplicação ao iniciar o pod e também ao completar o processamento das mensagens recebidas na fila do message broker. 
    • Alteração no arquivo deployment.yaml configurando a execução do recurso para checar o arquivo livenessState.txt. A aplicação será considerada "saudável" caso o arquivo exista e a data de criação seja inferior ao intervalo configurado no comando executado no teste;

Os seguintes parâmetros também poderão ser alterados para customizar a execução do liveness probe:

  • initialDelaySeconds: Intervalo que o kubernetes aguardará para iniciar os testes após a inicialização do pod;
  • periodSeconds: Intervalo entre a execução dos testes;
  • timeoutSeconds: Tempo considerado aceitável para retorno da aplicação durante a execução do teste, antes de definir como timeout;
  • successThreshold: Número mínimo de tentativas com sucesso para determinar que o pod está "saudável"; Caso não informado, considera 1 como valor default;
  • failureThreshold: Número máximo de tentativas com falha antes de reiniciar o pod; Caso não seja informado, considera 3 como valor default;

04. DEMAIS INFORMAÇÕES

  • Não Há.

05. ASSUNTOS RELACIONADOS

  • Não Há.