5.6.2.3. API 및 컨트롤러 생성
Operator SDK CLI를 사용하여 CRD(사용자 정의 리소스 정의) API 및 컨트롤러를 생성합니다.
프로세스
다음 명령을 실행하여 API를 생성합니다.
$ operator-sdk create api \ --plugins=quarkus \1 --group=cache \2 --version=v1 \3 --kind=Memcached4
검증
tree명령을 실행하여 파일 구조를 확인합니다.$ tree출력 예
. ├── Makefile ├── PROJECT ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ ├── Memcached.java │ ├── MemcachedReconciler.java │ ├── MemcachedSpec.java │ └── MemcachedStatus.java └── resources └── application.properties 6 directories, 8 files
5.6.2.3.1. API 정의 링크 복사링크가 클립보드에 복사되었습니다!
Memcached CR(사용자 정의 리소스)의 API를 정의합니다.
프로세스
create api프로세스의 일부로 생성된 다음 파일을 편집합니다.MemcachedSpec.java파일에서 다음 속성을 업데이트하여MemcachedCR의 원하는 상태를 정의합니다.public class MemcachedSpec { private Integer size; public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } }MemcachedStatus.java파일에서 다음 속성을 업데이트하여MemcachedCR의 관찰 상태를 정의합니다.참고아래 예제에서는 Node status 필드를 보여줍니다. 실제로 일반적인 상태 속성을 사용하는 것이 좋습니다.
import java.util.ArrayList; import java.util.List; public class MemcachedStatus { // Add Status information here // Nodes are the names of the memcached pods private List<String> nodes; public List<String> getNodes() { if (nodes == null) { nodes = new ArrayList<>(); } return nodes; } public void setNodes(List<String> nodes) { this.nodes = nodes; } }Memcached.java파일을 업데이트하여MemcachedSpec.java및MemcachedStatus.java파일로 확장되는 Memcached API의 스키마를 정의합니다.@Version("v1") @Group("cache.example.com") public class Memcached extends CustomResource<MemcachedSpec, MemcachedStatus> implements Namespaced {}