liminfo

K8s YAML Generator

Kubernetes Deployment/Service/Ingress YAML 시각적 빌더

생성된 YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: nginx:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "256Mi"

K8s YAML Generator 소개

Kubernetes YAML 생성기는 가장 자주 필요한 세 가지 리소스 타입인 Deployment, Service, Ingress의 프로덕션 수준 Kubernetes 매니페스트 파일을 생성합니다. Deployment의 경우 앱 이름, 컨테이너 이미지, 레플리카 수, 컨테이너 포트, CPU와 메모리 요청 및 제한, 환경 변수를 설정할 수 있습니다. Service는 서비스 타입(ClusterIP, NodePort, LoadBalancer)과 서비스 포트를 선택합니다. Ingress는 호스트명, 경로, nginx rewrite-target 어노테이션을 지정합니다. 결과 YAML은 입력과 동시에 실시간으로 업데이트되며 문법 강조와 함께 표시됩니다.

이 도구는 Kubernetes를 학습 중인 개발자, DevOps 엔지니어, 플랫폼 엔지니어가 전체 apiVersion과 spec 스키마를 외우지 않고 유효한 매니페스트 보일러플레이트를 빠르게 만들어야 할 때 사용합니다. 잘못된 들여쓰기, 필수 필드 누락, 리소스 수량 형식 오류(밀리코어의 m, 메비바이트의 Mi) 등 YAML 작성 시 가장 흔한 실수를 폼 입력에서 항상 구조적으로 올바른 출력을 생성함으로써 제거합니다.

세 매니페스트 모두 현재 Kubernetes API 버전을 따릅니다. Deployment는 apps/v1, Service는 v1, Ingress는 networking.k8s.io/v1입니다. 생성된 YAML을 클립보드에 복사해 kubectl apply -f로 직접 적용하거나 Helm 차트나 Kustomize 오버레이의 일부로 저장할 수 있습니다. 모든 것이 브라우저에서 실행되므로 클러스터나 로컬 툴링 없이 매니페스트를 생성하고 반복할 수 있습니다.

주요 기능

  • 레플리카, 이미지, 포트, CPU/메모리 요청 및 제한이 포함된 Deployment YAML 생성
  • Deployment에 키-값 쌍으로 임의의 환경 변수 추가 지원
  • ClusterIP, NodePort, LoadBalancer 타입 선택으로 Service YAML 생성
  • 호스트명, 경로, nginx rewrite-target 어노테이션이 포함된 Ingress YAML 생성
  • 필드 변경 시 YAML 미리보기 실시간 업데이트
  • 각 리소스 타입에 올바른 apiVersion 사용 (apps/v1, v1, networking.k8s.io/v1)
  • 문법 강조된 YAML 출력과 원클릭 클립보드 복사
  • 100% 클라이언트 사이드 — 클러스터 연결이나 kubectl 설치 불필요

자주 묻는 질문

이 도구가 지원하는 Kubernetes 리소스 타입은 무엇인가요?

세 가지 리소스 타입을 생성합니다. Deployment(컨테이너화된 워크로드 실행), Service(클러스터 내외부로 Deployment 노출), Ingress(호스트명과 경로 기반 HTTP 트래픽 라우팅). 이 세 가지가 합쳐져 웹 애플리케이션을 배포하고 노출하는 데 필요한 최소한의 구성이 됩니다.

CPU와 메모리 요청/제한 값은 무엇을 의미하나요?

요청(Request)은 컨테이너에 보장되는 최소 리소스로, 스케줄러가 적합한 노드를 찾을 때 사용합니다. 제한(Limit)은 컨테이너가 사용할 수 있는 최대 리소스로, 초과하면 CPU는 스로틀링되고 메모리는 OOM 종료됩니다. CPU는 밀리코어(100m = 0.1 vCPU), 메모리는 메비바이트(128Mi) 또는 메가바이트(128M) 단위로 지정합니다.

ClusterIP, NodePort, LoadBalancer의 차이는 무엇인가요?

ClusterIP는 클러스터 내부에서만 서비스를 노출합니다(내부 트래픽). NodePort는 모든 노드 IP의 정적 포트를 열어 클러스터 외부에서 접근 가능하게 합니다. LoadBalancer는 외부 클라우드 로드 밸런서를 프로비저닝합니다(AWS ELB, GKE 등 지원하는 클라우드 공급자 필요). Ingress 뒤에 있는 프로덕션 웹 앱에는 보통 ClusterIP가 적합합니다.

Ingress 리소스는 어떤 인그레스 컨트롤러와도 사용할 수 있나요?

생성된 Ingress는 NGINX 인그레스 컨트롤러에 특화된 nginx.ingress.kubernetes.io/rewrite-target 어노테이션을 사용합니다. Traefik, HAProxy, AWS ALB 같은 다른 컨트롤러를 사용한다면 해당 어노테이션을 교체하거나 제거해야 합니다.

Deployment에서 리소스 제한이 왜 중요한가요?

리소스 제한이 없으면 하나의 폭주하는 컨테이너가 같은 노드의 다른 파드를 굶겨 불안정성을 유발할 수 있습니다. 요청과 제한을 설정하는 것은 프로덕션 워크로드를 위한 Kubernetes 모범 사례이며 HorizontalPodAutoscaler가 올바르게 동작하기 위해서도 필요합니다.

환경 변수는 어떻게 Deployment에 추가되나요?

환경 변수 섹션의 "+ 추가" 버튼을 클릭해 키-값 쌍을 추가합니다. 각 항목은 컨테이너 스펙의 env 항목이 됩니다. 실행 중인 컨테이너에 OS 환경 변수로 전달되어 Node.js의 process.env, Python의 os.environ, Java의 System.getenv로 접근할 수 있습니다.

생성된 YAML은 kubectl apply에 바로 사용할 수 있나요?

네, 생성된 YAML은 각 리소스 타입에 올바른 apiVersion, kind, metadata, spec 구조를 사용하며 kubectl apply -f manifest.yaml로 직접 적용할 수 있습니다. 프로덕션 클러스터에 적용하기 전에 리소스 제한과 컨테이너 이미지 태그 같은 값을 항상 검토하고 조정하세요.

여러 리소스를 하나의 매니페스트로 생성할 수 있나요?

도구는 한 번에 하나의 리소스를 생성합니다(Deployment, Service, Ingress 탭을 전환하며 각각 복사). 멀티 문서 YAML 파일을 만들려면 세 출력을 YAML 문서 구분자인 ---로 이어 붙이세요. 또는 각각 별도 파일에 저장하고 kubectl apply -f ./로 디렉터리 전체를 적용할 수 있습니다.