0Pricing
Kubernetes Basics · 강의

사용자 지정 리소스 정의(CRD)

Custom Resource Definitions가 직접 만든 리소스 유형으로 Kubernetes API를 확장하는 방법과 Operators가 구축되는 기반을 학습해 보세요.

사용자 지정 리소스 정의(CRD)은(는) CoddyKit의 무료 Kubernetes Basics 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kubernetes Basics 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

쿠버네티스 API 확장

파드와 디플로이먼트 같은 기본 제공 객체가 전부는 아닙니다. Custom Resource Definition (CRD)을 사용하면 쿠버네티스에 완전히 새로운 리소스 유형을 가르칠 수 있습니다.

사용자 정의 리소스란 무엇인가

Custom Resource (CR)은 사용자가 정의한 유형의 인스턴스입니다. CRD를 설치하면 네이티브 객체와 마찬가지로 kubectl로 CR을 생성할 수 있습니다.

CRD의 구조

CRD는 새로운 종류, API 그룹, 버전, 그리고 범위(네임스페이스 범위 또는 클러스터 전체)를 선언합니다.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: backups.data.example.com
spec:
  group: data.example.com
  scope: Namespaced
  names:
    plural: backups
    singular: backup
    kind: Backup

스키마 정의

OpenAPI 스키마는 사용자 정의 리소스의 필드를 검증하여 생성 시점에 잘못된 사양을 거부합니다.

versions:
- name: v1
  served: true
  storage: true
  schema:
    openAPIV3Schema:
      type: object
      properties:
        spec:
          type: object
          properties:
            schedule:
              type: string
            retention:
              type: integer

사용자 정의 리소스 생성

CRD를 적용한 후 새 유형의 인스턴스를 생성합니다.

apiVersion: data.example.com/v1
kind: Backup
metadata:
  name: nightly-db
spec:
  schedule: '0 2 * * *'
  retention: 7

kubectl로 CR 다루기

사용자 정의 리소스는 일급 객체입니다. 익숙한 명령으로 이를 나열하고 설명하고 삭제할 수 있습니다.

kubectl get backups
kubectl describe backup nightly-db
kubectl delete backup nightly-db

단축 이름과 출력 열

단축 이름과 사용자 정의 표 열을 정의하면 CR을 더 편리하게 다룰 수 있습니다.

names:
  shortNames: ['bk']
additionalPrinterColumns:
- name: Schedule
  type: string
  jsonPath: .spec.schedule

CRD는 데이터일 뿐입니다

CRD만으로는 etcd에 데이터를 저장하기만 할 뿐, 아무것도 처리하지 않습니다. 백업을 실제로 실행하려면 이러한 리소스를 감시하는 컨트롤러가 필요합니다.

오퍼레이터와의 연결

오퍼레이터는 하나 이상의 CRD와 컨트롤러로 구성됩니다. CRD는 원하는 상태를 정의하고, 컨트롤러는 실제 상태가 그에 맞도록 지속적으로 조정합니다. CRD는 오퍼레이터가 기반으로 삼는 토대입니다.

CRD 버전 관리

CRD는 변환을 사용해 여러 버전을 지원하므로 API를 발전시킬 수 있습니다. 버전 중 정확히 하나가 etcd의 저장 버전으로 표시됩니다.

versions:
- name: v1beta1
  served: true
  storage: false
- name: v1
  served: true
  storage: true

CRD를 사용해야 할 때

  • 도메인 개념을 선언적으로 모델링하려는 경우(백업, 데이터베이스, 인증서)
  • 운영을 자동화하는 오퍼레이터를 구축하는 경우
  • 사용자가 익숙한 kubectl 작업 흐름으로 애플리케이션을 관리하게 하려는 경우

간단한 확인

CRD에 대해 이해한 내용을 테스트해 보세요.

복습

CRD가 사용자 정의 유형으로 쿠버네티스 API를 확장하며, OpenAPI 스키마로 검증되고 일반 kubectl 명령으로 관리된다는 것을 배웠습니다. CRD만으로는 데이터를 저장할 뿐이며, 컨트롤러와 결합하면 원하는 상태를 조정하는 오퍼레이터가 만들어집니다.

자주 묻는 질문

“사용자 지정 리소스 정의(CRD)” 강의는 무료인가요?

네 — “사용자 지정 리소스 정의(CRD)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kubernetes Basics 강의 전체를 잠금 해제할 수 있습니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

“사용자 지정 리소스 정의(CRD)”에서 뭘 배우나요?

Custom Resource Definitions가 직접 만든 리소스 유형으로 Kubernetes API를 확장하는 방법과 Operators가 구축되는 기반을 학습해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kubernetes Basics을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kubernetes Basics을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kubernetes Basics은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“사용자 지정 리소스 정의(CRD)” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kubernetes Basics 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kubernetes Basics 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 상태 저장 앱을 위한 StatefulSets
  2. 노드별 작업을 위한 DaemonSets
  3. Kubernetes 오퍼레이터 이해하기
  4. 사용자 지정 리소스 정의(CRD)
← Kubernetes Basics(으)로 돌아가기