YAML과 JSON을 서로 변환합니다. 쿠버네티스 매니페스트 문법 검사에도 쓸 수 있습니다.
YAML은 탭 문자를 허용하지 않습니다. 반드시 스페이스를 써야 합니다. 에디터가 탭을 넣도록 설정되어 있으면 눈에는 멀쩡해 보여도 파싱이 실패합니다. YAML 파일을 다룰 땐 에디터에서 "탭을 스페이스로 변환" 옵션을 켜두세요.
들여쓰기 칸 수는 자유지만 같은 레벨은 같은 칸 수여야 합니다. 보통 2칸을 씁니다.
YAML은 따옴표 없는 값을 자동으로 타입 추론합니다. 이게 문제가 되는 경우가 있습니다.
yes, no, on, off, true, false → 불리언으로 해석됩니다. 국가 코드 NO(노르웨이)를 그냥 쓰면 false가 됩니다.1.10 → 숫자 1.1이 됩니다. 버전 문자열이라면 "1.10"으로 감싸야 합니다.08 → 8진수로 해석을 시도해 오류가 나거나 이상한 값이 됩니다.3:00 → 60진수로 해석될 수 있습니다.그래서 쿠버네티스 매니페스트에서 이미지 태그나 버전은 tag: "1.27"처럼 따옴표로 감싸는 것이 안전합니다.
---로 구분하면 한 파일에 여러 리소스를 넣을 수 있습니다. 쿠버네티스에서 Deployment와 Service를 한 파일에 쓰는 방식이 이것입니다. 이 도구는 첫 번째 문서만 변환합니다.
사실 모든 유효한 JSON은 그 자체로 유효한 YAML입니다. 그래서 YAML 파서에 JSON을 넣어도 그대로 동작합니다. 반대로 YAML을 JSON으로 바꾸면 주석과 앵커(&, *)가 사라지는데, JSON에는 그런 개념이 없기 때문입니다.
문법이 맞아도 쿠버네티스 스키마에 맞는지는 별개입니다. 실제 검증은 클러스터에 물어보는 것이 확실합니다.
kubectl apply --dry-run=client -f 파일.yaml
kubectl apply --dry-run=server -f 파일.yaml # 스키마까지 검증