K3s는 가볍고 빠르게 쿠버네티스를 로컬이나 엣지 환경에 구성할 수 있는 도구고, Helm과 ConfigMap은 그 위에서 서비스를 배포하고 구성 관리할 때 핵심적으로 쓰입니다.
도커 컴포즈(docker-compose.yml)에 익숙하셨다면, K3s로 이관하면서 새로운 개념들을 1:1로 비교하면서 설명해드릴게요!
경량화된 쿠버네티스 배포판 (Rancher Labs 제작)
- 리소스가 적은 환경 (Raspberry Pi, IoT, VM 등)에서 운영 가능
- 설치 간편 (
curl | sh한 줄로 설치 가능)- kubelet, kube-proxy, controller 등도 통합됨
| 기능 | Docker Compose | Kubernetes (K3s) |
|---|---|---|
| 서비스 정의 | docker-compose.yml | Deployment, Service, ConfigMap, etc |
| 이미지 관리 | image: | 동일 |
| 볼륨 | volumes: | PersistentVolume, VolumeMount |
| 환경변수 | environment: | env: + ConfigMap, Secret |
| 실행 도구 | docker-compose up | kubectl apply, helm install |
환경변수나 설정 파일을 분리 저장하는 쿠버네티스 리소스
services:
app:
image: myapp
environment:
- DB_HOST=mysql
- DB_PORT=3306
app-config.yaml)apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
DB_HOST: mysql
DB_PORT: "3306"
spec:
containers:
- name: app
image: myapp
envFrom:
- configMapRef:
name: app-config
✅ 장점: 환경변수만 바꾸고 싶을 때 이미지 수정 없이 교체 가능
Kubernetes용 패키지 매니저 (일종의 "docker-compose for K8s")
Helm chart에 여러 리소스(DNS, Deployment, Service 등)를 통합 정의values.yaml)myapp-chart/
├── Chart.yaml # 메타정보
├── values.yaml # 사용자 정의 값
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
helm install myapp ./myapp-chart
→ 내부적으로는 kubectl apply 여러 번 해주는 것과 같음
| 도커 컴포즈 | 쿠버네티스 대체 리소스 |
|---|---|
docker-compose.yml | Helm Chart or kubectl apply |
environment: | ConfigMap, Secret, env |
volumes: | PersistentVolume, VolumeClaim |
depends_on | initContainers, readinessProbe 등 |
ports: | Service (NodePort, ClusterIP, LoadBalancer) |
docker-compose.yml → K8s YAML로 변환 (도구도 있음)ConfigMap, Deployment, Service 기초 익히기kubectl apply or helm install로 배포