본문으로 건너뛰기

Kubebuilder controller-gen CLI

controller-gen

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

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 생성

  • 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 코드 생성

  • 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>로 변경합니다.

Webhook 생성

controller-gen paths=./... \
webhook[:<option>[,<option>]] output:webhook:<rule>
  • webhook:<option>
    • headerFile=<path>: 생성된 파일 상단에 추가할 내용을 포함한 파일 경로 설정입니다.
    • year=<year>: headerFile의 YEAR<year>로 변경합니다.