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
