Kubebuilder migration v1 to v2
- https://book.kubebuilder.io/migration
- v1 vs v2
- v2ではgo modulesを使う(go 1.13のリリースまではdepをサポートし続ける)
- controller-runtime
- Client.Listの引数が List(ctx, ListOptions, list) から List(ctx, list, ...option) に変更
- Client.DeleteAllOfはClientインターフェースに追加された
- メトリクスがデフォルトになった
- pkg/runtime以下の多くのパッケージが移動し、古い場所のものは非推奨となった。古い場所のものはcontroller-runtime v1.0.0で削除される。詳細情報は godoc を参照
- webhook関係
- webhook用の証明書自動生成は削除され、webhookはもはや自己登録されない。webhookの設定を生成するためにはcontroller-toolsを使う。証明書の生成が必要な場合、cert-managerを使うことを推奨する。kubebuilder v2はcert-manager用の設定を生成する予定である
- controller-tools
- ジェネレータフレームワークはv2で書き直された。多くのケースでは以前と同じように動くが、いくつかの破壊的変更がある。詳細は marker docを見て欲しい
- Kubebuilder
- Kubebuilder v2は簡略化されたプロジェクトレイアウトを提供する。デザインドックについては ここ から見ることができる
- v1では、マネージャーはStatefulSetとしてデプロイされるが、v2ではDeploymentとしてデプロイされる
- kubebuilder create webhook コマンドはwebhookのmutatingとvalidating、conversionをスキャフォルドするため追加された。これはkubebuilder alpha webhookを置き換える
- v2はdistroless/staticをubuntu ベースイメージの代わりに使う。これはイメージサイズとアラックサーフェスを小さくする。
- v2はkustomize v3.1.0以上のバージョンを必要とする。
- Migration from v1 to v2
- 読み進める前に、kubebuilder v1とv2の違いについて理解してください
- インストールガイドにしたがって必要なコンポーネントをインストールしておいてください
- 推奨するv1プロジェクトの移行方法は、新しくv2プロジェクトを作成してAPIとReconcileコードをコピーすることです。
- 変更は結局プロジェクトがv2ネイティブに見えるようになれば終わる
- しかし、いくつかのケースでは、インプレースアップグレードが可能である(v1プロジェクトのレイアウトを使い、controller-runtimeとcontroller-toolsをアップグレードする)
- example v1プロジェクトをKubebuilder v2に移行していこう。最終的には、我々はexample v2プロジェクトに見えるものを手にしている。