Kubernetes를 처음 배우는 분이라면 .yaml 파일을 처음부터 작성하는 것이 너무 번거롭다고 느낄 때가 많습니다. 특히 Deployment, Service, ConfigMap, Secret 같은 리소스를 직접 작성하려면 필드와 옵션을 일일이 기억해야 하죠.

하지만 kubectl --dry-run=client 옵션을 활용하면, 실제 클러스터에 적용하지 않고 YAML 파일을 바로 생성할 수 있습니다. 오늘은 이 유용한 팁과 함께 자동으로 YAML 파일을 만들어주는 간단한 쉘 스크립트까지 소개합니다.

--dry-run=client 활용법

예를 들어 Nginx Deployment를 만들고 싶지만, 먼저 YAML 파일로 확인하고 싶다면 다음 명령어를 사용할 수 있습니다.

kubectl create deployment drydeploy --image=nginx --replicas=3 --dry-run=client -o yaml > drydeploy.yaml
  • --replicas=3 → 생성할 Pod 수
  • --dry-run=client → 실제 클러스터에 적용하지 않고 시뮬레이션
  • -o yaml → YAML 형식 출력
  • > drydeploy.yaml → 파일로 저장

이렇게 생성된 drydeploy.yaml을 열어서 필요한 설정을 수정한 후, 실제 클러스터에 적용할 수 있습니다.

kubectl apply -f drydeploy.yaml

쉘 스크립트로 YAML 자동 생성

매번 명령어를 입력하는 대신, 아래와 같이 사용자가 선택하면 자동으로 YAML 파일을 생성해주는 스크립트를 만들 수 있습니다.

🧩 kube-yaml-generator.sh

#!/bin/bash

echo "Select resource type:"
echo "1) Deployment"
echo "2) Service"
echo "3) ConfigMap"
echo "4) Secret"
read -p "Enter number: " choice
read -p "Enter resource name: " name

case $choice in
  1)
    read -p "Enter image name (e.g. nginx): " image
    read -p "Replica count (default 1): " replicas
    replicas=${replicas:-1}
    kubectl create deployment "$name" \
      --image="$image" \
      --replicas="$replicas" \
      --dry-run=client -o yaml > "${name}-deployment.yaml"
    echo "✅ ${name}-deployment.yaml created."
    ;;
  2)
    read -p "Enter port number (e.g. 80): " port
    kubectl expose deployment "$name" \
      --port="$port" \
      --target-port="$port" \
      --type=ClusterIP \
      --dry-run=client -o yaml > "${name}-service.yaml"
    echo "✅ ${name}-service.yaml created."
    ;;
  3)
    read -p "Enter key: " key
    read -p "Enter value: " value
    kubectl create configmap "$name" \
      --from-literal="$key=$value" \
      --dry-run=client -o yaml > "${name}-configmap.yaml"
    echo "✅ ${name}-configmap.yaml created."
    ;;
  4)
    read -p "Enter key: " key
    read -p "Enter value: " value
    kubectl create secret generic "$name" \
      --from-literal="$key=$value" \
      --dry-run=client -o yaml > "${name}-secret.yaml"
    echo "✅ ${name}-secret.yaml created."
    ;;
  *)
    echo "Invalid selection."
    ;;
esac

스크립트 사용법

  1. 파일 저장 → kube-yaml-generator.sh
  2. 실행 권한 부여:
  3. chmod +x kube-yaml-generator.sh
  4. 실행:
  5. ./kube-yaml-generator.sh
  6. 선택한 리소스의 YAML 파일이 생성됩니다.

요약

  • .yaml 파일을 처음부터 작성하는 대신 --dry-run=client로 빠르게 생성
  • 쉘 스크립트를 활용하면 반복 작업 최소화
  • YAML 파일을 버전 관리(Git)나 CI/CD 파이프라인에 그대로 활용 가능

Kubernetes 학습 초반에는 실제 클러스터에 적용하기 전에 YAML 파일로 미리 확인하는 습관을 들이면 오류를 줄이고 학습 효율도 높일 수 있습니다.

복사했습니다!