0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kubernetes CRDのダウングレード

Last updated at Posted at 2022-06-21

CRDのバージョンを変えたい場合、まず以下の2つのプランがある。

  • 方法A: CRDとオブジェクトを全部消して再作成する
  • 方法B: 再作成は行わずオブジェクトをダウングレードする

ここでは方法Bについて。

以下のように、v1alpha1v1beta1が用意されていて、v1beta1からv1alpha1に戻す方法を例にする。なお例示のyamlは必要なところ以外省略するので注意。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
spec:
  group: example.com
  names:
    kind: Example
    listKind: ExampleList
    plural: examples
    singular: example
  versions:
  - name: v1alpha1
    served: true
    storage: false
  - name: v1beta1
    served: true
    storage: true

1. CRDのストレージバージョンを対象に変える

  • stored: trueになるバージョンは1つだけであるように注意
  • まだ新しいバージョンは削除しないように注意
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
spec:
  versions:
  - name: v1alpha1
    served: true
    storage: true
  - name: v1beta1
    served: true
    storage: false

2. kubectl getで明示的に変換リクエストを発生させる

ストレージバージョンを指定して明示的に変換リクエストを発生させる。ストレージバージョンでストレージされる。

kubectl get examples.v1alpha1.example.com -A
  • Conversion Webhookがある場合
    • Webhookで適切に変換されることを確認
    • 変換できない場合は変換可能な状態にするか再作成しかない
  • Conversion Webhookがない場合
    • バージョン間でフィールドに互換性がない場合は修正

いずれの場合も、必ずすべてのオブジェクトについてgetを行う。もともとv1alpha1で作成されていても、ストレージバージョンがv1beta1ならv1beta1で保存されているため。

3. バージョンを無効化

served: falseで使用できなくなる。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
spec:
  versions:
  - name: v1alpha1
    served: true
    storage: true
  - name: v1beta1
    served: false
    storage: false

4. コントローラの再起動

kubectl rollout restart deploy/example-contoller

まだバージョンは削除しないように注意。

5. バージョンの削除

コントローラなどが正常に動作することを確認してから、バージョンを削除する。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
spec:
  versions:
  - name: v1alpha1
    served: true
    storage: true
status:
  storedVersions:
  - v1alpha1

kubectlでバージョンを指定しない場合、しばらくエラーが起きる可能性がある。これはAPIサーバが最新バージョン名をキャッシュしているからで、しばらくすれば動くようになる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?