
컨슈머 애플리케이션을 다룰 때 이 부분이 가장 많이 헷갈렸어서 정리해봅니다. 토픽- 메시지를 브로커에 저장하기 위한 논리적인 이름- 대다수 사용자가 어떤 메시지가 어디로 가야 하는지에 관한 로직을 생각하기 시작하는 곳- 파티션 단위로 구성 Very simplified, a topic is similar to a folder in a filesystem, and the events are the files in that folder매우 간단하게 말하면, 토픽은 파일 시스템의 폴더와 비슷하며, 이벤트는 그 폴더 안의 파일들입니다. 토픽과 파티션 - 파티션 수는 토픽마다 지정- 파티션 수는 설정으로 조정함. 기본값은 1 - 토픽 A, B, C가 있을때 각 파티션의 갯수가 서로 다를 수도 있음. - 파티..

LimitRange네임스페이스의 각 적용 가능한 오브젝트 종류(예: 파드 또는 퍼시스턴트볼륨클레임)에 대해 지정할 수 있는 리소스 할당(제한 및 요청)을 제한하는 정책이다. apiVersion: v1kind: LimitRangemetadata: name: cpu-resource-constraintspec: limits: - default: # 이 섹션에서는 기본 한도를 정의한다 cpu: 500m defaultRequest: # 이 섹션에서는 기본 요청을 정의한다 cpu: 500m max: # max와 min은 제한 범위를 정의한다 cpu: "1" min: cpu: 100mResourceQuota 여러 사용자나 팀이 정해진 수의 노드로 클러스터를 공..

QoS (Quality of Service)Pod에 할당된 리소스 요청과 제한에 따라 Pod의 우선순위를 정의하는 기능Guaranteed (최우선)조건모든 컨테이너에 대해 요청(requests)과 제한(limits)이 동일하게 설정되어 있어야 함.CPU와 메모리 둘 다 설정해야 함.특징가장 높은 우선순위를 가짐.클러스터에서 리소스가 부족한 상황에서도 종료되지 않을 가능성이 높음.resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "500m" memory: "1Gi"Burstable (버스트 가능)설정 조건:요청(requests)은 설정했지만, 제한(limits)과 동일하지 않거나 일부 리소스에만 설정됨.제한을 설정하지 않으면..

컨테이너 리소스 request & limit포드를 만들 때 컨테이너가 필요로 하는(=요청 request) CPU 및 메모리 양과 소비할 수 있는 것(=한계 limit)를 지정할 수 있음컨테이너마다 개별적으로 지정apiVersion: v1kind: Podmetadata: name: frontendspec: containers: - name: app image: images.my-company.example/app:v4 resources: requests: memory: "64Mi" cpu: "250m" # 0.25 limits: memory: "128Mi" cpu: "500m" # 0.5컨테이너 리소스 단위CPU1 CPU ..

회사에서 ECS -> EKS 전환을 추진하면서 EKS 스터디를 하고 있습니다현재 DB정보 등 보안데이터를 AWS Secrets Manager에서 사용하고 있는데요이번에 EKS의 Pod에서 AWS Secrets Manager로의 연동을 시도해봤습니다 이런저런 시행착오를 많이 겪었고 새로 알게된 개념이 많습니다그냥 흘려보내기 아쉬워 한번 정리해봤습니다 과정 1. Secrets Store CSI Driver 설치Secrets Store CSI Driver는 Kubernetes에서 민감한 정보를 안전하게 관리하기 위해 외부 비밀 저장소(AWS Secrets Manager 등)와 연동하는 드라이버입니다. 이를 통해 Pod에 직접 시크릿을 마운트할 수 있어 애플리케이션이 필요한 정보를 안전하게 불러올 수 있습니다...

Kubernetes는 클라이언트 유형에 따라 API 서버에 접근하는 방식이 다릅니다. 이번 포스팅에서는 유저와 포드(Pod)가 어떻게 Kubernetes API 서버에 접근하는지, 그리고 Kubernetes에서 권한을 안전하게 관리하는 방법에 대해 다룹니다.클라이언트 유형별 API 서버 접근 방법1. 유저Kubernetes API 서버에 접근하는 사용자는 OIDC(OpenID Connect)나 IRSA(IAM Role Service Account) 같은 SSO(Single Sign-On) 시스템을 통해 인증을 받습니다.OIDC (OpenID Connect): 외부 인증 제공자(ex. 구글 워크스페이스, 옥타 등)를 통해 인증 후, OIDC 토큰을 API 서버로 전달하여 접근합니다.IRSA (IAM Rol..

쿠버네티스 아키텍처 쿠버네티스의 주요 컴포넌트컨트롤 플레인 (마스터 노드)워커 노드etcd 분산 스토리지Kubeletapi 서버쿠버네티스 서비스 프록시 (Kube-proxy)스케줄러컨테이너 런타임 (Docker, rkt, …)컨트롤 매니저 클라우드 컨트롤러 매니저 쿠버네티스 컴포넌트 간 커뮤니케이션 방법오직 API 서버를 통해 통신 API 서버모든 컴포넌트와 클라이언트(ex. kubectl)가 사용하는 중앙 컴포넌트RESTful API를 통해 클러스터 상태를 쿼리 및 수정할 수 있는 CRUD 인터페이스 제공그 상태를 etcd에 저장포드 등 오브젝트의 변경 요청이 들어올 경우 요청사항을 etcd에 저장하고 모든 감시자들(클라이언트들)에게 갱신된 오브젝트를 전달 ETCD포드, 레플리카셋, 서비스, 시..

디플로이먼트(Deployment)란?디플로이먼트(Deployment)는 Kubernetes에서 파드(Pod)와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공하는 리소스입니다. 이를 통해 개발자는 애플리케이션의 배포 및 관리를 쉽게 할 수 있습니다.디플로이먼트 리소스가 생긴 이유무중단 배포(Zero Downtime Deployment)를 구현하기 위해서는 2개 이상의 레플리카셋이 필요합니다.컨테이너 관리: 하나의 애플리케이션이 여러 개의 컨테이너로 구성될 수 있기 때문에, 이러한 컨테이너를 관리하기 위해 파드가 생성됩니다.파드 관리: 여러 개의 파드를 안정적으로 운영하기 위해 레플리카셋이 필요합니다.레플리카셋 관리: 마지막으로, 2개 이상의 레플리카셋을 효과적으로 관리하기 위한 상위 개념으..

볼륨 VolumeKubernetes 볼륨은 포드 내 컨테이너들이 데이터를 저장하고 공유할 수 있는 스토리지로, 포드의 생애주기와 관계없이 데이터를 유지하거나 임시로 사용할 수 있게 도와줌배경Kubernetes 볼륨은 컨테이너가 기본적으로 휘발성 스토리지를 사용해 컨테이너가 재시작되면 데이터가 사라지는 문제를 해결하기 위해 등장했음. 또한, 여러 컨테이너 간 데이터 공유가 필요하거나, 영구적으로 데이터를 저장해야 하는 요구사항을 충족하기 위해 다양한 유형의 볼륨이 도입됨. 이를 통해 애플리케이션이 데이터를 손실 없이 안정적으로 관리하고, 더 복잡한 상태 저장(Stateful) 애플리케이션을 운영할 수 있게 되었음. k8s에서 사용 가능한 볼륨 유형emptyDir: 포드가 생성될 때 빈 디렉토리가 제공되며,..
세션 친화성(Session Affinity)이란, 특정 클라이언트의 요청이 항상 동일한 서버(또는 포드)로 전달되도록 하는 기술입니다. 이는 클라이언트가 세션 동안 동일한 서버에 연결된 상태를 유지하도록 보장하여, 예를 들어 세션 데이터를 서버 측에 저장하는 애플리케이션에서 일관성을 유지할 수 있도록 도와줍니다. 쿠버네티스에서는 서비스의 SessionAffinity 설정을 통해 클라이언트 요청을 동일한 포드로 전달할 수 있습니다.1. 쿠키 기반 세션 (Cookie-based Session)세션 ID가 클라이언트의 브라우저 쿠키에 저장되고, 클라이언트가 서버에 요청할 때마다 해당 세션 ID를 함께 전송합니다.서버 측에서 세션 데이터를 저장하고 관리합니다.장점: 클라이언트 측에 많은 데이터를 저장할 필요가..
- Total
- Today
- Yesterday
- laravel 테스트
- 샤딩
- MySQL
- NoSQL
- springboot
- mongoDB
- database
- 대규모 데이터 처리
- java
- docker
- 쿠버네티스
- kubernetes
- devops
- laravel 테스트코드
- Infra
- 리눅스 컨테이너
- 몽고디비
- index
- 라라벨
- laravel
- 분산처리
- 주니어개발자
- phpUnit
- pods
- sre
- k8s
- php
- 백엔드
- Container
- mockery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |