여러 팀이 공유하는 Grafana 인스턴스에서의 Git Sync

여러 팀이 공유하는 Grafana 인스턴스에서의 Git Sync

이 문서에서는 여러 팀이 하나의 Grafana 인스턴스를 공유할 때 Git Sync를 활용하는 방법을 안내합니다. 팀마다 하나씩 여러 Repository 리소스를 두어 각 팀이 Grafana를 공유하면서도 자체 대시보드를 독립적으로 관리할 수 있어요.

출처: 문서

본문

여러 Repository 리소스(팀당 하나씩)와 함께 단일 Grafana 인스턴스를 사용하세요. 각 팀은 Grafana를 공유하면서도 자체 대시보드를 관리해요.

이런 경우에 사용하세요

  • 팀 자율성(Team autonomy): 서로 다른 팀이 자체 대시보드를 독립적으로 관리해요.
  • 조직 구조(Organizational structure): 대시보드 구성이 팀 구조와 일치해요.
  • 리소스 효율성(Resource efficiency): 여러 팀이 Grafana 인프라를 공유해요.
  • 비용 최적화(Cost optimization): 팀 분리를 유지하면서 인프라 비용을 줄여요.
  • 협업(Collaboration): 팀은 자체 대시보드를 관리하면서도 서로의 대시보드를 볼 수 있어요.

아키텍처

┌─────────────────────────┐  ┌─────────────────────────┐
│  Platform Team Repo     │  │  Data Team Repo         │
│  platform-dashboards    │  │  data-dashboards        │
│                         │  │                         │
│  platform-dashboards/   │  │  data-dashboards/       │
│  └── grafana/           │  │  └── grafana/           │
│      ├── k8s.json       │  │      ├── pipeline.json  │
│      └── infra.json     │  │      └── analytics.json │
└─────────────────────────┘  └─────────────────────────┘
           ↕                            ↕
    Git Sync (grafana/)          Git Sync (grafana/)
           ↕                            ↕
        ┌──────────────────────────────────────┐
        │       Grafana Instance               │
        │                                      │
        │  Repository 1:                       │
        │  - repo: platform-dashboards         │
        │  → Creates "platform-dashboards"     │
        │                                      │
        │  Repository 2:                       │
        │  - repo: data-dashboards             │
        │  → Creates "data-dashboards"         │
        └──────────────────────────────────────┘

리포지토리 구조

Git(별도 리포지토리)에서:

플랫폼 팀 리포지토리:

your-org/platform-dashboards
└── grafana/
    ├── dashboard-k8s.json
    └── dashboard-infra.json

데이터 팀 리포지토리:

your-org/data-dashboards
└── grafana/
    ├── dashboard-pipeline.json
    └── dashboard-analytics.json

Grafana 대시보드 보기에서:

Dashboards
├── 📁 platform-dashboards/
│   ├── Kubernetes Dashboard
│   └── Infrastructure Dashboard
└── 📁 data-dashboards/
    ├── Pipeline Dashboard
    └── Analytics Dashboard
  • Repository 리소스당 하나씩, 두 개의 별도 폴더가 생성돼요.
  • 폴더 이름은 리포지토리 이름에서 파생돼요.
  • 각 팀은 자체 리포지토리를 완전히 제어해요.
  • 팀은 자기 리포지토리의 권한, 브랜치, 워크플로를 독립적으로 관리할 수 있어요.
  • 모든 팀은 Grafana에서 서로의 대시보드를 볼 수 있지만 자기 것만 관리해요.

구성 매개변수

플랫폼 팀 리포지토리:

  • Repository: your-org/platform-dashboards
  • Branch: main
  • Path: grafana/

데이터 팀 리포지토리:

  • Repository: your-org/data-dashboards
  • Branch: main
  • Path: grafana/

동작 방식

  1. 각 팀은 완전한 자율성을 위해 자체 Git 리포지토리를 가져요.
  2. Grafana의 각 리포지토리 리소스는 별도의 폴더를 만들어요.
  3. 플랫폼 팀 대시보드는 your-org/platform-dashboards 리포지토리에서 동기화돼요.
  4. 데이터 팀 대시보드는 your-org/data-dashboards 리포지토리에서 동기화돼요.
  5. 팀은 자체 리포지토리 설정, 접근 제어, 워크플로를 독립적으로 관리할 수 있어요.
  6. 모든 팀은 Grafana에서 서로의 대시보드를 볼 수 있지만 자기 것만 편집해요.

더 많은 팀으로 확장하기

추가 팀을 더하는 것은 간단해요. 세 번째 팀을 위해 새 리포지토리를 만들고 다음과 같이 구성하세요:

  • Repository: your-org/security-dashboards
  • Branch: main
  • Path: grafana/

이렇게 하면 같은 Grafana 인스턴스에 새 "security-dashboards" 폴더가 만들어져요.

대안: 서로 다른 경로를 가진 공유 리포지토리

단일 리포지토리를 공유하는 것을 선호하는 팀은 서로 다른 경로를 사용해 팀 대시보드를 분리하세요:

Git에서:

your-org/grafana-manifests
├── team-platform/
│   ├── dashboard-k8s.json
│   └── dashboard-infra.json
└── team-data/
    ├── dashboard-pipeline.json
    └── dashboard-analytics.json

구성:

플랫폼 팀:

  • Repository: your-org/grafana-manifests
  • Branch: main
  • Path: team-platform/

데이터 팀:

  • Repository: your-org/grafana-manifests
  • Branch: main
  • Path: team-data/

이 접근 방식은 더 간단한 리포지토리 관리를 제공하지만 팀 간 격리(격리는)는 덜해요.

대안: 팀당 다른 브랜치

공유 리포지토리에서 자체 브랜치를 원하는 팀을 위해:

플랫폼 팀:

  • Repository: your-org/grafana-manifests
  • Branch: team-platform
  • Path: grafana/

데이터 팀:

  • Repository: your-org/grafana-manifests
  • Branch: team-data
  • Path: grafana/

이렇게 하면 팀이 같은 리포지토리를 공유하면서도 협업을 위해 Git 브랜치 워크플로를 사용할 수 있어요.

더 알아보기