여러 팀이 공유하는 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/
동작 방식
- 각 팀은 완전한 자율성을 위해 자체 Git 리포지토리를 가져요.
- Grafana의 각 리포지토리 리소스는 별도의 폴더를 만들어요.
- 플랫폼 팀 대시보드는
your-org/platform-dashboards리포지토리에서 동기화돼요. - 데이터 팀 대시보드는
your-org/data-dashboards리포지토리에서 동기화돼요. - 팀은 자체 리포지토리 설정, 접근 제어, 워크플로를 독립적으로 관리할 수 있어요.
- 모든 팀은 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 브랜치 워크플로를 사용할 수 있어요.