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