모든 Kubernetes 객체가 같은 네 키 가진 YAML 문서
Kubernetes manifest 는 모양이 딱 정해져 있어. apiVersion, kind, metadata, spec. 클러스터 API server 가 manifest 를 읽고, 그 kind 에 해당하는 OpenAPI schema 로 검증한 다음, 실제 상태를 거기 맞춰 조정해. Deployment 든 Service 든 ConfigMap 이든 Ingress 든 Job 이든 CronJob 이든, 전부 이 네 키 봉투를 써.
네 키 봉투
apiVersion— 이 객체가 어느 API 그룹의 몇 번 버전에 속하는지 (Deployment 면apps/v1, Service 면v1).kind— 리소스 종류 (Deployment,Service,ConfigMap, …).metadata— 이름과 namespace, label, annotation 이 들어가.spec— 원하는 상태를 적어. 안쪽 모양은 kind 마다 달라.
한 논리적 service 의 multi-document 파일
보통 service 하나는 Deployment 와 Service, ConfigMap, 그리고 필요하면 Ingress 까지 묶어서 나가. 한 파일 안에 --- 로 나뉜 문서 네 개인 셈이지. kubectl apply -f stack.yaml 한 줄이면 넷이 한꺼번에 적용돼.
원칙: manifest 는 원하는 상태지 명령이 아니야. 클러스터가 알아서 그 상태를 향해 맞춰가. 그래서 선언적이고 몇 번을 적용해도 결과가 같은 YAML 이 Kubernetes 에 맞는 포맷인 거야. 순서대로 시키는 shell script 는 애초에 모양이 안 맞아.