Skip to main content

Kubebuilder controller-gen CLI


controller-gen

controller-gen [<option>]
  • <option>
    • output:<generator>:<rule>
      • artifacts:<option>
        • config=<path>: 파일이 생성될 디렉토리 경로 설정입니다.
    • output:<rule>: output:<generator>:<rule> 설정이 없으면 사용하는 전역 설정입니다.

CRD 생성


  • package 주석
    • // +groupName=<group>
  • type 주석
    • // +kubebuilder:subresource:status: spec.versions.subresources.status 생성 여부입니다.
controller-gen paths=./... \
crd[:<option>[,<option>]] output:crd:<rule>
  • crd:<option>

RBAC 생성


  • package 주석
    • // +kubebuilder:rbac:<option>[,<option>]
      • groups=<group>[,<group>]
      • resources=<resource>[,<resource>]
      • verbs=<verb>[,<verb>]
      • ex) 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 코드 생성


  • package 주석
    • // +kubebuilder:object:generate=<bool>: package에 존재하는 모든 typeDeepCopy 관련 메서드 생성 여부입니다.
  • 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>로 변경합니다.