cr(Custom Resource)

k8s를 사용하다 보면 기존에 존재하는 오브젝트말고도 다른 오브젝트가 필요할 수도 있다.

위와 같은 문제를 해결하기 위해 cr이 존재하는데 cr이란 **오브젝트를 직접 정의한걸 사용**하는 것이다.

cr 사용 예제

apiVersion: "extension.example.com/v1"
kind: Hello
metadata:
  name: hello-sample
size: 3

위와 같은 yaml을 생성하려 시도하면 오류가 나게 되는데 왜냐하면 k8s는 Hello라는 오브젝트를 모른다.


crd(Custom Resource Definition)

위의 예제처럼 오브젝트를 정의하지 않고 사용하게 되면 오류가 나기 때문에

**k8s etcd에 등록**해주기 위해서 CRD나 AA(API Aggregation) 등을 사용해야하는데 CRD가 간편하다.

crd를 사용하면 **cr을 등록해서 사용이 가능**한데 아래의 예제로 확인해보자.

crd 사용 예제

# 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을 생성 가능하다.