일정 시간이 지난 후 helm을 통해 배포된 모든 포드를 삭제하고 싶은 요구 사항이 있습니다. 이 프로세스는 자동화되어야 합니다. 기존에 배포된 3개의 helm 인스턴스에 대한 세부정보는 다음과 같습니다.
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
최소 4시간이 지난 모든 배포를 삭제하고 싶습니다. Helm 배포를 제거하기 위한 수동 프로세스(아래 표시)는 자동화되어야 합니다.
# helm delete dandy-vulture
답변1
GNU 날짜가 있는 시스템(예: Linux 시스템)에 있는 경우 awk로 구문 분석된 출력을 사용한 helm ls
다음 GNU 날짜를 사용하여 에포크 이후의 시간(초)을 계산하고 해당 배포가 충분히 오래되었는지 확인할 수 있습니다.
helm ls | awk -v now=$(date +%s) -f delete-old-deployments.awk
내용은 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]"'")
}
}
다음 출처에서 수집한 정보를 바탕으로helm ls 소스 코드, 출력은 공백으로 구분된 다양한 문자열 목록입니다. 그래서 awk에게 2개 이상의 공백(split() 함수의 세 번째 매개변수에 3개의 공백, 2개, 0개 이상의 공백이 뒤따름)을 기준으로 (헤더를 건너뛴 후) 각 줄을 분할하도록 요청했습니다.
분할 후 세 번째 필드는 날짜 문자열입니다. 이를 GNU 날짜에 전달하여 에포크 이후의 초 단위로 변환하도록 요청합니다. "now"와 "then"의 차이가 컷오프 값보다 크면 helm delete
해당 이름에 대해 명령을 호출합니다.