Grafana – популярная платформа с открытым исходным кодом для визуализации и анализа данных. При развертывании Grafana в кластере Kubernetes вы можете использовать собственный путь, например «/dashboard», вместо корневого пути по умолчанию («/»). В этой статье мы рассмотрим различные методы достижения такой настройки, включая настройку развертывания, входной трафик и настройку обратного прокси-сервера.
Метод 1: Конфигурация развертывания
Один из способов обслуживания Grafana по настраиваемому пути — корректировка конфигурации развертывания. Вы можете изменить раздел command
спецификации контейнера в манифесте развертывания Grafana, включив в него флаг --web.route-prefix
, например:
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
spec:
template:
spec:
containers:
- name: grafana
image: grafana/grafana:latest
args:
- "--web.route-prefix=/dashboard"
Метод 2: Ingress
Если вы используете контроллер Ingress в своем кластере Kubernetes, вы можете настроить его для маршрутизации трафика в Grafana по настраиваемому пути. Вот пример:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-ingress
spec:
rules:
- http:
paths:
- path: /dashboard
pathType: Prefix
backend:
service:
name: grafana-service
port:
number: 80
Метод 3: обратный прокси
Другой подход — использовать обратный прокси-сервер, например Nginx или Traefik, для управления маршрутизацией пользовательского пути. Сначала разверните обратный прокси-сервер как отдельный сервис в своем кластере, а затем настройте его для пересылки запросов в Grafana. Вот пример использования Nginx:
-
Развертывание Nginx:
apiVersion: v1 kind: Service metadata: name: nginx spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
-
Настройте Nginx для прокси-запросов к Grafana:
Добавьте следующий блок местоположения в конфигурацию Nginx:
location /dashboard {
proxy_pass http://grafana-service:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}