반응형

전체 글 398

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

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

AWS 00:00:02

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

Kubernetes OOMKilled 대응 전략: 무작정 메모리만 늘리지 말자!

OverviewKubernetes를 운영하다 보면 누구나 한 번쯤 마주하는 상황이 있다. 바로 `OOMKilled` (Out of Memory Killed) 에러이다. 파드가 설정된 메모리 제한(Limit)을 초과하여 강제로 종료되는 이 현상은, 많은 DevOps 엔지니어들에게 골치 아픈 문제이다. 대부분의 팀이 이 문제를 어떻게 해결할까요? "일단 메모리를 2배로 늘리고 다시 배포해보자"는 식의 주먹구구식 대응이 흔하다. 하지만 이는 근본적인 해결책이 아니며, 리소스 낭비와 비용 증가로 이어진다. 이 글에서는 OOMKilled 문제에 대한 체계적인 접근 방법과 실무에서 바로 적용할 수 있는 해결 전략을 다룬다. 단순히 리소스를 늘리는 것이 아니라, 왜 발생했는지 파악하고, 적정 리소스를 산정하며, ..

Claude Code의 Command, Skills, Agents 그리고 Plugin 완벽 정리

OverviewClaude Code를 쓰다 보면 `/command`, Skill, Subagent, Plugin 이 네 가지 개념이 계속 등장한다. 이름도 비슷하고 하는 일도 겹쳐 보여서 처음엔 구분이 잘 안 된다. 특히 슬래시 커맨드와 스킬은 최근 통합되면서 더 헷갈린다. 이 글에서는 다음을 정리한다.Command, Skills, Agents가 각각 무엇이고 어떻게 다른가같은 이름이 겹칠 때 어떤 게 우선되는가 (우선순위 규칙)Plugin으로 설치하면 기존 Skill과 어떻게 동작하는가 결론부터 말하면 이렇다. Command는 호출 단축키, Skill은 번들 가능한 프롬프트 능력, Agent는 격리된 컨텍스트를 가진 별도 인스턴스, Plugin은 이것들을 묶어서 배포하는 패키지다. 그리고 Plugin..

AI/AI Tool 2026.06.04
반응형