DevOps

· DevOps
최근에 쿠버네티스 클러스터 마이그레이션을 진행했다. 클러스터 마이그레이션을 진행하기 이전에는 rancher 기반으로 클러스터를 설치하고 관리했었으나, 새롭게 옮긴 클러스터는 k3s를 직접 설치해서 사용하고 있었기에, 보다 간소화된 기능으로 쿠버네티스 클러스터 모니터링 대시보드가 있으면 좋겠다는 생각을 하곤 했다. 그렇게 찾아보게 된 것이 headlamp라는 오픈소스이다. 쿠버네티스 클러스터를 모니터링하는 오픈소스 솔루션이며, 나쁘지 않은 UI를 가지고 있었기에 본격적으로 설치하기 시작했다.[headlamp] : https://headlamp.dev/ HeadlampDesktop and Web It can be run as a web app, desktop app, or both.headlamp.dev 다..
· DevOps
시대생팀에서 쿠버네티스 클러스터를 옮기는 일을 하면서 새롭게 인프라를 세팅해야 하는 일이 있었다. Grafana나 Kiali 등을 온프레미즈에 다시 띄우면서 새롭게 세팅을 해야 했고, 우리의 인증을 담당하는 keycloak은 SOPF를 대비하기 위해서 온프레미즈에서 클라우드로 이전했기 때문에 세팅을 다시 진행해줘야 하는 상황이었다. 이 과정에서 여러 어려움을 겪었는데, Keycloak을 세팅하는 방법이 생각보다 복잡하기도 했고, 내가 기존에 알고 있던 인증 시스템 체계에 대한 지식이 생각보다 얕아서 좀 더 공부해야하기도 했다. 이번 포스팅에서는 인증 시스템의 키워드(oidc, SSO, OAuth etc)에 대해서 다루고, Keycloak이라는 솔루션에 대해서 소개하려고 한다. 로그인에 대하여인증(Aut..
예전에 동료와 함께 구축했던 온프레미즈 쿠버네티스 클러스터 기반에서 운영되고 있는 서비스가 있었는데, 클러스터의 특정 피쳐들을 안쓰게 되면서 자연스럽게 방치되다가, 최근에 온프레미즈에서 다른 온프레미즈로 마이그레이션을 하게 되는 일을 돕게 되면서 쿠버네티스 세팅을 다시 하게 됐다. 그 과정에서 원래 사용하고 있던 nginx-ingress 대신에 istio gateway를 사용해서 구축하기로 했다. 이유는 ingress-NGINX가 2026년 3월까지 best-effort 유지보수 후 인퇴(리타이어) 예정이라는 점이 컸고, 이후에는 릴리즈/버그픽스/보안패치가 더 이상 제공되지 않기 때문이다. 또한 Istio가 Kubernetes Gateway API를 지원하고, 장기적으로 트래픽 매니지먼트의 기본 API로..
클라우드나 온프레미즈 등 여기저기 흩어져있는 서버에 연결해야하는 경우에 VPN을 쓰게 된다. 다양한 툴들이 있지만 개인적으로 최근에 접하면서 가장 좋아하게 된 것은 tailscale이라는 VPN이었다. 간편한 설정을 제공하면서 wireGuard 기반으로 돌아가는 VPN으로 관리 등 편한 부분들이 많다. 개인적으로 온프레미즈 기반의 쿠버네티스를 운영해야하는 상황에서 외부에서도 작업할 수 있게, 또한 보안상의 문제로 tailscale을 직접 사용하고 있는데 꽤 좋았다. tailscale에 대해서 레퍼런스를 확인할 때, 일반적인 VPN과는 다르게 WireGuard 기반으로 동작한다는 내용이 있었는데, 나중에 한 번 VPN의 비교를 다뤄보면 좋을 것 같다는 생각이 들었다. 이번 포스팅에서는 관련된 내용과 함께 ..
쿠버네티스에 대해서 공부하다보면 매니페스트 중에 네트워크 연결을 도와주는 Service라는 종류가 있다. Service 매니페스트는 크게 3가지로, 내부에서 IP를 통해서 연결할 수 있게 해주는 ClusterIP와 NodePort 그리고 LoadBalancer 이렇게 3가지가 있다. 클라우드에서 제공하는 쿠버네티스를 사용하게 되면, LoadBalancer 타입의 Service를 사용할 때 GCP나 AWS같은 IaaS 플랫폼에서 제공하는 로드 밸런서를 사용한다. 하지만 아무것도 없는 온프레미스에서 로드 밸런서 타입을 사용하면 계속 Pending으로 뜨게 된다. 이 때 metalLB와 같은 로드밸런서를 통해서 IP 대역을 할당받아야 한다. 이러한 아무것도 없는 온프레미스인 베어메탈에서 로드밸런서 타입의 서비..
아주 예전에, 학교 공지사항의 내용을 스크래핑에서 데이터베이스에 저장하고, 새로운 공지사항이 올라온 경우 사용자에게 알림을 보내는 기능을 개발한 경험이 있다. 이에 대한 내용도 포스팅을 해두었으나, 최근에 좀 더 자세하게 해당 내용을 써달라는 요청을 받기도 했고, 고생을 많이 했던 경험이 있기 때문에 보다 자세하게 해당 내용과 다양한 트러블슈팅에 대한 내용도 담으면 좋을 것 같다는 생각을 하게 되어, 좀 더 구체적으로 작성해보려고 한다. 시대생팀에서 2023년에 앱을 리빌드 하는 과정에 앞서, 기획팀원분들은 나서서 유저 리서치를 진행했습니다. 함께 유저 리서치에 참여하여 실제 사용자들은 어떤 기능을 유용하게 사용하고 있는지 함께 이야기를 나눈 적이 있습니다. 그 당시 새롭게 학교 공지사항이 올라왔을 때..
최근에 새로운 프로덕트에 백엔드 포지션으로 붙게 되면서 기존 프로덕트의 세팅을 해야 하는 일이 있었다. datadog를 통해서 로그 세팅부터 트레이스 세팅까지 완성을 해두었고, 로그 포맷을 조금 수정하고 있던 도중에 문득 관측성의 세 가지 축이란 키워드가 떠올랐다. 원래는 손이 많이 가던 프로덕트는 아니었으나, 나를 포함한 다른 개발자들이 프로덕트에 붙기도 하였고, 앞으로 다양한 서비스를 쌓아올릴 예정이라 정비를 할 필요가 있었다. 간단한 프론트엔드쪽 리펙토링과 함께 백엔드에서는 로그 시스템을 손보고 있었다. 백엔드 시스템의 Observability를 챙겨주는 과정에서 로그라는 것은 정확히 어떻게 찍는 건지. 그런 것들을 실무적으로 고민해 본 적이 없었다. 그래서 그런 것들을 찾아보는 과정에서 이 관측성..
· DevOps/AWS
최근에 직접 예약 인스턴스와 세이빙 플랜을 비교하면서 MSP의 계약건을 진행해야하는 일이 있었다. 관련해서 예약 인스턴스와 세이빙 플랜이라는 것이 있다는 것은 알고 있었고, 개인적으로는 예약 인스턴스가 가능한 경우에는 예약 인스턴스, 그 외에 Fargate로 사용하는 부분은 세이빙 플랜을 쓰면 되겠지 하는 단순한 생각이 있었지만, 좀 더 레퍼런스를 찾아보면서 해당 내용을 명확히 정리하게 되었다. 정리하는 과정에서 RI(Reserved Instance)와 SP(Saving Plan)의 정의나 어떤 상황에서 쓰는지 뿐만 아니라, MSP 등 AWS를 사용할 때 있어서 꼭 알아야 하는 비용 관련된 부분은 정리했다. 이번 포스팅에서는 AWS를 사용하는 데 쓰는 비용을 아끼는 여러 방법들과 함께, 보통 이러한 AW..
marsboy
'DevOps' 카테고리의 글 목록