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[:headerFile=<string>][,year=<string>]                                          package  generates (partial) {Mutating,Validating}WebhookConfiguration objects.
+schemapatch[:generateEmbeddedObjectMeta=<bool>],manifests=<string>[,maxDescLen=<int>]  package  patches existing CRDs with new schemata.
+rbac[:headerFile=<string>],roleName=<string>[,year=<string>]                           package  generates ClusterRole objects.
+object[:headerFile=<string>][,year=<string>]                                           package  generates code containing DeepCopy, DeepCopyInto, and
+crd[:allowDangerousTypes=<bool>][,crdVersions=<[]string>][,deprecatedV1beta1CompatibilityPreserveUnknownFields=<bool>][,generateEmbeddedObjectMeta=<bool>][,headerFile=<string>][,ignoreUnexportedFields=<bool>][,maxDescLen=<int>][,year=<string>]  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 ""