본문 바로가기

Devops39

[Terraform] Terraform이란 Terraform과 Iac  최근의 Infra Engineer나 Devops Engineer 직무를 보면 하나같이 필요로 하는 기술 스택이 존재한다. 바로 Iac(Infrastructure as code)이다.   과거에는 서버를 구매해서 OS를 설치하고 내부 환경을 세팅하는 등의 수작업을 일일이 했다면, 현재는 다르다. Private Cloud와 Public Cloud를 막론하고 Iac를 활용하여 코드기반의 관리를 하는 경우가 많다.   회사의 규모가 일정 수준 이상이 된다면, 수십 수백 대 이상의 서버를 관리하는 상황이 비일비재하기 때문에, 이를 하나하나 관리해 준다면 관리에 필요한 인력과 비용이 상당히 커질 것이다.   하지만 코드로 관리를 하면서 현재 서버의 상태에 대한 명세를 코드로 쉽게 확인하.. 2024. 11. 26.
[Kubernetes] 한 노드에 동일한 파드 스케줄링 제한 개요 쿠버네티스 클러스터 환경에서 운영을 할 때에는, 생각하지 못한 다양한 상황을 많이 접할 수 있다.  그중 하나는 Deployments의 파드가 재 스케줄될 때, 상황에 따라 하나의 노드에 같은 파드가 두 개 이상 스케줄될 수 있다는 것이다.  이것이 문제가 되는 이유는 Deployments의 Replicas가 2인 경우 하나의 노드에 이 파드가 2개가 생성된다면, 단일 장애 지점(SPOF)이 되어버린다는 것이다.  가용성을 위하여 파드를 2개로 설정을 했음에도, 노드에 장애가 발생하면 가용성을 보장받지 못하는 상황이 되어버린다는 것이다.  물론 쿠버네티스에는, 이를 방지하기 위한 설정이 존재한다. 이제 해당 옵션을 알아볼 것이다.  아래는 replicas가 2인 nginx라는 deployment의 .. 2024. 11. 24.
[Keycloak] Keycloak이란 Keycloak Keycloak은 RedHat에서 개발한 오픈소스 IAM(Identity and Access Management) 솔루션이다.   현대 애플리케이션에서 필수적인 사용자 인증과 접근 제어를 손쉽게 구현할 수 있게 해주는 도구이며, SSO(Single Sign On) 지원, 다양한 프로토콜 활용(Oauth, OIDC 및 SAML 등) 및 용이한 소셜 로그인 통합과 같은 장점으로 많은 기업에서 채택하여 사용하고 있다.   간단한 예시로는 대시보드 오픈소스(Kibana, Grafana 등)를 사용하면, 사용하는 오픈소스가 늘어나면서 더불어 사용자까지도 늘어나게 된다. 이는 사용자 관리에 있어서 관리자의 부하가 점점 늘어날 수밖에 없다. 그러할 때 Keycloak을 활용하면, 사용자 통합 관리가 .. 2024. 11. 21.
[ArgoCD] App of Apps 패턴 ArgoCD와 관련된 글을 보다 보면 App of Apps 패턴이라는 용어를 심심치 않게 접할 수 있다.    ArgoCD의 Reference에 의하면, 선언적으로 정의된 다수의 애플리케이션으로 구성된 단일 애플리케이션을 가진 패턴을 의미한다.   대규모 마이크로서비스 배포 환경의 복잡성을 효과적으로 관리하기 위해 등장한 것이라고 할 수 있다.   App of Apps 패턴을 활용하면 중앙 집중적 관리를 기반으로 멀티 클러스터의 다양한 환경에서 배포를 손쉽게 할 수 있다는 장점을 가지고 있다. 주요 개념  App of Apps에서는 가장 중요한 개념이 3가지 존재한다.  Root Application: 다른 모든 애플리케이션을 관리하는 최상위 애플리케이션Child Applications: Root App.. 2024. 11. 20.
[Linux] 네트워크 사용량 모니터링 리눅스에서는 실시간으로 네트워크의 송수신량을 확인할 수 있는 많은 툴들이 존재한다. 이번 글에서는 그 툴들과 용도에 대하여 알아볼 것이다.1. nethogs  설치# Ubuntu 기준의 apt 설치sudo apt install nethogs   실행sudo nethogs  설치를 하고 실행을 한다면 아래와 같이 프로세스 및 네트워크 인터페이스 별로 해당 네트워크에 오가는 데이터 양을 확인할 수 있다.   2. iftop 설치 # Ubuntu 기준의 apt 설치sudo apt install iftop   실행sudo iftop  iftop은 nethogs와 다르게 네트워크의 출발지와 목적지의 구분과 해당 데이터의 크기에 좀 더 직관적인 UI를 가지고 있다. 아래 사진을 참고하자면, 데이터의 크기를 가로 막.. 2024. 11. 17.
[Linux] Tcpdump로 네트워크 인터페이스 패킷 확인 리눅스 환경에서 특정 네트워크 인터페이스에 송수신되는 패킷을 확인하고자 할 때 아주 편리한 툴이 있다. 바로 Tcpdump이다. 이를 활용하여 특정 서버에 네트워크 관련 문제가 발생했을 때, 패킷이 정확하게 서버로 전송이 오는지를 확인할 수 있다.  ※ Tcpdump는 기본적으로 Root 권한이 필요로 한다.   다음은 쿠버네티스 클러스터에서 생성된 파드의 네트워크 인터페이스를 tcpdump로 확인하여 해당 파드에 패킷이 전송되는 것을 확인해 볼 것이다.파드 생성 # nginx 수신 파드 생성kubectl run receive-nginx --image=nginx:latest  파드를 생성해 주고, 배정된 IP를 확인한다.  파드가 생성된 노드에 접속하여, 해당 IP로 라우팅 되어 있는 네트워크 인터페이스.. 2024. 11. 16.