Kubernetes 매니페스트 라운드트립
kubectl get deployment my-app -o json → 여기에 붙여넣기 → YAML → 편집 → apply. 또는: 벤더 문서의 YAML 매니페스트를 붙여넣고, JSON으로 변환해 jq로 필터링한 뒤, 다시 YAML로 되돌려 커밋합니다.
k8s, GitHub Actions, Docker Compose, helm을 위해 만들어진 양방향 변환기. 실시간 미리보기, 관용적인 YAML 출력, 모두 브라우저에서.
js-yaml은 훌륭하지만 minify해도 페이지 로드마다 약 30 KB가 추가됩니다. 실무 설정 파일 YAML은 명세의 일부만 사용합니다 — 블록 매핑, 블록 시퀀스, flow 스타일, 스칼라 타입, 멀티라인 literal. 우리는 그 서브셋만 직접 작성했고(약 5 KB), 그래서 콜드 로드가 빠르게 유지됩니다. anchor, alias, custom tag를 쓰는 YAML이라면 js-yaml을 사용하는 CI 파이프라인에 붙여넣으세요.
설정 파일에서 거의 쓰이지 않는 세 가지 기능: (1) anchor와 alias (&name / *name) — 한 문서 내에서 중복을 줄일 때 사용; (2) custom tag (!!str / !!float / !!omap) — 암묵적 타입 추론을 덮어쓸 때 사용; (3) --- 구분자가 있는 다중 문서 파일. 이들 중 어느 것도 표준 k8s, GitHub Actions, Docker Compose, helm, ansible 파일에는 등장하지 않습니다. 필요하다면 풀 YAML 파서를 사용하세요.
k8s, GitHub Actions, Docker Compose, helm, ansible — 그리고 사용하는 재미를 더해주는 작은 디테일들.
어느 쪽 형식이든 붙여넣으면 즉시 반대 형식이 나옵니다. 키를 누를 때마다 출력이 갱신됩니다 — Convert 버튼이 없습니다. 한 번의 클릭으로 방향을 전환하면 같은 도구가 반대 방향으로 동작합니다.
block + flow 매핑, block + flow 시퀀스, 스칼라(string, number, boolean, null), 멀티라인 literal(|) 및 folded(>) 블록 스칼라를 지원합니다. k8s 매니페스트, GitHub Actions, Docker Compose, GitLab CI, helm values, ansible playbook의 99%를 커버합니다.
JSON → YAML은 사람이 직접 작성한 듯한 YAML을 만듭니다: plain 스타일 키(따옴표 없음), 예약어(true/false/null/yes/no)나 숫자와 충돌할 때만 문자열에 따옴표를 붙이고, 멀티라인 문자열은 | 블록 스칼라로 출력하며, 들여쓰기는 2칸 또는 4칸 중 선택할 수 있습니다.
JSON → YAML → JSON은 바이트 단위로 동일한 문서를 만듭니다. 어느 방향으로 변환하든 반대 방향이 항상 깔끔하게 되돌립니다. 타입이 조용히 사라지거나 값이 강제 변환되는 일이 없습니다.
설정이 기기를 떠나지 않습니다. 직접 작성한 파서와 직렬화기가 로컬 JavaScript로 실행됩니다. DevTools → Network를 열고 외부 요청이 0건임을 직접 확인하세요.
순수 JavaScript, js-yaml 의존성 없음. 콜드 로드 크기는 gzip 기준 25 KB 미만입니다. 100 KB 규모의 k8s 매니페스트가 일반 노트북에서 30 ms 이내에 변환됩니다.
원본 설정에서 필요한 형식까지 세 단계.
입력 패널에 설정을 붙여넣으세요. 도구는 방향 드롭다운을 보고 어떤 형식을 붙여넣었는지 감지합니다 — 필요하면 직접 전환하세요. 키 입력마다 변환이 실시간으로 실행됩니다.
기본 들여쓰기는 2칸입니다(k8s / GitHub Actions 관례). 팀이 4칸을 쓴다면 4로 전환하세요. Swap을 눌러 출력을 입력 쪽으로 보낼 수 있습니다 — 라운드트립 검증에 유용합니다(JSON 붙여넣기 → YAML 변환 → swap → 다시 변환 → 원본과 비교).
복사 아이콘을 누르면 출력이 클립보드로 복사되고, 다운로드 아이콘을 누르면 output.yaml 또는 output.json으로 저장됩니다. 푸터에 바이트 크기 차이가 표시되어 YAML 표현이 얼마나 간결한지 확인할 수 있습니다.
프라이버시 우선의 브라우저 도구가 일회성 Python 스크립트보다 나은 4가지 흔한 시나리오.
kubectl get deployment my-app -o json → 여기에 붙여넣기 → YAML → 편집 → apply. 또는: 벤더 문서의 YAML 매니페스트를 붙여넣고, JSON으로 변환해 jq로 필터링한 뒤, 다시 YAML로 되돌려 커밋합니다.
어떤 블로그 글이 자기 문서 테마에 맞춰 CI 스니펫을 JSON으로 보여줍니다. 그대로 붙여넣어 YAML을 얻고 .github/workflows/ci.yml에 붙여넣으세요. 또는: 여러 잡으로 구성된 YAML 워크플로를 JSON으로 바꿔 프로그래밍적으로 편집한 뒤 다시 되돌립니다.
Helm values 파일은 YAML이지만, 일부 템플릿 도구는 JSON을 원합니다. values.yaml을 붙여넣어 JSON을 얻고, 도구를 거쳐 다시 붙여넣고, YAML로 변환해 커밋하세요. Docker Compose의 compose.yaml도 같은 흐름입니다.
API 키, 시크릿, 사내 호스트명, 고객 데이터 — 클라우드 변환기에 붙여넣을 수 없는 설정. 브라우저 전용 도구는 모든 바이트를 노트북에 둡니다. DevTools → Network를 열고 어느 것도 빠져나가지 않음을 확인하세요.
설정이 기기를 떠나지 않습니다. DevTools → Network를 열어보면 변환 중 외부 요청이 0건임을 확인할 수 있습니다.
JSON.parse, 클립보드 / 다운로드까지 모두 기기에서 JavaScript로 실행됩니다 — js-yaml CDN 없음, 외부 API 없음.
YAML 설정 패턴, JSON 도구, DevOps 파일 포맷에 관한 엄선된 글들.
Quoted commas, embedded newlines, BOM headers, doubled quotes — the cases where a regex split breaks down and you need a real parser.
When CSV's row-orientation beats JSON's structure — and when nested objects make CSV a dead end. Worked examples, with conversion patterns for both directions.
js-yaml은 훌륭하지만 minify해도 페이지 로드마다 약 30 KB가 추가됩니다. 실무 설정 파일 YAML은 명세의 일부만 사용합니다 — 블록 매핑, 블록 시퀀스, flow 스타일, 스칼라 타입, 멀티라인 literal. 우리는 그 서브셋만 직접 작성했고(약 5 KB), 그래서 콜드 로드가 빠르게 유지됩니다. anchor, alias, custom tag를 쓰는 YAML이라면 js-yaml을 사용하는 CI 파이프라인에 붙여넣으세요.
설정 파일에서 거의 쓰이지 않는 세 가지 기능: (1) anchor와 alias (&name / *name) — 한 문서 내에서 중복을 줄일 때 사용; (2) custom tag (!!str / !!float / !!omap) — 암묵적 타입 추론을 덮어쓸 때 사용; (3) --- 구분자가 있는 다중 문서 파일. 이들 중 어느 것도 표준 k8s, GitHub Actions, Docker Compose, helm, ansible 파일에는 등장하지 않습니다. 필요하다면 풀 YAML 파서를 사용하세요.
아니요 — 파싱 단계에서 주석은 제거됩니다. YAML은 주석(#...)을 지원하지만 JSON은 그렇지 않습니다. YAML을 JSON으로 라운드트립하면 주석 정보가 정의상 사라집니다. 우리는 편법으로 보존을 시도하기보다 파싱 시 깔끔하게 제거합니다. 주석을 유지하면서 YAML을 편집해야 한다면 YAML을 직접 편집하세요.
YAML의 암묵적 타입 규칙은 JSON보다 느슨합니다: 1.2.3은 점이 두 개라서 숫자가 아니라 YAML에서는 문자열이며, v1.2 같은 버전 문자열은 따옴표로 감싸지 않으면 문자열로 처리됩니다. 우리는 YAML 1.2 암묵적 타입 규칙을 따릅니다: ^-?\d+(\.\d+)?([eE][-+]?\d+)?$에 매칭되는 자릿수만 숫자가 되고, 그 외는 모두 문자열입니다. 정확한 숫자 처리가 필요하다면 YAML에서 값을 따옴표로 감싸거나 JSON을 직접 사용하세요.
없습니다. YAML 파서, 직렬화기, JSON 파서, 클립보드 복사까지 모두 기기에서 JavaScript로 실행됩니다. DevTools → Network를 열어보면 변환 중 외부 요청이 0건임을 확인할 수 있습니다. 운영 중인 k8s 매니페스트, 사내 CI 설정, secret이 포함된 helm values를 붙여넣어도 — 어느 한 바이트도 노트북을 떠나지 않습니다.