controller-tools

Kubebuilderでは、カスタムコントローラーの開発を補助するためのツール群としてcontroller-toolsを提供しています。

controller-toolsには下記のツールが含まれていますが、本資料ではcontroller-genのみを取り扱います。

  • controller-gen
  • type-scaffold
  • helpgen

controller-gen

controller-genは、GoのソースコードをもとにしてマニフェストやGoのソースコードの生成をおこなうツールです。

controller-genのヘルプを確認すると、下記の5種類のジェネレータの存在が確認できます。

❯ controller-gen -h

(中略)

generators

+webhook                                                                                                  package  generates (partial) {Mutating,Validating}WebhookConfiguration objects.
+schemapatch:manifests=<string>[,maxDescLen=<int>]                                                        package  patches existing CRDs with new schemata.
+rbac:roleName=<string>                                                                                   package  generates ClusterRole objects.
+object[:headerFile=<string>][,year=<string>]                                                             package  generates code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
+crd[:crdVersions=<[]string>][,maxDescLen=<int>][,preserveUnknownFields=<bool>][,trivialVersions=<bool>]  package  generates CustomResourceDefinition objects.

kubebuilderが生成したMakefileには、make manifestsmake generateというターゲットが用意されており、make manifestsではwebhook, rbac, crdの生成、make generateではobjectの生成がおこなわれます。

controller-genがマニフェストの生成をおこなう際には、Goのstructの構成と、ソースコード中に埋め込まれた// +kubebuilder:から始まるコメント(マーカーと呼ばれる)を目印にします。

利用可能なマーカーは下記のコマンドで確認できます。(-ww-wwwを指定するとより詳細な説明が確認できます)

$ controller-gen crd -w
$ controller-gen webhook -w

results matching ""

    No results matching ""