Kubebuilder controller-gen CLI
controller-gen
References
controller-gen [<option>]
<option>
CRD 생성
package주석// +groupName=<group>
type주석// +kubebuilder:subresource:status:spec.versions.subresources.status생성 여부입니다.// +kubebuilder:subresource:scale:<option>[,<option>]:spec.versions.subresources.scale생성 여부입니다.specpath=<path>: replica 수를 결정하는 필드입니다. 주로spec.replicas로 설정합니다.statuspath=<path>: 현재 replica 수를 나타내는 필드입니다. 주로status.replicas로 설정합니다.selectorpath=<path>: HPA가 어떤 Pod이 속해있는지 식별하기 위한 label selector 필드입니다. 주로.spec.selector또는.status.podSelector등을 설정합니다.
// +kubebuilder:resource:<option>[,<option>]path=<path>: CRD의 리소스 경로 설정으로 기본값은 type 의 소문자 복수형입니다.singular=<name>: CRD의 단수 이름 설정으로 기본값은 type의 소문자입니다.shortName=<name>[;<name>]: CRD의 짧은 이름 설정입니다.scope=Namespaced|Cluster: 기본값 은Namespaced입니다.categories=<category>[;<category>]: CRD의 카테고리 설정입니다.
// +kubebuilder:printcolumn:<option>[,<option>]
controller-gen paths=./... \
crd[:<option>[,<option>]] output:crd:<rule>
crd:<option>generateEmbeddedObjectMeta=<bool>true로 설정 시,metadata.properties를 CRD에 포함합니다.- 기본값은
false입니다.
RBAC 생성
References
package주석// +kubebuilder:rbac:<option>[,<option>]groups=<group>[,<group>]resources=<resource>[,<resource>]verbs=<verb>[,<verb>]- e.g.,
groups="",resources=pods,verbs=get;list;watch;create;update;patch;delete
controller-gen paths=./... \
rbac:roleName=<name>[,<option>]] output:rbac:<rule>
rbac:<option>