사용 중인
docker-compose.yaml을 Kubernetes용 매니페스트(YAML 파일)로 변환하여,
로컬 환경(Docker Desktop)에서 실행하는 과정에 대해 알아보겠습니다!
전체 진행 순서
- Docker Desktop에서 Kubernetes 활성화
- 로컬 Docker 이미지 빌드
- Kubernetes YAML 파일 작성
- kubectl로 배포
- 실행 확인
1. Docker Desktop에서 Kubernetes 활성화
먼저 로컬에서 Kubernetes를 켜야 합니다.
설정 방법
- Docker Desktop 실행
- ⚙️ Settings → Kubernetes 메뉴
- Enable Kubernetes 체크
- Apply & Restart

Kubeadm 옵션은 실제 리눅스 서버 설치 방식과 가장 유사한 단일 노드 클러스터를 구성합니다.
설치 확인
kubectl cluster-info

정상적으로 정보가 나오면 성공입니다.
2. 로컬 Docker 이미지 빌드
ECR에 올리지 않고
로컬 Kubernetes가 내 PC 이미지를 직접 사용하도록 설정합니다.
프로젝트 루트(test/)에서 실행:
# Backend
docker build -t product-service:local ./services/product-service
# Frontend
docker build -t web-frontend:local ./apps/web-frontend
👉 :local 태그를 붙여 구분해줍니다.


3. Kubernetes YAML 파일 작성
📂 폴더 구조
test/
├── docker-compose.yml
├── k8s/
│ ├── backend.yaml
│ └── frontend.yaml
├── apps/
└── services/
핵심 옵션: imagePullPolicy: Never
→ 외부 레지스트리에서 이미지를 찾지 않고 로컬 이미지를 사용합니다.
📄 k8s/backend.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: product-service:local
imagePullPolicy: Never
ports:
- containerPort: 4000
---
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
type: LoadBalancer
selector:
app: backend
ports:
- protocol: TCP
port: 4000
targetPort: 4000
📄 k8s/frontend.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: web-frontend:local
imagePullPolicy: Never
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
type: LoadBalancer
selector:
app: frontend
ports:
- protocol: TCP
port: 3000
targetPort: 3000
4️⃣ Kubernetes 배포
kubectl apply -f k8s/
상태 확인
kubectl get pods
kubectl get services
- STATUS → Running
- EXTERNAL-IP → localhost


정상이라면 준비 완료 ✅
5. 실행 확인
브라우저 접속:
- Frontend
- http://localhost:3000
- Backend
- http://localhost:4000/products/1

React 코드에서 API 주소가 localhost:4000이라면
코드 수정 없이 그대로 동작합니다.
[Troubleshooting]
❗ ErrImagePull / ImagePullBackOff
원인:
- docker build 안 했을 때
- 이미지 이름 오타
- imagePullPolicy 설정 누락
❗ 접속이 안 될 때
kubectl get svc
포트가 3000 / 4000으로 열려있는지 확인하세요.
[Deployment의 역할 정리]
Kubernetes Deployment는 다음을 담당합니다:
- Pod 생성
- Pod 자동 복구
- Pod 개수 유지 (replicas)
- Rolling Update (무중단 배포)
- 롤백 기능 제공
즉, 단순 실행이 아니라 운영을 위한 컨트롤러입니다.
[마무리]
docker-compose 기반 로컬 개발 환경을
Kubernetes 환경으로 옮기는 가장 기본적인 방법입니다.
이 과정을 이해하면:
- EKS 배포
- Helm 도입
- GitOps 적용
- HPA 확장
까지 확장할 수 있습니다.
'Cloud > Kubernetes' 카테고리의 다른 글
| [CKA] CKA 시험 후기 + 꿀팁 (0) | 2026.03.25 |
|---|