← 목차
Week 7 · Phase 3 운영과 확장

CRD · Operator · Cluster API
+ 패키지 관리

K8s API를 확장하는 CRD/Operator, 클러스터를 CRD로 다루는 Cluster API, 그리고 Helm·Carvel 패키지 관리
학습 자료 · k8s-crd-clusterapi · helm · carvel-kapp
산출물 · 첫 Operator 배포 + Helm Chart 직접 작성

학습 목표

K8s를 "확장"하고 "선언적으로 패키징"한다
  • CRD — Custom Resource Definition으로 API를 확장하는 원리를 이해한다
  • Operator 패턴 — Watch + Reconcile로 운영 지식을 코드화한다
  • Cluster API — 클러스터 자체를 CRD로 관리하는 방식(VKS 실무 사례)을 학습한다
  • Helm 3 / Carvel(kapp) — 패키지·설정을 선언적으로 관리한다
  • Operator vs Helm vs Carvel의 사용 시나리오를 구분한다

CRD — 나만의 K8s API 만들기

쿠버네티스 오브젝트 종류를 직접 추가한다
① CRD 등록 (스키마 정의) group: demo.example.comkind: Backup · scope: Namespacedversions: [v1] · openAPIV3Schema → kubectl이 backups 리소스를 인식 then ② CR 인스턴스 생성 kind: Backup · name: nightlyspec: {schedule, storage} kubectl get backupskubectl explain backup.spec

Operator 패턴 — Watch + Reconcile

운영자가 하던 작업을 컨트롤러 코드로 자동화
Desired State (CR spec) Operator (Controller)Watch → 차이 계산 → 조치(Reconcile) Actual State — 실제 리소스가 spec과 일치하도록 지속 조정 예: Prometheus Operator예: cert-manager

Cluster API — 클러스터를 CRD로

클러스터 생성·확장·업그레이드를 선언적으로 (VKS 실무 사례)
개념

Management ↔ Workload

  • Management Cluster — CAPI 컨트롤러가 도는 관리 클러스터
  • Workload Cluster — Cluster/Machine CRD로 생성·관리되는 대상
  • 클러스터가 하나의 K8s 오브젝트가 됨
실무 · VKS

vSphere Kubernetes Service

  • Supervisor = Management, CAPI/CAPV로 클러스터 프로비저닝
  • kubectl get crd | grep cluster.x-k8s.io
  • ClusterClass로 표준화·업그레이드 자동화

패키지 관리 — Helm vs Carvel

선언적으로 앱을 묶어 배포·업그레이드·롤백
Helm 3

Chart · Release

  • Go 템플릿 + values.yaml 오버라이드
  • install / upgrade / rollback / history
  • Release 단위 관리 · 방대한 차트 생태계
Carvel

ytt · kbld · kapp · imgpkg · vendir

  • ytt overlay(템플릿 대신 패치) · kbld 이미지 고정
  • kapp — state-aware diff로 안전 배포
  • App CR(GroupedRecord)로 리소스 묶음 추적

라이브 실습 — CRD · Helm · kapp

확장부터 패키징까지
# CRD + CR 생성, Operator 활용 $ kubectl apply -f crd.yaml && kubectl get backups $ kubectl get crd | grep monitoring.coreos.com # Prometheus Operator # Helm — Chart 만들고 배포·업그레이드·롤백 $ helm create mychart $ helm install demo ./mychart -n demo --create-namespace $ helm upgrade demo ./mychart --set replicaCount=3 $ helm rollback demo 1 -n demo # Carvel/kapp — 매니페스트 묶음을 state-aware 배포 $ kapp deploy -a my-app -f manifests/

과제 — 확장 & 패키징

직접 만들고 비교
CRD/Operator

확장

  • 본인 CRD(예: WebApp) 스키마 + validation 작성
  • Cert-Manager 설치 → Issuer/Certificate 동작 분석
  • Operator vs Helm 5가지 비교 표
패키징

Helm & Carvel

  • Nginx+Service+ConfigMap Helm Chart 직접 작성 → 환경별 values 분리(dev/prod)
  • 동일 워크로드를 Carvel(kapp+ytt)로 재구성 → 차이 비교 보고서

체크리스트 & 다음 주

이걸 할 수 있으면 Week 7 완료
  • CRD의 group/version/kind/scope를 이해한다
  • Operator가 Reconcile loop로 동작함을 안다
  • Cluster API의 Management/Workload Cluster 개념을 안다
  • helm install/upgrade/rollback/history + values 오버라이드를 사용할 수 있다
  • Carvel 5종(ytt·kbld·kapp·imgpkg·vendir)의 역할을 구분할 수 있다
→
다음 주(Week 8) — DevOps 통합: Harbor 레지스트리 + Jenkins CI + GitOps로 파이프라인을 구축합니다.