Goでmamoriを使ってKubernetes Secret... ノート

Goでmamoriを使ってKubernetes SecretsとConfigMapsをホットリロード(Pod再起動なし)

Kubernetes上でGoサービスを実行しているなら、その儀式はご存知でしょう。SecretやConfigMapを更新し、その後以下のいずれかを行います。kubectl rollout restart deployment/my-app を実行し、ダウンタイムを受け入れる。 Reloaderをインストールして、Secretが変更されたときにPodを自動的に再起動させる。 Secretをボリュームとしてマウントし、アプリケーションがファイルを再読み込みすることを祈る(ネタバレ:ほとんどのアプリケーションは起動時に一度だけ読み込みます)。これら3つの方法には共通の欠点があります。設定変更を「反映させる」方法は、プロセスを破棄して新しいプロセスを開始することです。ローテーションするデータベースパスワードの場合、それは進行中のすべてのリクエスト、コールドなコネクションプール、そしてレイテンシの急増をすべて破棄して、1つの文字列を変更することになります。