Helm 배포 자동 삭제

Helm 배포 자동 삭제

일정 시간이 지난 후 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해당 이름에 대해 명령을 호출합니다.

관련 정보