본문 바로가기
클라우드/쿠버네티스

👑 쿠버네티스의 숨겨진 왕관, CRD! CKAD 시험 정복을 위한 완벽 가이드

by gasbugs 2025. 9. 3.

안녕하세요! 쿠버네티스의 세계를 항해하는 여러분을 위한 등대, 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를 만났을 때 기억해야 할 핵심은 이것입니다.

  1. 나는 사용이지, 개발자가 아니다. CRD를 만들 필요는 없다.
  2. get crds, api-resources로 리소스의 이름과 단축어를 파악한다.
  3. explain 명령어로 필요한 필드가 무엇인지 '훔쳐본다'.
  4. YAML을 작성하고 apply, get, describe, delete로 똑같이 관리한다.

CRD는 쿠버네티스를 무한히 확장할 수 있게 해주는 강력하고 멋진 기능입니다. 이제 CRD에 대한 막연한 두려움을 떨쳐내고, 여러분의 것으로 만들어 보세요! CKAD 합격의 길이 더욱 선명해질 것입니다.

여러분의 성공적인 자격증 취득을 응원합니다! 💪


태그: 쿠버네티스, CRD, Custom Resource, CKAD, 자격증, 쿠버네티스 시험, k8s