昨年、マイクロサービス開発を効率化するTelepresenceのWrapperツールteleを作ったが、このツールにCleanUp処理を入れた。 Ctrl + Cでコマンドを止めたときも自動でTelepresence が作成したPodとServiceを削除してくれるので便利。 もちろん正常終了したときも掃除してからコマンドが終了する。

この実装をするときに、kubectl get のときに出てくるPodのステータスは内部的には pod.Status.PhaseのようにPodのオブジェクトに格納され定数として定義もされているが、 Terminating は同じようには定義されておらず、pod.ObjectMeta.DeletionTimestamp みたいな DeletionTimestampの有無で判定して表示していることを知った。 Podの削除完了を待つ処理を作るのにこれに気づかずちょっと手間取った。