본문 바로가기

Kubernetes YAML 검사기

브라우저 처리

Kubernetes YAML(--- 로 여러 문서)을 읽어 필수 필드, selector와 Pod 라벨 불일치, latest 이미지, resources·probe·securityContext 누락, Service가 가리키는 Pod가 없는 경우를 찾아 줍니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
Kubernetes YAML 검사기 샘플 실행

kubectl apply는 문법만 맞으면 리소스를 만들어 주기 때문에, selector가 Pod 라벨과 어긋나거나 Service가 엉뚱한 라벨을 가리키는 실수는 배포 후에야 드러납니다. 이 검사기는 매니페스트를 YAML로 읽어 이런 연결 오류와 운영상 빠뜨리기 쉬운 설정을 미리 알려 줍니다.

브라우저 처리
샘플 결과
오류 1 · 경고 0 · 참고 0
문서 1개: Deployment/web

[오류] Deployment/web: selector.matchLabels가 template.metadata.labels와 맞지 않습니다.
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

Kubernetes YAML 검사기 사용 가이드

kubectl apply는 문법만 맞으면 리소스를 만들어 주기 때문에, selector가 Pod 라벨과 어긋나거나 Service가 엉뚱한 라벨을 가리키는 실수는 배포 후에야 드러납니다. 이 검사기는 매니페스트를 YAML로 읽어 이런 연결 오류와 운영상 빠뜨리기 쉬운 설정을 미리 알려 줍니다.

모든 문서의 apiVersion, kind, metadata.name과 이름 규칙(소문자·숫자·-·.)을 확인하고, Deployment·StatefulSet·DaemonSet은 selector.matchLabels가 템플릿 라벨과 맞는지 봅니다. 컨테이너마다 이미지 태그, resources.requests와 메모리 limit, readinessProbe, allowPrivilegeEscalation·runAsNonRoot 설정을 점검합니다.

같은 파일에 Service와 워크로드가 함께 있으면 Service의 selector와 맞는 Pod 템플릿이 있는지까지 확인합니다. ConfigMap의 | 블록 문자열, 여러 문서, 앵커도 읽으며 YAML 문법 오류는 행 번호로 알려 줍니다.

사용 방법

  1. 'Kubernetes YAML' 칸에 매니페스트를 붙여 넣습니다. 여러 리소스는 --- 줄로 구분합니다.
  2. '실행'을 누르면 문서 목록(종류/이름)과 오류·경고·참고가 나옵니다.
  3. 오류를 먼저 고치고, 경고와 참고는 운영 환경 기준에 맞게 반영합니다.

예시: 라벨이 어긋난 Deployment

입력
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - name: web
        image: nginx:1.27
        (resources·probe·securityContext 설정 생략)
결과
오류 1 · 경고 0 · 참고 0
문서 1개: Deployment/web

[오류] Deployment/web: selector.matchLabels가 template.metadata.labels와 맞지 않습니다.

selector는 app: web인데 Pod 라벨은 app: frontend라서 Deployment가 자기 Pod를 찾지 못합니다.

이럴 때 쓰면 좋아요

  • kubectl apply 전에 매니페스트의 연결 오류를 찾을 때
  • Service에 트래픽이 들어오지 않는 원인이 selector 불일치인지 확인할 때
  • 운영 배포 전 resources와 probe가 빠진 컨테이너를 점검할 때
  • Helm 렌더링 결과(helm template)를 붙여 넣어 한 번에 검사할 때

문제가 생겼을 때

'selector와 맞는 Pod 템플릿이 이 파일에 없습니다' 경고

Service의 spec.selector 라벨과 Deployment의 template.metadata.labels가 다릅니다. 라벨 키와 값의 철자를 맞추세요. 워크로드가 다른 파일에 있다면 무시해도 됩니다.

'이름에는 영문 소문자, 숫자, -, . 만 쓸 수 있습니다' 오류

Kubernetes 리소스 이름은 대문자와 밑줄을 허용하지 않습니다. my_app 대신 my-app처럼 바꾸세요.

활용 팁

  • resources.requests가 없으면 스케줄러가 노드에 Pod를 고르게 배치하지 못하고, 메모리 limit이 없으면 한 Pod가 노드 메모리를 다 쓸 수 있습니다.
  • 참고 항목(runAsNonRoot, allowPrivilegeEscalation)은 Pod Security Standards의 restricted 수준을 맞출 때 필요한 설정입니다.

자주 묻는 질문

CRD(사용자 정의 리소스)도 검사하나요?

apiVersion, kind, metadata.name 같은 공통 필드만 확인합니다. CRD의 spec 내용은 스키마를 모르기 때문에 검사하지 않습니다.

클러스터에 실제로 적용 가능한지도 알 수 있나요?

아니요. 클러스터 버전별 API 지원이나 권한은 확인하지 않습니다. kubectl apply --dry-run=server로 최종 확인하세요.

Job과 CronJob도 검사되나요?

네. Job은 spec.template, CronJob은 spec.jobTemplate 아래의 컨테이너를 찾아 같은 이미지·리소스 규칙으로 검사합니다.