青/緑のk8sディストリビューションの場合、アクティブな色を切り替えてもhpaはポッドを拡張しません。

青/緑のk8sディストリビューションの場合、アクティブな色を切り替えてもhpaはポッドを拡張しません。

k8sアーキテクチャはあまりにも異なるので、これを組織外の人々が理解できる文脈に入れることは難しいと思います。

サービスにブルー/グリーン展開を使用し、helmを使用して適用するk8sオブジェクトを作成します。

したがって、新しいバージョンを正常にデプロイすると、サービス、デプロイ、およびhpaを含むk8sターゲットファイルが生成されます。これは新しい代替文字を指す「カラフルな」オブジェクトです。

hpaオブジェクトと展開オブジェクトを適用し、新しい展開オブジェクトをプッシュし、サービスの「役割」ラベルを新しい色に設定し、サービスの「役割」ラベルを新しい色に設定します。次に、以前の展開をポッドゼロに縮小します。通常の展開では、魔法のようにHPAがタスクを実行し、HPAで指定された最小ポッドの数に拡張されます。これらすべてがうまくいきます。

上記の手順は、実際には2つの別々のJenkinsビルドで実行されます。 1つ目は「DEPLOY」ビルドと呼ばれ、2つ目は「SWITCH_LIVE」と呼ばれます。 「DEPLOY」ビルドはk8sオブジェクトを作成してプッシュするだけで、アクティブな色は変更しません。 「SWITCH_LIVE」がまさにその役割を果たします。

問題は、SWITCH_LIVEジョブのJenkins「再生」を実行して単に「ロールバック」を実行しようとしたときに発生します。私たちの文脈では、これは単に現在のアクティブカラーより前のアクティブカラーである代替カラーに変更することを意味します。私の理論は、「役割」ラベルを変更してセレクタを変更すると、現在アクティブな色のHPAが開始され、最小数のポッドが生成されることです。私が見るには、展開でラベルとセレクタを変更した後に何も起こりません。

「DEPLOY」ジョブと「SWITCH_LIVE」ジョブの両方を再生すると、基本的に期待どおりに機能しますが、この戦略の問題は、DEPLOYジョブがすべてのk8sオブジェクトとアプリケーション構成グラフを再生成するなどの他の操作を実行することです。私が望むほど少なくありません。

その後、SWITCH_LIVEタスクを再生してディストリビューションオブジェクトを新しい色で手動で再適用すると、何も変更されていなくても、突然動作が始まり、新しい色でポッドが生成され始めることがわかりました。

これが機能している間は、SWITCH_LIVEジョブがこの操作を自動的に実行できる方法が必要です。前述のように、SWITCH_LIVE操作は現在のサービスオブジェクトの役割とセレクタのみを更新し、新しい展開オブジェクトには何もしません。展開またはHPAが必要なタスクを実行するために「滑る」通常のタスクで無害なものはありますか?

関連情報