JSONスキーマを使用した値の検証
Helm 3では、JSONスキーマに従ったスキーマファイルを使った値のバリデーションがサポートされました。このリポジトリにあるHelmチャートも、各サブチャートにvalues.schema.json
ファイルを定義することで、この機能を利用しています。
スキーマファイルの使い方に関する開発者向けのガイドラインです:
- サブチャートの
values.yaml
ファイルに新しいエントリーを追加したり、既存のエントリーを変更する場合は、この変更に合わせてそれぞれのvalues.schema.json
ファイルを更新する必要があります。 - このタスクの最初の反復は、すべてのサブチャートにスキーマ・ファイルが装備された時点で完了する予定です。関連エピックで最初の反復の進捗を確認できます。今後の反復作業では、これらのスキーマ・ファイルを改善・改良し、その効率性と使いやすさを向上させることに重点を置く予定です。
-
values.yaml
経由で設定可能なすべての設定には、values.schema.json
ファイルに型バリデーション(正しいデータ型のみを値として受け入れるようにする)を実装する必要があります。これは最初の反復で完了しなければなりません。 - 最初の反復では、必須フィールドの検証は、ユーザーが
values.yaml
ファイルで定義した設定が、そのコンポーネントだけでポッドをスピンアップするのに十分であり、ログにエラーが報告されないことを確認する程度に制限できます。将来の反復では、ポッドが実際に機能することを確認するために、これを拡張する必要があります。これには、より深いテストが必要です。
イミュータブルフィールドの検証
Kubernetes仕様の一部のフィールドはイミュータブルです。イミュータブルなフィールドへの変更が顧客のアップグレードに影響を与えないようにしてください。
ステートフルセット
ステートフルセットには、不変フィールドのセットが含まれます。変更が許可されていないフィールドが実際に変更されていないことを確認してください。これは、アップグレードの実行に悪影響を及ぼします。エラーメッセージの例:
Error: UPGRADE FAILED: cannot patch "a-gitaly" with kind StatefulSet
StatefulSet.apps "a-gitaly" is invalid
spec: Forbidden:
updates to statefulset spec for fields other than
'replicas', 'template', and 'updateStrategy'
are forbidden