Helm을 이용한 프로메테우스 배포 시, 멀티 테넌트를 위한 맞춤형 설정 방식?

쿠버네티스 클러스터에서 여러 프로젝트 팀이 네임스페이스를 분리하여 사용하는 멀티테넌트 환경을 운영하고 있습니다. 프로메테우스를 사용하여 모니터링 시스템을 구축하려고 합니다.

`GitHub - prometheus-community/helm-charts: Prometheus community Helm charts 에 있는 Helm 차트를 사용해 기본 설치는 완료했으나, 각 테넌트(팀)별로 메트릭을 격리하고, 특정 테넌트의 서비스만 선택적으로 수집하도록 설정을 변경하고 싶습니다.

values.yaml 파일을 어떻게 수정해야 각 테넌트의 필요에 맞는 독립적인 모니터링 환경을 효율적으로 구성할 수 있을까요?

1 Like

멀티테넌트 환경인 경우 Thanos를 통한 구성을 하지 않을까요?

1 Like

[CloudBro AI Bot Response]
쿠버네티스에서 Helm을 이용해 프로메테우스를 멀티테넌트 환경에 맞게 배포하려면 몇 가지 주요 설정 포인트가 있습니다.

  1. 네임스페이스 분리

  2. 가장 기본적으로 각 테넌트(팀)별로 쿠버네티스 네임스페이스를 분리하고, 프로메테우스 인스턴스를 네임스페이스별로 띄우는 방식이 있습니다. Helm 차트의 namespace 값을 다르게 지정해 여러 인스턴스를 배포하면, 자연스럽게 메트릭이 격리됩니다.

  3. ServiceMonitor/PodMonitor Selector 활용

  4. 프로메테우스 Helm 차트에서 serviceMonitorSelectorpodMonitorSelector 값을 설정하여, 각 테넌트별로 모니터링할 서비스나 파드만 선택적으로 수집할 수 있습니다. 예를 들어, 팀A의 서비스에는 team: teamA 라벨을 붙이고, 프로메테우스의 serviceMonitorSelector에 이 라벨을 지정하면 해당 팀의 서비스만 수집합니다.

    serviceMonitorSelector:
      matchLabels:
        team: teamA
    
  5. RBAC 및 접근제어

  6. 각 테넌트별로 프로메테우스 UI, Alertmanager 등 접근 권한을 제한하려면, Ingress, RBAC, 인증/인가(예: OIDC) 설정을 추가해야 합니다.

  7. 멀티테넌시를 위한 Thanos/VMWare Tanzu 등 추가 솔루션

  8. 프로메테우스 자체만으로는 완벽한 멀티테넌시 지원이 어렵기 때문에, Thanos, Cortex, Mimir 등 멀티테넌시를 지원하는 오픈소스 솔루션을 추가로 도입하는 경우가 많습니다. 이 경우, 각 테넌트별로 쿼리, 저장소, 권한관리 등을 세분화할 수 있습니다.
    정리
    Helm 차트 레벨에서는 네임스페이스 분리, Selector 설정, RBAC 조합으로 1차적인 멀티테넌시 구성이 가능하고, 복잡한 요구사항이 있다면 Thanos 같은 솔루션을 병행하는 것이 일반적입니다.
    공식 Helm 차트 문서(prometheus-community/helm-charts)의 values.yaml 예시와 CNCF 관련 멀티테넌시 사례도 참고하시면 좋겠습니다.

추가로 궁금한 점 있으시면 언제든 질문해 주세요!

@jackfrost 님! thanos를 이용해서 한번 내용 볼께요. 답변 감사합니다. :slight_smile:

1 Like