5.6. カスタムリソース定義 (CRD) アップグレードの安全性
クラスター拡張によって提供されるカスタムリソース定義(CRD)を更新すると、Operator Lifecycle Manager (OLM) v1 は CRD アップグレード安全プリフライトチェックを実行して、以前のバージョンとの互換性を確保します。
CRD 更新は、クラスター上で変更が進行する前にその検証に合格する必要があります。
5.6.1. 禁止されている CRD アップグレード変更 リンクのコピーリンクがクリップボードにコピーされました!
検証しない変更を回避するには、アップグレード安全のプリフライトチェックによってブロックされているカスタムリソース定義(CRD)の変更を確認します。
CRD のアップグレード安全のプレフライトチェックは、既存の CRD への次の変更のいずれかを検出すると、アップグレードをブロックします。
- 既存のバージョンへの新規必須フィールドの追加
- 既存バージョンからの既存のフィールドの削除
- 既存バージョンでの既存のフィールドタイプの変更
- まだデフォルト値がないフィールドへのデフォルト値の追加
- 既存フィールドのデフォルト値の変更
- 既存フィールドのデフォルト値の削除
- まだ持っていなかったフィールドに列挙制限を追加する
- 既存のフィールドからの既存の列挙値の削除
- 既存バージョンの既存フィールドの最小値を増やす
- 既存バージョンの既存フィールドの最大値を減らす
- 以前は持っていなかったフィールドに最小値または上限を追加する
最小値と最大値のルールは、最小、minLength、minProperties、minItems、maxItems、maxLength、maxProperties、および maxItems の制約に適用されます。
プリフライトチェックにより、Kubernetes API サーバーで処理される次の構造の変更のアップグレードもブロックされます。
-
クラスターとnamespace間の CRD スコープの変更 - 保存された既存の CRD バージョンを削除する
CRD アップグレードの安全プレフライトチェックで禁止された変更が検出されると、違反ごとにエラーがログに記録されます。
CRD の変更が明示的に許可も、禁止されている変更として分類されていない場合、プリフライトチェックはアップグレードをブロックし、unknown change エラーをログに記録します。