excluindo as implementações de leme automaticamente

0

Eu tenho um requisito para o qual desejo excluir todos os pods implantados por meio do leme após um determinado período de tempo. Este processo precisa ser automatizado. Este é um detalhe de 3 instâncias de leme implantadas existentes:

ubuntu@kops:~$ helm ls
NAME                    REVISION        UPDATED                         STATUS          CHART                   NAMESPACE
dandy-vulture           1               Mon May 14 07:21:17 2018        DEPLOYED        mak15-0.1.0             default
dapper-pig              1               Sun May 13 16:32:58 2018        DEPLOYED        naseer-0.1.0            default
eerie-dragonfly         1               Mon May 14 07:13:15 2018        DEPLOYED        mak12-0.1.0             default

Desejo excluir todas as implantações com pelo menos quatro horas de uso. O processo manual de exclusão de uma implantação de leme, mostrado abaixo, deve ser automatizado.

# helm delete dandy-vulture
    
por Mohd 14.05.2018 / 11:16

1 resposta

0

Se você estiver em um sistema com data GNU (como um sistema Linux), você pode usar o awk para analisar a saída de helm ls , depois usar a data GNU para calcular os segundos desde a época e determinar se a implantação correspondente tiver idade suficiente:

helm ls | awk -v now=$(date +%s) -f delete-old-deployments.awk

Onde o conteúdo de delete-old-deployments.awk é:

BEGIN {
  # age cutoff, in seconds
  cutoff=4 * 60 * 60
}

NR > 1 {
        split($0, elements, /   */)
        "date -d '" elements[3] "' +%s" | getline elesecs
        if ((now - elesecs) > cutoff && elements[4] == "DEPLOYED") {
            system("helm delete '"elements[1]"'")

        }
}

Com base no que posso encontrar no código fonte do helm ls , a saída é uma tabela separada por espaços em branco de várias cadeias de caracteres. Como tal, pedi ao awk para dividir cada linha (depois de pular o cabeçalho) com base em 2 ou mais espaços (há três espaços no terceiro parâmetro para a função split (); dois, seguidos por zero ou mais espaços ).

O terceiro campo após a divisão é a string de data, que passamos para a data GNU, pedindo para converter isso em segundos desde a época. Se a diferença entre "now" e "then" for maior que o cutoff, então chamamos o comando helm delete no nome correspondente.

    
por 14.05.2018 / 15:07