
Keycloak 개념, Helm으로 배포하기
Grafana, ArgoCD 등의 다양한 서비스를 사용하다 보면, 각각의 서비스마다 인증 및 권한 관리를 별도로 구현해야 하는 번거로움이 있습니다. 이떄 Keycloak을 사용하여 SSO(Single Sign On)를 구현하면, 각 서비스마다 인증 및 권한 관리를 효율적으로 관리할 수 있습니다. Keycloak은 Rad Hat이 개발한 오픈소스 Id...
Grafana, ArgoCD 등의 다양한 서비스를 사용하다 보면, 각각의 서비스마다 인증 및 권한 관리를 별도로 구현해야 하는 번거로움이 있습니다. 이떄 Keycloak을 사용하여 SSO(Single Sign On)를 구현하면, 각 서비스마다 인증 및 권한 관리를 효율적으로 관리할 수 있습니다. Keycloak은 Rad Hat이 개발한 오픈소스 Id...
Cloud 환경에서 Terraform을 사용하여 인프라를 관리하다 보면, 기존에 수동으로 생성한 리소스를 Terraform 코드로 관리해야 하는 경우가 있습니다. 이때 terraform import 명령어를 사용하면 기존 리소스를 Terraform 상태 파일(.tfstate)에 추가할 수 있습니다. 이번 포스팅에서는 terraform import 의...
Terraform에서 인프라 코드를 작성하다 보면 간단한 리소스 정의는 HCL(HashiCorp Configuration Language)로도 충분히 표현할 수 있습니다. 하지만 실제 운영 환경에서는 배포 초기에 실행해야 하는 스크립트나, 규모가 큰 애플리케이션 설정 파일 등을 다루어야 할 때가 많습니다. HCL 내부에 길고 복잡한 내용 설정들을 넣는...
Helm은 Kubernetes의 패키지 매니저로, 애플리케이션의 배포 및 관리를 간편하게 해주는 도구입니다. Kubernetes의 리소스를 정의하는 Manifest 파일을 템플릿화하여 재사용성과 유지보수성을 높이는 데 도움을 줍니다. 일반적으로 패키지 매니저를 사용하지 않고 Dev, Stage, Prod 등의 다양한 환경에서 Kubernetes Ma...
Kubernetes 환경에서 Helm을 Package Manager로 사용해 애플리케이션을 배포하는 과정에서 종종 데이터베이스 초기화, 스키마 마이그레이션, 캐시 무효화 등의 이유로 특정 리소스가 먼저 생성되어야 하는 경우를 마주할 때가 있습니다. 이때 Helm Hook을 사용하면 특정 이벤트(예: pre-install, post-install, p...
최근 SSD를 사용하게 되면서 기본 HDD의 용량을 어떻게 사용할 수 있을까? 라는 고민을 하던 중 Minio를 접하게 되었습니다. Minio는 단순히 오브젝트 스토리지(Object Storage)로 운영하는 방법뿐만 아니라, Kubernetes의 PV(퍼시스턴트 볼륨, PersistentVolume)로도 활용 가능합니다. 포스트를 2개로 나눠 이...
일반적으로 쿠버네티스 환경에서 애플리케이션을 노출할 때, Ingress Controller를 활용해 HTTP/HTTPS 트래픽을 라우팅합니다. 그런데 간단한 테스트나 내부용 서비스처럼 전체 인증/인가 시스템을 구축하기엔 오버지만, 그래도 외부에 바로 열고 싶지 않은 경우가 있습니다. 예컨대: 사내 POC 서비스나 개발용 애플리케이션을 일단 인...
Graceful Shutdown은 프로세스(애플리케이션)가 종료 요청을 받았을 때(예: SIGTERM), 바로 강제 종료되지 않고 일정 시간을 두어 정리 작업(예: DB Connection, Message Queue)을 수행한 뒤 종료되는 방식입니다. Graceful Shutdown이 이루어지지 않고 Ungraceful Shutdown이 이루어지게 되...
2024년 11월부터 12월까지 약 2개월간 Remember Me 프로젝트를 진행했습니다. 해당 서비스는 AWS Lambda와 Amazon API Gateway를 기반으로 동작하는 서버리스(Serverless) 환경에서, 사용자가 단어를 외우고 관리할 수 있는 웹 애플리케이션입니다. 인프라 팀원으로서 HCP Terraform(Terraform Clo...
컨테이너 기반 애플리케이션을 Kubernetes 환경에서 운영하다 보면, kubectl get pods 명령어를 통해 Pod의 상태가 Running임을 확인했음에도 불구하고 애플리케이션에 접속했을 때 에러가 발생하는 상황을 종종 마주하게 됩니다. Pod는 실행 중이지만 내부 애플리케이션은 아직 서비스 준비를 마치지 못했거나, 초기화 과정(예: 데이터베...