C.W.K.
Stream
Lesson 08 of 08 · published

Linting & validation — yamllint, schema, tooling

~10 min · yaml, linting, validation, yamllint

Level 0평문
0 XP0/64 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

배포 전 YAML 버그 잡는 toolchain

yamllint — 스타일 + 정확성

yamllint 가 표준 YAML linter. 들여쓰기 drift, trailing whitespace, 줄 길이, syntax error, 혼합 quote 스타일, 흔한 함정 잡음. 리포 루트의 .yamllint 로 설정. CI 에서 실행; 에러에 빌드 실패시켜.

Schema validation — 같은 JSON Schema, YAML 에 적용

YAML 이 JSON 과 같은 데이터 모델로 파싱, 그래서 JSON Schema 가 YAML 검증, 변경 없이. 도구: check-jsonschema, ajv (YAML loader 플러그인), kubeconform (Kubernetes 전용).

도구별 validator

  • kubeval / kubeconform — Kubernetes manifest 를 공식 OpenAPI schema 로 검증.
  • actionlint — GitHub Actions workflow 파일. uses: 오타, 정의 안 된 env var, 누락된 checkout 단계 잡음.
  • docker compose configcompose.yaml 검증과 정규화, anchor 확장 포함.
  • helm lint — Helm chart YAML.
원칙: YAML 이 파스 시 관대하고 배포 시 가혹. 수정은 검증을 왼쪽으로 shift — 클러스터가 아니라 pre-commit 에서 lint 와 schema 체크. actionlint 30 초 설정이 로컬에서 잡힌 깨진 workflow 와 깨진 main 브랜치 차이.

Code

yamllint 빠른 시작·bash
# 한 번 설치
pip install yamllint
# 또는
brew install yamllint

# 디렉토리 트리 lint
yamllint .

# CI 친화: 에러 시 비-0 종료
yamllint --strict .

# 설정: 리포 루트의 .yamllint
cat > .yamllint <<EOF
rules:
  document-start: disable
  line-length:
    max: 120
  indentation:
    spaces: 2
EOF
JSON Schema 로 YAML 검증·bash
# check-jsonschema (pip install check-jsonschema)
check-jsonschema --schemafile config.schema.json config.yaml

# ajv with js-yaml plugin (Node)
npm install -g ajv-cli
ajv validate -s config.schema.json -d config.yaml --data-stream

# kubeconform — Kubernetes manifest
brew install kubeconform
kubeconform deployment.yaml service.yaml
actionlint — GitHub Actions linter·bash
# 설치
brew install actionlint
# 또는
go install github.com/rhysd/actionlint/cmd/actionlint@latest

# Workflow lint
actionlint

# CI 에서:
actionlint -color

# pre-commit hook (.pre-commit-config.yaml):
# - repo: https://github.com/rhysd/actionlint
#   rev: v1.6.27
#   hooks:
#     - id: actionlint

External links

Exercise

프로젝트의 YAML 많은 디렉토리 (.github/workflows, deploy/k8s/, ansible/) 하나 골라. yamllint . 와 적절한 도구별 validator (actionlint, kubeconform) 실행. 모든 에러 수정. lint 명령을 pre-commit hook 또는 CI 단계에 추가. 미래의 본인이 고마워할 거.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.