一定時間が経過した後、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番目のパラメータに3つのスペース、2つ、0つ以上のスペースが続きます)に基づいて(ヘッダーをスキップした後)、各行を分割するように要求しました。
分割後の3番目のフィールドは日付文字列です。これをGNU日付に渡して、エポックの後の秒単位に変換するように要求します。 「now」と「then」の差がカットオフ値より大きい場合、helm delete
その名前に対してコマンドを呼び出します。