Kubebuilder controller-gen CLI
controller-gen
References
controller-gen [<option>]
<option>
CRD 생성
package주석// +groupName=<group>
type주석// +kubebuilder:subresource:status:spec.versions.subresources.status생성 여부입니다.// +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>
Object/DeepCopy 코드 생성
References
package주석// +kubebuilder:object:generate=<bool>: package에 존재하는 모든type에DeepCopy관련 메서드 생성 여부입니다.
type주석// +kubebuilder:object:generate=<bool>:DeepCopy관련 메서드 생성 여부입니다.// +kubebuilder:object:root=true:runtime.Object관련 메서드 생성 여부입니다.
controller-gen paths=./... object[:<option>[,<option>]]
object:<option>headerFile=<path>: 생성된 파일 상단에 추가할 내용을 포함한 파일 경로 설정입니다.year=<year>: headerFile의YEAR을<year>로 변경합니다.
Webhook 생성
References
controller-gen paths=./... \
webhook[:<option>[,<option>]] output:webhook:<rule>
webhook:<option>headerFile=<path>: 생성된 파일 상단에 추가할 내용을 포함한 파일 경로 설정입니다.year=<year>: headerFile의YEAR을<year>로 변경합니다.