반응형

전체 글 406

S3와 AWS SSM을 이용한 CI → EFS 키리스 파일 배포

OverviewCI 파이프라인은 결국 어딘가로 파일을 전달하는 과정을 거친다. 클라이언트에 노출되는 정적 에셋이라면 보통 CDN으로 바로 전송하면 되지만, 게임의 마스터 데이터 JSON이나 버전 매니페스트처럼 백엔드 서버가 부팅 시 읽어야 하는 설정 파일은 상황이 다르다. 이런 파일들은 대개 공유 EFS 마운트에 위치하는데, CI 러너 환경에서는 해당 볼륨으로 직접 접근할 수 있는 네트워크 경로가 구성되어 있지 않은 경우가 많다. 전통적인 해결책은 EFS 볼륨이 마운트된 서버(인스턴스)에 SSH를 열고 scp나 rsync로 파일을 전송하는 방식이었다. 하지만 이 구조는 CI 러너에 SSH 개인키를 보관해야 하고, 대상 호스트 주소가 하드코딩되어야 하며, 주기적으로 교체되지 않는 장기(Long-term) ..

AWS 00:00:52

Unity MCP Server를 Kubernetes에 배포하기

OverviewMCP for Unity는 AI 어시스턴트(Claude, Cursor, VS Code 등)와 Unity Editor를 Model Context Protocol(MCP)을 통해 연결하는 오픈소스 브릿지 서버이다. 기본적으로 로컬(localhost:8080)에서 동작하지만, Kubernetes에 배포하면 팀원 전체가 하나의 MCP 서버를 공유하고, Unity Editor 인스턴스를 중앙에서 관리할 수 있다. 이 글에서는 Unity MCP Server를 Docker 이미지로 빌드하고, Harbor 레지스트리에 Push한 뒤, Kubernetes 클러스터에 배포하는 전체 과정을 다룬다. Architecture┌─────────────────┐ HTTP/SSE ┌───..

GitLab 19.0 업그레이드: 번들 Mattermost 제거 에러 차단 해결 가이드

OverviewGitLab 19.0 버전부터는 Linux 패키지(Omnibus) 내부에 포함되어 있던 번들 Mattermost가 완전히 제거되었다. 이로 인해 기존에 Mattermost를 사용했던 인스턴스뿐만 아니라, 단순히 설정값만 생성되어 있던 인스턴스조차 GitLab 18.11.x에서 19.x로 업그레이드할 때 사전 설치(Pre-install) 단계에서 `mattermost[...] keys are no longer supported` 식의 지원 중단(Deprecation) 에러와 함께 업그레이드가 중단되는 현상이 발생한다. 가장 난감한 점은 `/etc/gitlab/gitlab.rb` 파일에서 모든 `mattermost` 관련 주석을 해제하거나 삭제한 뒤 다시 시도해도 동일한 에러가 계속해서 발생한..

IaC/CI CD Tool 2026.07.23

preStop으로 끝이 아니다 — Graceful Shutdown 타이밍을 측정하고 검증하기

Overview1편(EKS 무중단 배포의 4가지 값)에서 preStop · terminationGracePeriodSeconds · ALB deregistration_delay 세 시간의 관계를 다뤘다. 그런데 그 글을 다시 읽어보면 한 가지 질문이 남는다. "preStop 35초, grace 60초, dereg 30초 — 이 숫자들은 대체 어떻게 정한 것인가? 그리고 정한 값이 실제로 그렇게 도는지는 어떻게 확인하는가?" 1편이 "세 값이 왜 이런 부등식을 이뤄야 하는가"였다면, 이 글은 그 숫자의 근거(배포 전 측정) 와 검증(배포 후 확인) 을 다룬다. 감으로 35·60·30을 박는 것과, 측정해서 박는 것은 완전히 다른 일이다. 대상은 1편과 동일하게 라이브 트래픽을 받는 게임 서버 파드(이하 ..

Elasticsearch index.mapping.total_fields.limit 초과 에러 해결 가이드

OverviewNode.js 로깅 라이브러리를 Winston에서 Pino로 마이그레이션한 후, Elasticsearch에서 `Limit of total fields [1000] has been exceeded` 에러가 발생하는 경우가 있다. 이는 Pino가 기본적으로 req 객체(헤더, 쿼리 파라미터, 메서드 등)를 자동으로 직렬화하여 로그에 포함시키기 때문이다. 이 글에서는 해당 에러의 원인을 분석하고, Filebeat에서 불필요한 필드를 제거하는 방법과 Elasticsearch의 `total_fields.limit` 설정을 조정하는 방법을 다룬다. 1. 문제 상황 1.1 에러 메시지Pino 기반 로그를 Filebeat → Logstash → Elasticsearch 파이프라인으로 수집하던 중..

Trouble Shooting 2026.07.20

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 2026.07.16

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
반응형