본문 바로가기
반응형

Kubernetes38

Kubernetes 이벤트 기반 오토스케일링, KEDA로 트래픽과 비용을 동시에 최적화하기 Kubernetes 운영을 하다 보면 스케일링의 기준을 CPU/메모리 사용률이 아닌, 비즈니스 이벤트로 잡아야 하는 순간이 옵니다.메시지 큐의 잔량, API 호출 급증, 배치 Job 트리거 등 실제 서비스 부하의 원인을 기준으로 파드를 조정하고 싶다면, KEDA가 훌륭한 선택지가 됩니다.1. KEDA란? — Event-Driven Autoscaling의 등장 배경Kubernetes 기본 오토스케일링인 **HPA(Horizontal Pod Autoscaler)**는 CPU/메모리 기반 스케일링엔 최적이지만,다음과 같은 한계가 있습니다.지표가 실제 서비스 부하 원인과 간접적비동기/배치 워크로드에서는 Scale-to-Zero 적용 어려움외부 이벤트 소스(메시지 큐, 스트림 등)를 스케일링 기준으로 삼기 복잡이.. 2025. 12. 2.
Kubernetes 파드 리소스 최적화 자동 추천, Goldilocks로 시작하는 근거 기반 운영 Goldilocks는 Kubernetes 워크로드의 CPU/메모리 request와 limit 값을 자동으로 추천해주는 오픈소스 도구입니다. “과하지도, 부족하지도 않은 딱 맞는 값”을 제안한다는 의미에서 이름이 붙었습니다.어떻게 동작할까?Goldilocks의 분석 엔진은 VPA(Vertical Pod Autoscaler)를 활용합니다. VPA를 워크로드에 직접 적용하지 않아도 모니터링 모드로 활성화된 VPA 객체를 통해:파드의 실제 CPU/메모리 사용량트래픽이나 작업 부하에 따른 resource peak(피크 사용량)CPU limit 으로 인한 throttling(쓰로틀링) 발생 구간OOM(Out of Memory) 발생 가능 지점을 객관적으로 계산해냅니다.분석이 끝나면 Goldilocks Dashboa.. 2025. 12. 2.
Kubernetes에서 Vault로 비밀 다루기: Seal, Sync, 주입 들어가며클라우드 네이티브 환경에서 비밀 정보를 안전하게 다루는 것은 DevOps와 플랫폼 팀의 핵심 과제다. Kubernetes에서 HashiCorp Vault를 연동해 Secret을 주입하는 방식은 크게 3가지 흐름으로 나뉜다. 각 방식의 동작 주체, Secret 저장 위치, 갱신 전략이 완전히 다르다. 또한, Vault의 Seal/Unseal 개념은 Vault 서버의 보안 상태를 제어하는 관문 역할을 한다.🔒 Vault Seal / 🔓 Unseal 이란?Vault는 모든 Secret 데이터를 마스터 키(Master Key) 로 암호화하여 storage(기본적으로는 etcd가 아닌 Vault 자체 저장소)에 저장한다. 하지만 마스터 키가 평문으로 디스크에 저장되면 탈취 위험이 있기 때문에, Vaul.. 2025. 11. 27.
그림과 실습으로 배우는 쿠버네티스 입문 📘 서평: 《그림과 실습으로 배우는 쿠버네티스 입문》클라우드 환경에서 일반적인 가상머신 기반 구조를 쿠버네티스로 이전하면서,처음 쿠버네티스를 접하는 개발자에게 어떻게 이 기술을 이해시키고 익히게 할 수 있을까 고민하던 시점에 이 책을 만났습니다.개념을 설명할 때 ‘그림’만큼 강력한 도구는 없다고 생각합니다. 그래서 제가 작성하는 발표자료나 기술문서에도 늘 시각 자료를 넣습니다.이 책은 그런 면에서 정말 매력적이었습니다. 이름 그대로 ‘그림과 실습’ 중심으로 구성되어 있어,쿠버네티스를 처음 접하는 분들에게 개념을 시각적으로 쉽게 이해시켜 주고,직접 따라 하며 감각적으로 익힐 수 있도록 돕습니다.💬 만화로 시작하는 친숙한 접근 책의 챕터의 첫부분은 쿠버네티스 개념을 대화 형식의 만화로 소개합니다.지금까.. 2025. 11. 2.
Kubernetes에서 애플리케이션 설정 우선순위 이해하기 목차 ConfigMap, Secret, 그리고 내부 설정 중 무엇이 이길까?Kubernetes에서 애플리케이션을 배포하다 보면,“앱 내부 설정값이 우선일까, ConfigMap/Secret이 우선일까?”라는 의문이 자주 생깁니다.특히 운영 중인 서비스의 환경설정이 기대와 다르게 동작할 때,이 우선순위를 정확히 이해하고 있지 않으면 디버깅이 어렵습니다.이 글에서는 Kubernetes가 실제로 설정값을 어떻게 주입하고,최종적으로 어떤 값이 적용되는지를 프레임워크별로 정리해보겠습니다.1️⃣ Kubernetes는 ‘우선순위’를 결정하지 않는다먼저 중요한 사실 하나:Kubernetes는 단지 환경 변수나 파일 형태로 설정을 주입할 뿐,어떤 값이 “최종적으로 우선”인지는 애플리케이션의 설정 로더가 결정합니다.즉.. 2025. 10. 23.
_helpers.tpl란? Helm Chart 템플릿 파일 중 하나예요.보통 charts//templates/_helpers.tpl 경로에 있습니다.여기에는 템플릿 함수(helpers) 가 정의돼 있어서, Chart의 여러 템플릿(deployment.yaml, service.yaml, ingress.yaml 등)에서 반복되는 부분을 재사용할 수 있게 해줍니다.예: 리소스 이름 규칙(fullname, name, chart)이나 label 공통 정의 등을 여기서 함수로 정의하고 다른 곳에서 호출합니다.# _helpers.tpl{{- define "mychart.fullname" -}}{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}}{{- end }.. 2025. 9. 18.
[kubernetes] kind 설치 및 간단한 실행방법 목차1) 사전 준비Docker Desktop 설치 (WSL2 백엔드 권장). Docker가 켜져 있어야 합니다.kubectl 설치 (없다면 함께 설치).Windows (PowerShell)# Docker Desktop 설치(수동 설치 권장), 설치 후 실행# kubectlwinget install -e --id Kubernetes.kubectl # 또는choco install kubernetes-cli -y # 또는scoop install kubectl# kindchoco install kind -y # 또는scoop install kind # 또는winget .. 2025. 9. 6.
ArgoCD 배포 시 실패한 Pod는 삭제됐는데 ReplicaSet은 남아있다? 괜찮은 걸까? 쿠버네티스 환경에서 ArgoCD로 애플리케이션을 배포하다 보면, 실패한 Pod는 삭제됐는데 ReplicaSet(RS)은 계속 남아 있는 상황을 접할 수 있습니다. 처음에는 “이거 뭔가 잘못된 거 아닌가?” 싶지만, 사실은 정상적인 동작입니다. 이번 글에서는 왜 이런 현상이 발생하는지, ReplicaSet을 어떻게 관리해야 하는지 정리해 보겠습니다.1. ReplicaSet이 남는 이유Deployment의 기본 동작 원리쿠버네티스에서 Deployment(또는 Argo Rollouts)는 직접 Pod를 생성하지 않습니다. 대신 ReplicaSet을 생성하고, ReplicaSet이 파드를 관리합니다. 따라서 파드가 실패해 삭제되더라도 ReplicaSet은 그대로 남아 있으며, 필요 시 새 파드를 다시 만들 준비.. 2025. 8. 29.
Argo CD에서 “읽기 전용(READ-ONLY)” 사용자 만들기 (Helm/Terraform 예시) 로컬 계정 하나 만들고role:readonly 를 정의해 조회만 허용policy.default 를 role:readonly 로 두되, admin은 명시적으로 전권 매핑Helm values 로 관리하고, 적용 후 argocd-server 재시작 → 비밀번호/토큰 발급 → 권한 확인1) 개념 한 줄 요약Argo CD 권한은 Casbin 정책(policy.csv) 으로 정의합니다.p, , , , , allow|denyg, , role: (사용자→역할 매핑)policy.default 는 매핑되지 않은 사용자의 기본 역할입니다.deny가 allow를 이깁니다. 읽기 전용 역할에 굳이 deny 줄을 많이 넣기보다, “허용만 명시”하는 편이 안전합니다.admin은 반드시 명시 매핑하세요. 기본 역할이 readonly.. 2025. 8. 29.
Argo CD에서 이미지 변경 트리거 안되는 배포 트러블 슈팅 — GitOps + ECR 날짜태그 + Argo CD Image Updater + IRSA, 그리고 Helm으로 한 장 템플릿 감싸기까지이 글은 제가 실제로 겪은 “ECR 이미지가 바뀌었는데 Argo CD가 변화를 못 잡는다” 문제를 완전 종료한 과정 정리입니다.길지만, 그대로 따르면 끝납니다. (폴더 구조, Terraform, Helm, 어노테이션, GitHub Actions, 체크리스트 모두 포함)문제의 본질: Argo CD는 “Git 변경”만 본다컨테이너 이미지를 :latest 로 계속 덮어써도 Git 매니페스트가 그대로면 Argo CD는 “변화 없음”으로 봅니다.해결 핵심은 두 가지 중 하나:A안(불변 태그 + Git 반영): 매 빌드마다 새 태그(날짜/커밋SHA) 를 만들고, 그 태그를 Git에.. 2025. 8. 25.
ArgoCD + ALB + CloudFront 환경에서 HTTPS 리다이렉션 정리 쿠버네티스에서 ArgoCD와 여러 앱을 ALB(aws-load-balancer-controller) 뒤에 붙이고, 그 앞단에 CloudFront를 둔 구조를 쓰다 보면 HTTP→HTTPS 리다이렉션 충돌 문제가 자주 발생합니다. 이번 글에서는 실제 경험한 케이스와 함께, 왜 문제가 생기는지, 그리고 어떻게 정리하는 것이 좋은지 정리합니다.문제 상황ArgoCD, Grafana, Invitation 앱 등 여러 서비스가 같은 ALB 그룹(shared-alb) 을 공유.Invitation 앱의 Ingress에 리다이렉트 액션 (alb.ingress.kubernetes.io/actions.redirect-to-https) 이 설정되어 있었음.이 액션이 host 제한 없이 / catch-all 로 걸려 있어, 같.. 2025. 8. 24.
AWS ALB Ingress Controller – 포트 & Path 기반 라우팅 완전 정리 목차 쿠버네티스 환경에서 AWS ALB Ingress Controller를 사용하면, 하나의 ALB로 여러 서비스에 트래픽을 라우팅할 수 있습니다.이 글에서는 포트와 Path를 활용한 라우팅 개념부터 Terraform 예제, 그리고 포트 매핑 케이스별 매트릭스와 패킷 흐름까지 전부 정리합니다.1. ALB + Kubernetes에서 포트 흐름 이해하기ALB → Kubernetes Service → Pod 컨테이너 포트는 아래 4단계로 연결됩니다.[Client] ↓ Listener Port[ALB Listener] ↓ Target Group Port (Service Port)[Kubernetes Service] ↓ targetPort[Pod Container Port] 구분 설명예시ALB Li.. 2025. 8. 8.
반응형