k8s를 사용하다 보면 기존에 존재하는 오브젝트말고도 다른 오브젝트가 필요할 수도 있다.
위와 같은 문제를 해결하기 위해 cr이 존재하는데 cr이란 **오브젝트를 직접 정의한걸 사용
**하는 것이다.
apiVersion: "extension.example.com/v1"
kind: Hello
metadata:
name: hello-sample
size: 3
위와 같은 yaml을 생성하려 시도하면 오류가 나게 되는데 왜냐하면 k8s는 Hello라는 오브젝트를 모른다.
위의 예제처럼 오브젝트를 정의하지 않고 사용하게 되면 오류가 나기 때문에
**k8s etcd에 등록
**해주기 위해서 CRD나 AA(API Aggregation) 등을 사용해야하는데 CRD가 간편하다.
crd를 사용하면 **cr을 등록해서 사용이 가능
**한데 아래의 예제로 확인해보자.
# crd 파일 생성
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: hellos.extension.example.com
spec:
group: extension.example.com
version: v1
scope: Namespaced
names:
plural: hellos
singular: hello
kind: Hello
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
# crd 적용
$ kubectl apply -f mycrd.yaml
customresourcedefinition.apiextensions.k8s.io/hellos.extension.example.com created
# crd파일을 apply하면 hello라는 오브젝트가 정의된다.
이제는 crd를 적용해줬기 때문에 아까 같은 cr을 생성 가능하다.