안녕하세요! 쿠버네티스의 세계를 항해하는 여러분을 위한 등대, CLOUD SECURITY LAB입니다. 😊
쿠버네티스(Kubernetes)를 공부하다 보면 Pod, Deployment, Service 같은 익숙한 친구들을 만나게 됩니다. 이들은 마치 기본 레고 블록과 같아서, 이것들만으로도 꽤 멋진 성을 만들 수 있죠.
하지만 만약 우리에게 "데이터베이스를 만들어줘" 또는 "SSL 인증서를 발급해줘" 와 같은 특별한 임무가 주어진다면 어떨까요? 기본 블록만으로는 조금 번거로울 수 있습니다. 이때 등장하는 것이 바로 CRD(Custom Resource Definition), 즉 '나만의 맞춤 레고 블록'을 만들 수 있는 설계도입니다!
CKAD 시험을 준비하는 많은 분들이 CRD를 막연하게 두려워하지만, 걱정 마세요! 시험에서는 여러분에게 레고 블록을 '설계'하라고 요구하지 않습니다. 이미 만들어진 '특별한 레고 블록을 잘 사용하는 방법'을 물어볼 뿐이죠.
자, 지금부터 CRD가 무엇인지, CKAD 시험에서는 어떻게 대처해야 하는지 속 시원하게 파헤쳐 보겠습니다! 🚀

🤔 CRD와 CR, 도대체 무슨 차이일까요?
가장 먼저 짚고 넘어가야 할 개념입니다. 두 용어는 항상 함께 다니지만 역할이 명확히 다릅니다.
1. CRD (Custom Resource Definition): 설계도 📝
CRD는 말 그대로 '사용자 정의 리소스에 대한 정의'입니다. 즉, 새로운 쿠버네티스 객체(리소스)를 만들기 위한 설계도 또는 명세서와 같습니다.
- 역할: "앞으로 우리 클러스터에서는 Database라는 새로운 리소스를 사용할 거야. 이 리소스는 dbName, user, password 같은 속성(필드)을 가질 수 있어." 라고 쿠버네티스 API 서버에게 알려주는 역할을 합니다.
- 특징: 한 번 클러스터에 등록되면, Pod나 Deployment처럼 kubectl 명령어로 다룰 수 있는 새로운 리소스 타입이 생겨납니다.
- CKAD에서는? 여러분이 이 설계도를 직접 작성할 일은 없습니다. 시험 환경에 이미 CRD가 설치되어 있다고 생각하시면 됩니다.
2. CR (Custom Resource): 실제 제품 📦
CR은 CRD라는 설계도를 바탕으로 만들어진 실제 객체(Object) 또는 인스턴스(Instance)를 의미합니다.
- 역할: Database라는 CRD(설계도)가 있다면, 우리는 "이름은 my-prod-db이고, 유저는 admin인 데이터베이스를 만들어줘!" 라는 내용의 CR(실제 제품)을 생성할 수 있습니다.
- 특징: 우리가 흔히 작성하는 YAML 파일이 바로 이 CR을 정의하는 문서입니다.
- CKAD에서는? 바로 이 CR을 조회하고, 생성하고, 삭제하는 것이 여러분의 주된 임무입니다!
비유로 이해하기! 🍰
- CRD: 붕어빵을 만드는 '붕어빵 틀'
- CR: '붕어빵 틀'로 찍어낸 맛있는 '붕어빵'
🚀 CKAD 실전! CRD 문제 해결 4단계 전략
자, 이제 실제 시험 문제를 만났다고 상상해 봅시다. "클러스터에 CronTab이라는 CRD가 설치되어 있습니다. 이를 사용하여 특정 작업을 수행하는 my-cronjob을 생성하세요." 라는 문제가 나왔을 때, 당황하지 않고 아래 4단계만 따라 하면 됩니다.
1단계: 정체 파악하기 (CRD 정보 확인) 🕵️♂️
가장 먼저, 이 CronTab이라는 녀석이 대체 뭔지 알아내야 합니다. 어떤 이름으로 불리는지, 단축어는 있는지 확인해야 하죠.
- kubectl get crds: 클러스터에 설치된 모든 CRD 목록을 확인합니다.
$ kubectl get crds
NAME CREATED AT
crontabs.stable.example.com 2025-09-03T02:15:00Z
...
여기서 crontabs.stable.example.com 이라는 전체 이름을 확인했습니다.
- kubectl api-resources: CRD를 포함한 클러스터의 모든 리소스 정보를 확인합니다. 단축어를 찾기에 매우 유용합니다!
$ kubectl api-resources | grep crontab
crontabs ct stable.example.com/v1 true CronTab
와우! crontabs 또는 단축어인 ct로 이 리소스를 부를 수 있다는 엄청난 정보를 얻었습니다. 이제 긴 이름을 다 타이핑할 필요가 없겠죠?
2단계: 사용 설명서 읽기 (리소스 명세 확인) 📖
이제 CronTab이라는 리소스를 만들려면 어떤 필드들이 필요한지 알아봐야 합니다. 마치 제품을 조립하기 전에 설명서를 읽는 것과 같습니다. 이때 사용하는 명령어가 바로 kubectl explain 입니다.
# 먼저 최상위 필드부터 확인
$ kubectl explain crontab
# 다음으로 spec 필드의 하위 내용을 확인
$ kubectl explain crontab.spec
이 명령을 실행하면, spec 필드 아래에 cronSpec (스케줄), image (컨테이너 이미지) 등의 필드가 필요하다는 것을 친절하게 알려줍니다. CKAD 시험에서 모르는 리소스가 나왔을 때 explain은 여러분의 생명을 구해줄 필살기입니다!
3단계: 제품 주문하기 (CR 생성) ✍️
설명서를 다 읽었으니, 이제 YAML 파일을 작성하여 실제 CR을 생성할 차례입니다.
my-cronjob.yaml
apiVersion: "stable.example.com/v1" # api-resources에서 확인한 정보
kind: CronTab # api-resources에서 확인한 정보
metadata:
name: my-cronjob
spec:
cronSpec: "* * * * */1" # explain으로 확인한 필드
image: busybox:1.28 # explain으로 확인한 필드
YAML 작성이 끝났다면, 익숙한 명령어로 클러스터에 생성해 줍니다.
$ kubectl apply -f my-cronjob.yaml
crontab.stable.example.com/my-cronjob created
4단계: 주문 확인 및 관리 (CR 조회 및 삭제) 🔎
마지막으로, 우리가 주문한 제품이 잘 만들어졌는지 확인하고 관리해야 합니다.
- 조회하기: 1단계에서 알아낸 단축어를 사용하면 편리합니다.
$ kubectl get ct
# 또는
$ kubectl get crontab
NAME CREATED AT
my-cronjob 2025-09-03T02:18:00Z
- 상세 정보 확인하기:
$ kubectl describe ct my-cronjob
- 삭제하기:
$ kubectl delete ct my-cronjob
어떤가요? Pod를 다루는 것과 과정이 완전히 똑같죠? 맞습니다. CRD는 단지 쿠버네티스가 이해할 수 있는 리소스의 종류를 하나 더 늘려준 것뿐입니다.
✨ 마치며: CRD, 두려워 말고 지배하라!
정리해 보겠습니다. CKAD 시험에서 CRD를 만났을 때 기억해야 할 핵심은 이것입니다.
- 나는 사용이지, 개발자가 아니다. CRD를 만들 필요는 없다.
- get crds, api-resources로 리소스의 이름과 단축어를 파악한다.
- explain 명령어로 필요한 필드가 무엇인지 '훔쳐본다'.
- YAML을 작성하고 apply, get, describe, delete로 똑같이 관리한다.
CRD는 쿠버네티스를 무한히 확장할 수 있게 해주는 강력하고 멋진 기능입니다. 이제 CRD에 대한 막연한 두려움을 떨쳐내고, 여러분의 것으로 만들어 보세요! CKAD 합격의 길이 더욱 선명해질 것입니다.
여러분의 성공적인 자격증 취득을 응원합니다! 💪
태그: 쿠버네티스, CRD, Custom Resource, CKAD, 자격증, 쿠버네티스 시험, k8s
'클라우드 > 쿠버네티스' 카테고리의 다른 글
| 🚀 쿠버네티스 대탐험: Context와 Namespace 완전 정복 가이드 (CKAD 필수!) (1) | 2025.09.03 |
|---|---|
| 🩺 내 파드의 건강검진! kubectl top으로 리소스 사용량 실시간 확인하기 (0) | 2025.09.03 |
| 👮♂️ 우리 클러스터의 교통경찰! LimitRange와 ResourceQuota로 질서 잡기 (0) | 2025.09.03 |
| 💾 내 데이터는 소중하니까! 쿠버네티스 영구 저장소 (PV, PVC) 완전 정복 (CKAD 대비) (0) | 2025.09.03 |
| 👮♂️ 내 컨테이너의 경호원! 쿠버네티스 SecurityContext 기초 다지기 (0) | 2025.09.03 |