Kubernetes 11

사이드카 패턴(Sidecar Pattern) 완벽 정리

"우리 회사는 Java, Node.js, Go를 다 씁니다. 그런데 로그 포맷을 변경하려니 3가지 언어의 로깅 라이브러리를 모두 수정하고 배포해야 하네요?"마이크로서비스 환경에서는 모든 서비스가 인증, 로깅, 모니터링, 트레이싱 같은 공통 기능(횡단 관심사)을 가져야 합니다. 이걸 해결하기 위해 **"내 코드 안에 라이브러리를 넣는 방식"**과 **"내 컨테이너 옆에 도우미 프로세스를 띄우는 방식"**이 치열하게 경쟁합니다.1. 방식 1: 라이브러리/SDK 방식 (Fat Client) - "코드 내장형"전통적인 방식입니다. 공통 기능을 .jar나 npm package 형태의 라이브러리로 만들어서 각 마이크로서비스 프로젝트에 의존성으로 추가합니다. 넷플릭스 OSS(Eureka, Ribbon, Hystrix..

서비스 디스커버리 패턴(Service Discovery) 완벽 정리

과거의 온프레미스 환경에서는 서버 IP가 고정(192.168.0.10)되어 있어 설정 파일에 박아두면 그만이었습니다.하지만 클라우드(AWS, K8s) 환경에서는 컨테이너가 수시로 죽고 살아나며 IP가 **동적(Dynamic)**으로 바뀝니다.그래서 **"현재 살아있는 서버들의 목록(Service Registry)"**을 관리하는 전화번호부가 필요합니다. 중요한 건 이 전화번호부를 누가 보고 전화를 거느냐입니다.1. 방식 1: 클라이언트 사이드 디스커버리 (Client-side Discovery) - "능동적인 손님"Netflix Eureka가 대표적인 예시입니다. API를 호출하는 **클라이언트(요청자)**가 서비스 레지스트리(전화번호부)를 직접 조회해서, 사용 가능한 인스턴스 중 하나를 골라 호출합니다..

헬스 체크 패턴(Health Check Pattern) 완벽 정리

"서버 프로세스는 떠 있는데, DB 커넥션이 끊겨서 에러만 뱉고 있습니다. 로드 밸런서는 이걸 아는지 모르는지 계속 요청을 보내네요."운영 중인 서비스의 상태를 모니터링하기 위해 /health 같은 API를 만들어두곤 합니다. 하지만 이 API가 단순히 **"나 살아있어(200 OK)"**만 외쳐야 할까요, 아니면 **"DB도 연결됐고, 캐시도 정상이고, 디스크 공간도 충분해"**라고 보고해야 할까요?이 목적에 따라 헬스 체크는 엄격하게 두 가지로 나뉩니다.1. 방식 1: 라이브니스 체크 (Liveness Probe) - "생존 신고"**"프로세스가 살아있는가?"**를 확인합니다. 이 체크가 실패하면 시스템(K8s)은 애플리케이션을 재시작(Restart) 시킵니다.특징Shallow Check (얕은 검사..

Bastion이란? 쿠버네티스 인프라에서 꼭 알아야 할 보안 관문

클라우드와 쿠버네티스(Kubernetes)를 공부하다 보면 "Bastion"이라는 용어를 자주 접하게 됩니다. 이 글에서는 Bastion의 개념부터 쿠버네티스 환경에서의 활용 방식까지, 처음 듣는 사람도 쉽게 이해할 수 있도록 자세히 설명하겠습니다.Bastion의 의미Bastion은 원래 성곽에서 "보루" 또는 "전초기지"라는 뜻을 가진 군사 용어입니다. IT 인프라에서 Bastion은 외부에서 내부 네트워크로 들어가기 위한 보안 관문(secure gateway) 역할을 합니다. 외부에서 내부망으로의 직접 접속을 차단하고, 반드시 Bastion 서버를 통해서만 접근하도록 설계되어 있습니다.예를 들어, 프라이빗 VPC(가상 사설망) 내부에 있는 EC2 인스턴스, 쿠버네티스 노드, 데이터베이스 서버 등은 외..

AWS에서 클러스터란? 클라우드 환경의 확장성과 안정성을 책임지는 핵심 구성 요소

클라우드 컴퓨팅 환경에서 ‘클러스터(Cluster)’라는 용어는 빈번하게 등장합니다. 특히 Amazon Web Services(AWS)를 사용하는 개발자나 시스템 운영자라면 클러스터의 개념을 명확히 이해하는 것이 중요합니다. 이번 글에서는 AWS에서 말하는 ‘클러스터’란 무엇인지, 어떤 서비스에서 사용되며 어떤 역할을 하는지 구체적으로 살펴보겠습니다.클러스터란 무엇인가?일반적인 의미에서 클러스터는 하나의 논리적 단위로 동작하도록 구성된 서버(노드)들의 집합입니다. 이러한 구성은 시스템의 가용성, 확장성, 안정성을 높이기 위한 것입니다. 클러스터 내부의 노드들은 서로 유기적으로 연결되어 하나의 서비스처럼 동작하며, 특정 노드에 장애가 발생해도 다른 노드가 이를 보완할 수 있도록 설계됩니다.AWS에서의 클러..

클라우드/AWS 2025.05.06

PVC와 PV의 차이점: 쿠버네티스 스토리지 개념 완벽 정리

쿠버네티스(Kubernetes)를 사용하다 보면 스토리지(Volume) 개념에서 혼란을 겪기 쉽습니다. 특히 PV(PersistentVolume)와 PVC(PersistentVolumeClaim)는 이름도 비슷하고 기능도 연결되어 있어 처음 접하는 사람에게는 이해하기 어렵습니다. 이번 글에서는 PV와 PVC의 개념, 차이점, 그리고 실제 동작 방식까지 명확하게 정리하여 설명드립니다.1. 쿠버네티스의 스토리지 개요쿠버네티스는 기본적으로 **Stateless(상태 없음)**한 애플리케이션 실행을 전제로 하지만, 실제 서비스에서는 데이터 저장이 필요한 Stateful(상태 있음) 애플리케이션도 많습니다. 예를 들어 DB(MySQL, PostgreSQL)나 로그 파일, 업로드된 파일을 저장해야 하는 워크로드는 ..

배포 전략(Deployment Strategy)

배포 전략(Deployment Strategy)은 애플리케이션을 운영 환경(Production)으로 안전하고 효율적으로 배포하기 위해 사용하는 방법론입니다. 이는 다운타임을 줄이고, 버그나 실패 발생 시 빠르게 롤백할 수 있게 하며, 사용자 경험을 최대한 유지하기 위해 매우 중요합니다.아래는 주요 배포 전략 7가지와 각각의 특징, 장단점을 정리한 내용입니다.✅ 1. Recreate (완전 재배포)기존 버전을 종료하고 새 버전을 시작함.중단 후 시작 방식.🔹장점구조가 간단하고 구현이 쉬움.리소스 소비가 적음.🔸단점다운타임이 발생함.트래픽이 많은 서비스에는 적합하지 않음.✅ 2. Rolling Update (롤링 업데이트)구 버전을 하나씩 종료하고, 새 버전을 순차적으로 배포.사용자는 점진적으로 새 버전..

Helm이란?

Helm은 Kubernetes 애플리케이션을 정의하고 설치하며 관리할 수 있는 패키지 관리자입니다. Helm을 사용하면 복잡한 Kubernetes 리소스를 템플릿화하고, 이를 패키지처럼 배포하거나 버전 관리할 수 있습니다. 마치 리눅스에서 apt, yum, brew 등을 사용하는 것처럼 Kubernetes 환경에서 Helm을 사용하는 것이죠.✅ Helm이란?Helm은 Kubernetes 애플리케이션을 패키징하고 공유할 수 있도록 도와주는 **“Kubernetes용 패키지 관리자(Package Manager)”**입니다.Helm에서 사용되는 패키지를 Chart라고 부르며, 하나의 Chart에는 Deployment, Service, ConfigMap, Secret 등의 리소스 템플릿이 포함됩니다.Chart는..

Kubernetes Service Domain 구조 완벽 가이드

Kubernetes에서는 클러스터 내부에서 Pod 간 통신을 서비스 이름만으로도 가능하게 만들어주는 Service Domain 구조가 존재합니다. 이는 내부 DNS 시스템인 CoreDNS에 의해 지원되며, 복잡한 IP 관리 없이도 서비스 간의 효율적인 연결을 가능하게 해줍니다.🧱 기본 도메인 구조Kubernetes의 DNS 도메인은 다음과 같은 계층 구조를 따릅니다:..svc.예를 들어, my-service라는 서비스가 default 네임스페이스에 존재한다면, 이 서비스의 FQDN(Fully Qualified Domain Name)은 다음과 같습니다:my-service.default.svc.cluster.local각 구성 요소는 다음과 같은 의미를 가집니다:구성요소 설명my-service서비스 이름de..

CoreDNS란? 쿠버네티스 DNS의 핵심을 이해하자

CoreDNS는 쿠버네티스(Kubernetes) 환경에서 기본 DNS 서버로 동작하는 확장 가능하고 경량화된 DNS 솔루션입니다. 기존의 kube-dns를 대체하며, 빠른 속도와 유연한 구성, 강력한 확장성을 제공하는 것이 특징입니다. 쿠버네티스 클러스터에서 파드 간 통신과 서비스 디스커버리를 가능하게 해주는 필수 인프라 구성 요소입니다.CoreDNS의 핵심 개념CoreDNS는 DNS 요청을 처리하는 동시에 플러그인 기반 아키텍처를 통해 다양한 기능을 쉽게 추가하거나 제거할 수 있습니다. 설정은 Corefile이라는 파일을 통해 이뤄지며, 도메인 별 라우팅, 캐시, 포워딩 등의 세부 동작을 정의할 수 있습니다.예시:. { forward . 8.8.8.8 cache log}이 구성은 모든 DNS 요청..