Cloud/k8s-CKAD

[CKAD] Custom Resource Definitions(CRD)

jinkwon.kim 2024. 10. 29. 23:01
728x90
반응형

개요

Custom Resource Definition이 무엇인지 알아보고 어떻게 구현 할 수 있는지 까지 실습해보곘습니다. 

CRD 개념?

Custom Resource Definitions (CRD)는 사용자가 Kubernetes API에 새로운 Resource Type 를 정의할 수 있도록 도와 줍니다.. Kubernetes에는 기본적으로 Deployment, Service, Pod 등 다양한 Resource Object가 존재하지만, CRD를 사용하면 이러한 기본 Resource 외에 사용자만의 Custom Resource 를 생성할 수 있습니다.

 

즉, CRD는 새로운 Resource의 schema와 동작 방식을 정의하는 역할을 하며, 이를 통해 사용자는 자신의 필요한 Resource를 Kubernetes cluster내에서 사용 할 수 있게 됩니다.

 

요약을 하면

  • Resource :  Kubernetes에서 Deployment, Service와 같은 객체를 의미합니다.
  • Custom Resource: 사용자가 정의한 새로운 Resource Object입니다.
  • Custom Resource Definition : 이러한 Custom 리소스를 Kubernetes API에 등록하고 관리할 수 있도록 정의하는 방법입니다.

CRD의 동작 방식

사용자가 Custom Resource를 생성하면, 해당 Custom Resource가 etcd에 저장되고, Custom Resource에 맞는 Custom Controller가 이를 Monitoring링하다가 Cluster의 상태를 Custom Resource에 정의된 것에 맞게 조정합니다.

 

그래서 Custom Resource를 배포하기 위해서 2가지 작업을 먼저 해야합니다. 

  1. Custom Resource을 정의한 Custom Resource Definition을 배포 
  2. Custom Resource 관리(Monitoring 및 변경 사항)을 Cluster에 적용하는 Custom Controller 배포

Custom Resource Definition

CRD는 Object와 비슷합니다. apiVersion, kind, metadata, spec 이 존재 합니다. 

아래 그림은 CRD(우)를 정의한 것과 각 filed가 어디에서 사용되는지를 연결한 것입니다.

Custom Controller

Custom Controller를 개발 하기 위해서는 아래 예제 파일을 사용하면 됩니다. 

그리고 controller.go 파일을 수정 하면됩니다. 해당 부분은 기회가 된다면 진행하겠습니다. (시험 범위아님.)

https://github.com/kubernetes/sample-controller

 

GitHub - kubernetes/sample-controller: Repository for sample controller. Complements sample-apiserver

Repository for sample controller. Complements sample-apiserver - kubernetes/sample-controller

github.com

(번외) Operator Framework란?

Operator Framework는 애플리케이션의 Custom Resource와 Controller를 Operator로 묶어, Kubernetes 상에서 상태 점검, 백업, 복구, 수평 확장 등 다양한 작업을 자동화하는 역할을 합니다. 특히 데이터베이스, 메시지 브로커 같은 복잡한 애플리케이션을 Kubernetes에서 운영하는 경우에 Operator Framework를 통해 사용자 정의 로직을 쉽게 관리할 수 있습니다.

https://operatorhub.io/

 

OperatorHub.io | The registry for Kubernetes Operators

 

operatorhub.io

 

728x90
반응형

'Cloud > k8s-CKAD' 카테고리의 다른 글

[CKAD] 시험 미흡 사항  (2) 2024.11.03
[CKAD] k8s API 버전 체계  (0) 2024.10.17
[CKAD] Admission Controller  (1) 2024.10.16
[CKAD] Statefulset 과 Headless Service  (0) 2024.10.09
[CKAD] Network Policy  (0) 2024.10.03