問題タブ [kubernetes-custom-resources]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - CRD バージョンの移行は双方向で行う必要がありますか?
CRD を利用するコンポーネントを開発しており、v1 と v2 の 2 つのバージョンで利用できます。v1 の定義に基づいて v2 リソースを作成することはできますが、その逆はできません。V2 では、一部のフィールドが不要になったため削除されました。既存のリソースを自動的に変換する Web フックを開発しました。変換は、crd 定義で次のように定義されます。
v2 バージョンは と として定義されますがserved
、storage
v1 は としてのみ定義されserved
ます。変換 Webhook は、v1 から v2 への変換についてクエリが実行されると成功を返しますが、v2 から v1 への変換の要求が行われると失敗します。v1 定義を使用して新しいリソースを作成しようとすると、from server for: "v1resource.yml": conversion webhook for component/v2, Kind=Proponent failed: Incompatible conversion
. ログで、Kubernetes が v2 から v1 に変換するために私のフックを照会し、その前に v1 から v2 への変換を要求したことを確認しました。v2 リソースの作成を直接発行すると、すべて正常に動作します。Kubernetes が最初にリソースを v2 に変換してからダウングレードしようとするのはなぜですか? crds のバージョンは互いに互換性がある必要がありますか?
v2 から v1 への変換を許可し、いくつかのダミー フィールドを使用して定義を埋めると、すべてが期待どおりに機能し始めることに注意してください。これは、v1 リソースが作成されてから v2 に移行されることを意味します
バージョン: