docker compose k3s 비교 학습

agnusdei·2025년 4월 16일

K3s는 가볍고 빠르게 쿠버네티스를 로컬이나 엣지 환경에 구성할 수 있는 도구고, HelmConfigMap은 그 위에서 서비스를 배포하고 구성 관리할 때 핵심적으로 쓰입니다.

도커 컴포즈(docker-compose.yml)에 익숙하셨다면, K3s로 이관하면서 새로운 개념들을 1:1로 비교하면서 설명해드릴게요!


⚙️ K3s에서 Helm, ConfigMap 설명 (Docker Compose와 비교)


✅ 1. K3s란?

경량화된 쿠버네티스 배포판 (Rancher Labs 제작)

  • 리소스가 적은 환경 (Raspberry Pi, IoT, VM 등)에서 운영 가능
  • 설치 간편 (curl | sh 한 줄로 설치 가능)
  • kubelet, kube-proxy, controller 등도 통합됨

📦 2. Docker Compose vs Kubernetes

기능Docker ComposeKubernetes (K3s)
서비스 정의docker-compose.ymlDeployment, Service, ConfigMap, etc
이미지 관리image:동일
볼륨volumes:PersistentVolume, VolumeMount
환경변수environment:env: + ConfigMap, Secret
실행 도구docker-compose upkubectl apply, helm install

🎯 3. ConfigMap이란?

환경변수나 설정 파일을 분리 저장하는 쿠버네티스 리소스

예시: Docker Compose에서

services:
  app:
    image: myapp
    environment:
      - DB_HOST=mysql
      - DB_PORT=3306

→ Kubernetes에서는 이렇게 나뉘어요:

ConfigMap 정의 (파일 예: app-config.yaml)

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DB_HOST: mysql
  DB_PORT: "3306"

Deployment에서 사용

spec:
  containers:
  - name: app
    image: myapp
    envFrom:
    - configMapRef:
        name: app-config

✅ 장점: 환경변수만 바꾸고 싶을 때 이미지 수정 없이 교체 가능


🚀 4. Helm이란?

Kubernetes용 패키지 매니저 (일종의 "docker-compose for K8s")

  • 하나의 Helm chart에 여러 리소스(DNS, Deployment, Service 등)를 통합 정의
  • 변수 사용 가능 (values.yaml)
  • 반복 배포, 버전 관리, 롤백 가능

Helm Chart 구조 예시

myapp-chart/
├── Chart.yaml       # 메타정보
├── values.yaml      # 사용자 정의 값
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── configmap.yaml

Helm 설치 및 배포 예

helm install myapp ./myapp-chart

→ 내부적으로는 kubectl apply 여러 번 해주는 것과 같음


🧠 요약하면:

도커 컴포즈쿠버네티스 대체 리소스
docker-compose.ymlHelm Chart or kubectl apply
environment:ConfigMap, Secret, env
volumes:PersistentVolume, VolumeClaim
depends_oninitContainers, readinessProbe 등
ports:Service (NodePort, ClusterIP, LoadBalancer)

✨ 추천 시작 방법

  1. docker-compose.yml → K8s YAML로 변환 (도구도 있음)
  2. ConfigMap, Deployment, Service 기초 익히기
  3. Helm Chart로 묶기 (템플릿화, 재활용)
  4. K3s에 kubectl apply or helm install로 배포

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글