[CKA] 명령형과 선언형 리소스 관리

kubectl 명령으로 바로 바꾸는 방식과 매니페스트로 원하는 상태를 관리하는 방식을 비교합니다.

명령형 방식은 수행할 작업을 kubectl 명령으로 직접 지정합니다. 빠른 실습과 일회성 변경에 편리하지만 복잡한 구성을 재현하고 변경 이력을 관리하기 어렵습니다.

kubectl run nginx --image=nginx
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80
kubectl scale deployment nginx --replicas=5
kubectl set image deployment/nginx nginx=nginx:1.18

선언형 방식은 YAML이나 JSON에 원하는 최종 상태를 기록하고 kubectl apply로 반영합니다. 구성을 버전 관리할 수 있고, 여러 객체와 복잡한 설정을 반복해서 적용하기 쉽습니다.

kubectl apply -f nginx.yaml
kubectl apply -f /path/to/config-files

클라이언트 측 apply는 매니페스트, 현재 객체, 이전에 적용한 설정을 비교해 변경 사항을 계산합니다. 기존 방식에서는 마지막 적용 설정이 kubectl.kubernetes.io/last-applied-configuration annotation에 저장됩니다.

Kubernetes 공식 문서: Declarative Management of Kubernetes Objects Using Configuration Files