Управление папками, источниками данных и панелями с помощью Grafana Operator

В этом руководстве показано, как управлять источниками данных, папками и панелями с помощью Grafana Operator. Вы будете создавать эти ресурсы декларативно, используя пользовательские ресурсы Kubernetes.

Предварительные требования

Перед началом убедитесь, что у вас есть следующее:

  • Существующий стек Grafana Cloud
  • Grafana Operator, установленный в вашем кластере, как показано в разделе Grafana Operator Installation

Настройка Grafana Operator

Grafana Operator позволяет аутентифицироваться в экземпляре Grafana с помощью пользовательского ресурса (CR) Grafana.

Создание секрета с токеном API Grafana

Сохраните токен API Grafana в секрете со следующим содержимым в файле с именем grafana-token.yml:

YAML
apiVersion: v1
kind: Secret
metadata:
  name: grafana-cloud-credentials
  namespace: '<GRAFANA_OPERATOR_NAMESPACE>'
stringData:
  GRAFANA_CLOUD_INSTANCE_TOKEN: '<GRAFANA_API_KEY>'
type: Opaque

Замените заполнители своими значениями:

  • <GRAFANA_API_KEY>: ключ API вашего экземпляра Grafana. Чтобы создать ключ API, обратитесь к Grafana API Key Documentation
  • <GRAFANA_OPERATOR_NAMESPACE>: пространство имён, в котором развёрнут grafana-operator в вашем кластере Kubernetes

Настройка пользовательского ресурса Grafana

Настройте подключение к вашему экземпляру Grafana Cloud. Создайте файл с именем grafana-cloud.yml:

YAML
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
  name: '<GRAFANA_CLOUD_STACK_NAME>'
  namespace: '<GRAFANA_OPERATOR_NAMESPACE>'
  labels:
    dashboards: '<GRAFANA_CLOUD_STACK_NAME>'
spec:
  external:
    url: https://<GRAFANA_CLOUD_STACK_NAME>.grafana.net/
    apiKey:
      name: grafana-cloud-credentials
      key: GRAFANA_CLOUD_INSTANCE_TOKEN

Замените заполнители своими значениями:

  • <GRAFANA_CLOUD_STACK_NAME>: имя вашего стека Grafana Cloud
  • <GRAFANA_OPERATOR_NAMESPACE>: пространство имён, в котором развёрнут grafana-operator в вашем кластере Kubernetes

Добавление источника данных

Note

В этом примере используется источник данных Prometheus. Учтите, что требуемые аргументы зависят от выбранного вами источника данных.

Создание конфигурации источника данных

Создайте и сохраните новый YAML-файл datasource.yml с конфигурацией вашего источника данных:

YAML
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDatasource
metadata:
  name: '<DATA_SOURCE_NAME>'
  namespace: '<GRAFANA_OPERATOR_NAMESPACE>'
spec:
  instanceSelector:
    matchLabels:
      dashboards: '<GRAFANA_CLOUD_STACK_NAME>'
  allowCrossNamespaceImport: true
  datasource:
    access: proxy
    database: prometheus
    jsonData:
      timeInterval: 5s
      tlsSkipVerify: true
    name: '<DATA_SOURCE_NAME>'
    type: prometheus
    url: '<DATA_SOURCE_URL>'

Замените заполнители своими значениями:

  • <DATA_SOURCE_NAME>: имя источника данных, который будет добавлен в Grafana
  • <DATA_SOURCE_URL>: URL вашего источника данных
  • <GRAFANA_CLOUD_STACK_NAME>: имя вашего стека Grafana Cloud
  • <GRAFANA_OPERATOR_NAMESPACE>: пространство имён, в котором развёрнут grafana-operator в вашем кластере Kubernetes

Добавление панели в папку

Используйте следующее определение YAML, чтобы создать простую панель в экземпляре Grafana внутри пользовательской папки. Если папка, указанная в поле spec.folder, не существует, оператор создаёт её перед размещением панели в этой папке.

Подготовьте конфигурацию панели. В файле dashboard.yml определите панель и назначьте её папке:

YAML
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
  name: '<FOLDER_NAME>'
  namespace: '<GRAFANA_OPERATOR_NAMESPACE>'
spec:
  instanceSelector:
    matchLabels:
      dashboards: '<GRAFANA_CLOUD_STACK_NAME>'
  folder: '<FOLDER_NAME>'
  json: >
    {
      "title": "as-code dashboard",
      "uid" : "ascode"
    }

Замените заполнители своими значениями:

  • <FOLDER_NAME>: имя папки, в которой вы хотите создать панель
  • <GRAFANA_CLOUD_STACK_NAME>: имя вашего стека Grafana Cloud
  • <GRAFANA_OPERATOR_NAMESPACE>: пространство имён, в котором развёрнут grafana-operator в вашем кластере Kubernetes

Применение манифестов Kubernetes

В терминале выполните следующие команды из каталога, где находятся все приведённые выше определения YAML для Kubernetes.

Создайте пользовательские ресурсы Kubernetes для всех конфигураций:

sh
kubectl apply -f grafana-token.yml grafana-cloud.yml datasource.yml dashboard.yml

Проверка конфигурации

После применения конфигураций убедитесь, что:

  • В Grafana отображается новый источник данных. На следующем изображении был создан источник данных с именем InfluxDB.

    Источник данных InfluxDB

  • В Grafana созданы новая панель и папка. На следующем изображении внутри папки Demos была создана панель с именем InfluxDB Cloud Demos.

    Панель InfluxDB

Дальнейшие шаги

Вы успешно создали источник данных, папку и панель с помощью Grafana Operator. Теперь ваши ресурсы Grafana управляются декларативно через пользовательские ресурсы Kubernetes.

Чтобы узнать больше об управлении Grafana: