🚀 Git Push 하나로 배포 완성 – ArgoCD GitOps 파이프라인 구축기

“배포를 자동화한다”는 말은 들어봤는데, 실제로 어떻게 작동하는 걸까요? 코드를 수정하고 Git에 올리면 서버에 자동으로 반영되는 그 마법. 그리고 누군가 서버를 실수로 건드리면 자동으로 되돌아오는 자가치유. 이번 실습은 ArgoCD로 이 두 가지를 직접 구현해본 기록입니다. 🤔 ArgoCD를 왜 쓰는가 — Push vs Pull 기존 CI/CD 도구(Jenkins 등)는 Push 모델입니다. 외부에서 클러스터에 접근 권한을 가지고 들어와서 배포합니다. … 더 읽기

🛠️ 나만의 Helm Chart 만들기 – 설계부터 패키징까지

지난 글에서는 Bitnami가 만든 Chart를 가져다 쓰는 “소비자” 역할을 했습니다. 이번엔 직접 Chart를 만드는 “생산자” 역할로 전환합니다. Custom Chart를 만들면 우리 팀의 배포 표준을 코드로 정의하고, 어떤 환경에서든(dev/staging/prod) 동일한 방식으로 배포할 수 있습니다. 🏗️ Step 1 — Chart 뼈대 생성 (Scaffolding) helm create 명령어 하나로 표준 디렉토리 구조를 자동으로 만들어줍니다. 3가지 핵심 파일만 알면 됩니다: … 더 읽기

📦 쿠버네티스 앱 설치, 이제 apt처럼 쉽게 – Helm 기초 완전 정복

쿠버네티스에 애플리케이션을 배포하려면 Deployment, Service, ConfigMap, PVC 등 여러 YAML 파일을 각각 apply해야 합니다. MySQL 하나 올리는 데 파일이 5개, 10개가 넘기도 합니다. Helm은 이 모든 것을 하나의 패키지(Chart)로 묶어서, helm install 명령어 하나로 배포하고, 업그레이드하고, 롤백할 수 있게 해줍니다. 리눅스의 apt, brew 같은 패키지 매니저를 쿠버네티스에 얹은 것이라고 생각하면 됩니다. 🧩 Helm의 핵심 개념 … 더 읽기

📈 트래픽 폭탄이 와도 끄떡없다 – HPA 오토스케일링 실험

서버 운영에서 가장 무서운 순간은 예고 없이 트래픽이 몰릴 때입니다. 미리 파드를 잔뜩 띄워두면 평소엔 자원 낭비고, 너무 적게 두면 폭탄이 터집니다. HPA(Horizontal Pod Autoscaler) 는 이 문제를 자동으로 해결해줍니다. CPU 사용률을 보다가 일정 수치를 넘으면 파드를 자동으로 늘리고, 트래픽이 빠지면 다시 줄입니다. 🎯 실험 시나리오 🛠️ 구성 과정 Step 1: Metrics Server 설치 쿠버네티스는 … 더 읽기

🔐 신입이 실수로 서버를 지우지 못하게 – Kubernetes RBAC 설정

지금까지는 클러스터의 모든 권한을 가진 admin 계정으로 실습했습니다. 실제 회사라면 이렇게 하면 안 됩니다. 신입 개발자에게 kubectl 권한을 주는데 실수로 kubectl delete pod –all을 치는 사고가 일어날 수 있죠. RBAC(Role-Based Access Control) 은 “누가, 어떤 리소스에, 무엇을 할 수 있는지”를 세밀하게 제어하는 쿠버네티스의 보안 시스템입니다. 🎯 이번 실습 시나리오 신입 개발자용 계정(dev-sa)을 만들어서 다음과 같이 … 더 읽기

💾 파드가 죽어도 데이터는 살아남는다 – PV/PVC와 MySQL StatefulSet

Deployment로 만든 파드는 죽으면 새로 태어납니다. 문제는 그 안에 저장된 데이터도 같이 사라진다는 겁니다. MySQL 같은 데이터베이스를 Deployment로 올리면 파드가 재시작될 때마다 데이터가 날아갑니다. 이 문제를 해결하기 위한 것이 PersistentVolume(PV) 과 PersistentVolumeClaim(PVC), 그리고 StatefulSet입니다. 🧩 개념 정리 — 세 가지 용어 한 번에 개념 설명 비유 PV 실제 스토리지 공간 창고 자체 PVC PV를 사용하겠다는 … 더 읽기

🚦 포트 지옥에서 탈출하기 – Kubernetes Ingress Controller 구축

서비스가 여러 개 생기면 NodePort 관리가 꽤 귀찮아집니다. 서비스 A는 30080, 서비스 B는 30081, 서비스 C는 30082… IP + 포트 조합을 외우거나 어딘가 적어둬야 합니다. 실제 운영에서는 클라이언트에게 포트 번호를 노출하는 것 자체가 좋지 않습니다. 이걸 해결하는 게 Ingress입니다. 하나의 IP와 80/443 포트로 모든 서비스를 라우팅할 수 있습니다. 🗺️ Ingress가 하는 일 🛠️ 설치 및 … 더 읽기

🌐 파드가 죽어도 주소는 바뀌지 않는다 – Kubernetes Service 완벽 이해

쿠버네티스에서 파드는 생겼다 죽었다를 반복하고, 죽을 때마다 IP가 바뀝니다. 그러면 클라이언트가 어떻게 파드를 찾아야 할까요? IP를 하드코딩해두면 죽을 때마다 설정을 바꿔야 합니다. 이 문제를 해결하는 게 Service입니다. 파드들 앞에 고정된 진입점(VIP, Virtual IP)을 만들어서, 클라이언트는 항상 같은 주소로 접근하고 Service가 뒤에서 살아있는 파드로 연결해줍니다. 📋 Service의 종류 — 상황에 맞게 골라 쓰기 타입 접근 범위 … 더 읽기

🔄 서비스 중단 없이 업데이트하기 – Kubernetes Deployment 완전 정복

단일 파드의 문제점이 뭔지 아시나요? 죽으면 그냥 끝입니다. 자동으로 살아나지 않아요. 게다가 새 버전을 배포하려면 기존 파드를 내리고 새 걸 올리는 동안 서비스가 끊깁니다. 이 두 가지 문제를 동시에 해결하는 게 Deployment입니다. 고가용성(HA)과 무중단 배포(Zero-downtime)를 쿠버네티스가 알아서 처리해주죠. 🎯 Deployment가 해결하는 3가지 🏗️ Deployment 생성 — YAML 작성 Deployment를 만들면 자동으로 ReplicaSet이 생성되고, ReplicaSet이 파드 … 더 읽기

🫛 쿠버네티스의 최소 단위 – Pod를 직접 만지고 부숴봤다

쿠버네티스를 처음 배울 때 제일 헷갈리는 개념이 바로 Pod(파드)입니다. Docker 컨테이너랑 뭐가 다른 거지? 라고 생각하기 쉬운데, 쿠버네티스는 컨테이너를 직접 관리하지 않습니다. 컨테이너를 파드라는 껍질로 감싸서 다루죠. 이번 실습은 파드를 두 가지 방식으로 만들고, 내부를 직접 들여다보고, 생명주기를 관찰한 기록입니다. 🎯 이번 실습에서 다룬 것들 📌 방법 1: 명령형 (Imperative) — 빠른 테스트용 일회성 테스트엔 … 더 읽기