非推奨テンプレート
このテンプレートの目的は、チャートの設定方法の変更により、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
を適切に使用することを強く推奨します。 1つのキーが存在する可能性は、プロパティマップ全体がそのキーの前にいくつかのブランチが存在しない可能性と同じです。 マップ構造内に存在しないプロパティにアクセスしようとすると、一般的に曖昧な表現で Helm_は_文句を言います。 時間を節約するために、明示的である必要があります。
メッセージ形式
すべてのメッセージは以下のフォーマットでお送りください:
chart:
message
- メッセージの前にある
if
ステートメントでは、その後にある改行をトリミングしては_いけません_。 (}}
not-}}
) これにより、ユーザーにとってのフォーマットと読みやすさが保証されます。 - このメッセージは、グローバル・チャートに対して、どのチャートが影響を受けるかを宣言する必要があります。 これにより、ユーザは、そのプロパティがチャートのどこから来たのか、また、構成プロパティを理解することができます。 例:
gitlab.unicorn
,minio
,registry
. - メ ッ セージは、 変更 ・ 移転 ・ 廃止 さ れたプ ロ パテ ィ と 、 ど の よ う な対処をす る べ き か をユーザーに知らせ る 必要があ り ます。 そのプ ロ パテ ィ に、 影響を受け る チ ャ ー ト に対す る 相対的な名前を付け ます。 た と えば、
gitlab.unicorn.minio.enabled
は、 廃止によ っ て影響を受けるチ ャ ー ト がgitlab.unicorn
であ る ため、minio.enabled
と 参照 さ れます。
メッセージの例
gitlab.unicorn:
Chart-local configuration of Minio features has been moved to global. Please remove `gitlab.unicorn.minio.enabled` from your properties, and set `global.minio.enabled` instead.
新しい非推奨のアクティビティ
テンプレートが定義され、その内部に影響を受けるプロパティを検出するためのロジックが配置されれば、この新しいテンプレートをアクティビティ化するのは簡単です。gitlab.deprecations
テンプレートのadd templates here
の下に、提示されたフォーマットに従って行を追加するだけです。