非推奨テンプレート
このテンプレートの目的は、チャートの設定方法の変更により、ユーザーがHelmチャートまたはそのアップデートを壊れた状態でデプロイすることを防ぐ手段を提供することです。
設計では複数のテンプレートを使用し、非推奨の宣言と管理をモジュール方式で行います。これは開発とメンテナンスの簡素化を支援するためです。
一般的なコンセプト
-
templates/NOTES.txt
include
の最後の項目はtemplates/_deprecations.tpl
のgitlab.deprecations
テンプレートです。 -
gitlab.deprecations
テンプレートinclude
は、同じファイル内のさらなるテンプレートで、その出力(文字列)をlist
に集めています。 - 個々のテンプレートは、誤った設定の検出を処理し、ユーザーに変更のアドレスを知らせるメッセージを出力するか、何も出力しません。
-
gitlab.deprecations
テンプレートはメッセージが収集されたかどうかをチェックします。メッセージが収集された場合、fail
関数を使用して、DEPRECATIONS:
のヘッダーの下に出力します。 -
fail
関数はデプロイプロセスを終了させ、ユーザーが壊れた設定でデプロイすることを防ぎます。
テンプレートの命名
このパターンの内部で定義され、このパターンで使われるテンプレートは、gitlab.deprecation.*
の命名規則に従うべきです。この*
を、rails.appConfig
やregistry.storage
のような、この非推奨が何に関するものかを示す情報的な名前に置き換えてください。
検出における考慮点
開発者は、キーや親キーが存在すると仮定しないように注意すべきです。if
、hasKey
、empty
を適切に適用することを強く推奨します。一つのキーが存在する可能性は、プロパティマップ全体がそのキーの前のいくつかのブランチが存在しない可能性と同じです。_Helmは_マップ構造内に存在しないプロパティにアクセスしようとすると、一般的に曖昧な表現で文句を言います。時間を節約するために、明示的にしてください。
メッセージ形式
すべてのメッセージは、以下の形式でなければなりません:
chart:
message
- メッセージの前にある
if
ステートメントでは、メッセージの後にある改行 を_トリミングしてはいけません_。(-}}
ではなく}}
) こうすることで、ユーザーにとって読みやすい書式になります。 - メッセージは、グローバル・チャートに対してどの Chart が影響を受けるかを宣言する必要があります。これにより、ユーザーは、そのプロパティが Chart や設定プロパティのどこから来たのかを理解しやすくなります。例
gitlab.webservice
minio
,registry
. - こ の メ ッ セージは、 変更 ・ 移転 ・ 廃止 さ れたプ ロ パテ ィ と 、 どの よ う なア ク シ ョ ン を取るべきかをユーザーに知らせ る 必要があ り ます。そのプロパティに、影響を受けるChartに対する相対的な名前を付けます。た と えば、
gitlab.webservice.minio.enabled
は、非推奨の影響を受ける Chart がgitlab.webservice
であるため、webservice.enabled
として参照されます。
メッセージの例
gitlab.webservice:
Chart-local configuration of Minio features has been moved to global. Please remove `gitlab.webservice.minio.enabled` from your properties, and set `global.minio.enabled` instead.
新しい非推奨事項のアクティブ化
テンプレートが定義され、影響を受けるプロパティを検出するためのロジックがその中に配置されると、この新しいテンプレートをアクティブにするのは簡単です。gitlab.deprecations
、add templates here
の下に行を追加するだけです。