반응형

분류 전체보기 400

EKS + Karpenter 무중단 업그레이드 — 노드 잔존 문제부터 검증까지

Overviewprod EKS 클러스터(`prod-app-v1`, eu-central-1, Karpenter ON_DEMAND ARM c7g NodePool)에서 `kubectl rollout restart` 한 번에 노드가 한 대 늘었다가 영영 줄지 않는 문제를 만났다. 단순한 오토스케일러 이슈처럼 보였지만, 추적해보니 Deployment 배포 설정 + memory request 과대 + Karpenter consolidation 정책이 맞물려 만든 구조적 결과였다. 이 글은 그 문제를 무중단으로 끝내기까지의 전 과정을 정리한다. 단순히 노드를 줄이는 게 목표가 아니라, 롤링·재시작·consolidation 어느 경로에서도 502 없이, Ready 파드가 0이 되지 않게 만드는 것이 목표였다. 다루는..

AWS 00:00:50

Cluster Autoscaler vs Karpenter: ASG 위에서 도느냐, ASG를 대체하느냐

OverviewEKS 클러스터는 파드(Pod)가 생성되고 삭제될 때마다 노드를 확장하고 축소해야 한다. 펜딩(Pending) 상태의 파드가 생기면 노드를 추가하고, 유휴 노드가 발생하면 이를 제거하는 작업이다. AWS 환경에서 이 문제를 해결하는 대표적인 도구는 두 가지 — Cluster Autoscaler(CA)와 Karpenter가 있다. 둘 다 목표는 같다. 필요한 만큼만 노드를 배치하고, 불필요해지면 줄여 비용과 자원을 최적화하는 것이다. 하지만 그 일을 처리하는 방식은 근본부터 다르다. 핵심을 한 줄로 요약하면 다음과 같다.Cluster Autoscaler(2017년경, Kubernetes SIG-Autoscaling): AWS의 ASG(Auto Scaling Group) 위에서 동작한다. 직..

AWS 2026.07.14

RDS IAM 인증으로 데이터베이스 비밀번호 관리에서 벗어나기

Overview데이터베이스 운영에서 가장 흔하면서도 위험한 부분 중 하나가 비밀번호 관리이다. 소스 코드에 하드코딩되거나, `.env` 파일이 Git에 올라가거나, 팀원 간에 메신저로 공유되는 경우를 한 번쯤은 경험해보셨을 거다. 특히 개인정보를 다루는 시스템이라면 KISA의 개인정보 안전성 확보조치 기준에 따라 비밀번호 복잡도 요건과 주기적 로테이션이 법적으로 요구된다. AWS RDS IAM 인증은 이 문제에 대한 근본적인 해결책이다. 데이터베이스에 접속할 때 고정된 비밀번호 대신 15분짜리 임시 인증 토큰을 발급받아 사용하는 방식으로, 비밀번호 유출 리스크를 원천적으로 제거한다. 이 글에서는 RDS IAM 인증의 동작 원리부터 설정 방법, 다른 비밀번호 관리 방식과의 비교, 그리고 Lambda/EK..

AWS 2026.07.13

EKS 무중단 배포 — lifecycle(preStop) · Pod Readiness Gatestrategy(RollingUpdate) · PodDisruptionBudget

OverviewEKS와 Karpenter를 함께 사용하는 환경에서 `kubectl rollout restart` 를 실행한 후, 노드가 한 대 늘어났다가 영원히 줄어들지 않는 문제를 겪었다. 처음에는 "오토스케일러 버그인가" 싶었지만, 원인을 파고들어 보니 Deployment의 배포 설정과 Karpenter의 consolidation(노드 통정) 정책이 맞물려 발생한 구조적인 문제였다. 이 글은 해당 문제를 해결하며 정리한 쿠버네티스 무중단 배포의 네 가지 핵심 축을 다룬다.`lifecycle.preStop` & Pod Readiness Gate — 트래픽 안전의 한 쌍. preStop은 종료되는 파드가 ALB에서 빠질 때까지(outbound) 트래픽을 안전하게 처리하고, Readiness Gate는 새..

AWS 2026.07.09

GSLB (Global Server Load Balancing) 완벽 가이드

Overview글로벌 서비스를 운영하다 보면 필연적으로 마주하게 되는 질문이 있다. "서울의 사용자와 뉴욕의 사용자가 동시에 접속할 때, 어떻게 하면 둘 다 빠른 응답을 받을 수 있을까?" 이 질문에 대한 답이 바로 GSLB이다. GSLB(Global Server Load Balancing)는 여러 지역에 분산된 데이터센터나 클라우드 리전 간의 트래픽을 지능적으로 분배하는 기술이다. 단순히 부하를 분산하는 것을 넘어, 사용자의 위치, 서버 상태, 네트워크 지연시간 등을 고려하여 최적의 엔드포인트로 트래픽을 라우팅한다. DevOps 엔지니어로서 GSLB를 이해하는 것은 단순히 하나의 기술을 아는 것이 아니라, 글로벌 인프라 설계의 핵심 원리를 이해하는 것이다. 이 글에서는 GSLB의 개념부터 실제 구현 ..

Network 2026.07.07

Kubernetes Ingress에서 APK 파일의 Content-Type 올바르게 설정하기

Overview안드로이드 APK 파일을 웹서버를 통해 배포할 때, Content-Type이 올바르게 설정되지 않으면 다운로드나 설치에 문제가 발생할 수 있다. 특히 Kubernetes 환경에서 Nginx Ingress를 사용하는 경우, APK 파일이 `application/zip` 으로 잘못 인식되어 안드로이드 기기에서 제대로 설치되지 않는 문제를 경험할 수 있다.이 글에서는 Kubernetes Nginx Ingress Controller를 사용하여 정적 파일 서버를 운영할 때, APK 파일의 Content-Type을 `application/vnd.android.package-archive` 로 올바르게 설정하는 방법을 다룬다. Static File Server 관련해서는 아래의 글을 참고하면 된다..

EKS Pod Identity vs IRSA: 파드에 IAM 권한을 주는 두 가지 방식

OverviewEKS 위에서 돌아가는 파드는 결국 AWS 리소스를 건드린다. S3에서 파일을 읽고, Secrets Manager에서 시크릿을 꺼내고, DynamoDB에 쓰는 식이다. 문제는 어떻게 그 권한을 안전하게 주느냐다. 액세스 키를 매니페스트에 박아 넣는 건 답이 아니다. AWS가 내놓은 정답은 두 가지다 — IRSA(IAM Roles for Service Accounts)와 Pod Identity. 둘 다 목표는 같다. 파드에 장기 자격증명 없이, 짧게 살았다 사라지는 임시 자격증명을 쥐어주는 것이다. 하지만 그 목표에 도달하는 방식은 근본부터 다르다.IRSA(2019) 는 OIDC 페더레이션에 기댄다. 클러스터마다 OIDC 프로바이더를 세우고, 서비스 어카운트에 역할 ARN을 어노테이션으로 붙..

AWS 2026.06.30

Jenkins CI/CD와 Slack을 연동한 APK QR 코드 자동 생성 봇 구축기

Overview모바일 앱 개발 환경에서 APK 빌드 후 테스터들에게 다운로드 링크를 전달하는 과정은 생각보다 번거롭다. 링크를 복사해서 Slack에 붙여넣고, 테스터들은 모바일에서 해당 링크를 직접 입력하거나 복사해야 하죠. 특히 긴 URL의 경우 실수로 잘못 입력할 가능성도 있다. 이러한 불편함을 해결하기 위해 APK 다운로드 링크를 QR 코드로 자동 변환하여 Slack 채널에 전송하는 봇을 개발했다. Jenkins 빌드가 완료되면 자동으로 QR 코드가 생성되어 Slack에 전송되고, 테스터들은 모바일로 QR 코드를 스캔하기만 하면 바로 APK를 다운로드할 수 있다. 이번 글에서는 Python Flask 기반의 Slack Bot을 구축하고 Kubernetes에 배포하는 전 과정을 공유하겠다. s..

IaC/CI CD Tool 2026.06.25

Kagent: Kubernetes에 AI Agent를 도입하기!

OverviewKubernetes 클러스터에서 장애가 발생했을 때, 우리는 어떻게 대응할까요?1. Slack 알림 확인2. kubectl로 파드 상태 확인3. 로그 확인4. Prometheus 메트릭 확인5. 에러 메시지를 ChatGPT에 복사/붙여넣기6. ChatGPT 제안 시도7. 또 다른 에러 발생8. 다시 ChatGPT로...9. 반복... 😫 이 과정이 익숙하신가요? 우리는 AI의 도움을 받지만, AI와 인프라 사이의 중간 다리 역할을 계속 해야 한다. AI는 우리 클러스터를 볼 수 없고, 우리는 AI가 제안한 것을 수동으로 실행해야 한다. Kagent는 이 문제를 해결한다. AI Agent가 Kubernetes 클러스터 내부에서 직접 실행되어, 스스로 문제를 진단하고, 해결책을 계획하고,..

Karpenter on EKS: Terraform과 Helm으로 구성하는 2계층 설정

Overview프로덕션 EKS 클러스터에서 Cluster Autoscaler를 Karpenter로 교체했다. 이 글에 실제로 어떻게 구성했는지를 그대로 정리했다.Cluster Autoscaler는 노드 그룹(node group) 단위로 동작한다. 인스턴스 타입을 고정한(혹은 몇 개로 제한한) Auto Scaling Group을 미리 만들어두면, 파드가 스케줄링되지 못할 때 CA가 ASG의 desired count를 올리고 새로 뜬 노드에 그 파드에 맞기를 기대하는 식이다. 그러다 보니 인스턴스 형태, taint, AZ에 따라 노드 그룹을 잘게 쪼개두게 되고, 그 그룹들을 균형 있게 유지하는 운영 부담까지 함께 떠안는다. Karpenter는 이 방식을 버린다. 펜딩 상태인 파드를 직접 들여다보고 실제 리..

AWS 2026.06.16
반응형