Init container
メインコンテナの起動前に、最後まで実行されるKubernetesのコンテナ。DBの起動待ち、スキーマのマイグレーション、シークレットや設定の取得、ファイル権限の設定などに使う。
複数のInit containerは順番に実行され、一つでも失敗するとrestartPolicyに従ってPod全体が再起動する。メインのイメージとは完全に独立しているので、メインが1GBのJavaアプリでも、Init containerは小さなAlpineとシェルスクリプトで済む。Kubernetes 1.29からはネイティブのサイドカーコンテナ(restartPolicy=AlwaysのInit container)が使え、従来のパターンの多くを置き換える。それ以前はログ転送をInit containerで行うのは苦肉の策で、メインの再起動のたびに止まってしまった。