5.3.2.3. API 및 컨트롤러 생성
Operator SDK CLI를 사용하여 CRD(사용자 정의 리소스 정의) API 및 컨트롤러를 생성합니다.
프로세스
다음 명령을 실행하여 그룹이
cache
이고 버전이v1
, 종류가Memcached
인 API를 생성합니다.$ operator-sdk create api \ --group=cache \ --version=v1 \ --kind=Memcached
메시지가 표시되면 리소스 및 컨트롤러 모두 생성하도록
y
를 입력합니다.Create Resource [y/n] y Create Controller [y/n] y
출력 예
Writing scaffold for you to edit... api/v1/memcached_types.go controllers/memcached_controller.go ...
이 프로세스는 api/v1/memcached_types.go
에 Memcached
리소스 API를 생성하고 controllers/memcached_controller.go
에 컨트롤러를 생성합니다.
5.3.2.3.1. API 정의
Memcached
CR(사용자 정의 리소스)의 API를 정의합니다.
프로세스
spec
및status
가 다음과 같도록api/v1/memcached_types.go
에서 Go 유형 정의를 수정합니다.// MemcachedSpec defines the desired state of Memcached type MemcachedSpec struct { // +kubebuilder:validation:Minimum=0 // Size is the size of the memcached deployment Size int32 `json:"size"` } // MemcachedStatus defines the observed state of Memcached type MemcachedStatus struct { // Nodes are the names of the memcached pods Nodes []string `json:"nodes"` }
리소스 유형에 대해 생성된 코드를 업데이트합니다.
$ make generate
작은 정보*_types.go
파일을 수정한 후에는make generate
명령을 실행하여 해당 리소스 유형에 대해 생성된 코드를 업데이트해야 합니다.위의 Makefile 대상은
controller-gen
유틸리티를 호출하여api/v1/zz_generated.deepcopy.go
파일을 업데이트합니다. 이렇게 하면 API Go 유형 정의에서 모든 종류의 유형에서 구현해야 하는runtime.Object
인터페이스를 구현할 수 있습니다.