Настройка Git Sync как кода

Вы также можете настроить Git Sync с помощью gcx, CLI Grafana. Поскольку конфигурация Git Sync управляется как код с использованием Custom Resource Definitions (CRDs), вы можете создать нужные ресурсы в YAML-файлах и отправить их в Grafana с помощью gcx. Такой подход позволяет использовать автоматизированные рабочие процессы в стиле GitOps для управления конфигурацией Git Sync вместо интерфейса Grafana.

Дополнительную информацию см. в следующих документах:

Настройка Git Sync как кода с помощью Grafana CLI

Чтобы настроить Git Sync как код с помощью gcx, выполните следующие шаги:

  1. Изучите ограничения использования и производительности
  2. Создайте CRDs подключения и репозитория
  3. Отправьте CRDs в Grafana
  4. Управляйте ресурсами репозитория
  5. Проверьте настройку

Создание CRDs ресурсов

Если вы подключаетесь к любому из поддерживаемых Git-провайдеров с помощью Personal Access Token, вам нужно создать ресурс репозитория, определяющий связь между вашими репозиториями и экземпляром Grafana.

Если вы подключаетесь к Git Sync с помощью GitHub App, помимо ресурса репозитория вам также нужно создать ресурс подключения.

Создание ресурса подключения

Если вы подключаете Git Sync с помощью GitHub App, создайте файл connection.yaml, определяющий конфигурацию подключения Git Sync:

YAML
apiVersion: provisioning.grafana.app/v0alpha1
kind: Connection
metadata:
  name: '<GITHUB_CONNECTION_NAME>'
  namespace: default
spec:
  title: '<REPOSITORY_TITLE>'
  type: github
  url: https://github.com
  github:
    appID: '<GITHUB_APP_ID>'
    installationID: '<GITHUB_INSTALL_ID>'
    serverUrl: '<GITHUB_ENTERPRISE_SERVER_URL>' # Only required for GitHub Enterprise
secure:
  privateKey:
    create: '<GITHUB_PRIVATE_KEY>'

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

  • <GITHUB_CONNECTION_NAME>: имя вашего подключения GitHub
  • <REPOSITORY_TITLE>: читаемое имя, отображаемое в интерфейсе Grafana
  • <GITHUB_APP_ID>: уникальный идентификатор GitHub App
  • <GITHUB_INSTALL_ID>: идентификатор установки GitHub App
  • <GITHUB_PRIVATE_KEY>: приватный ключ GitHub

Создание ресурса репозитория

Далее создайте файл repository.yaml, определяющий конфигурацию Git Sync. В зависимости от вашего Git-провайдера и способа аутентификации добавьте информацию о Personal Access Token или имя подключения.

YAML
apiVersion: provisioning.grafana.app/v0alpha1
kind: Repository
metadata:
  name: '<REPOSITORY_NAME>'
spec:
  sync:
    enabled: true
    intervalSeconds: 60
    target: folder
  workflows:
    - write
    - branch
  title: '<REPOSITORY_TITLE>'

# Git Sync for GitHub:
spec:
  type: github
  github:
    url: '<GIT_REPO_URL>'
    branch: '<BRANCH>'
    path: grafana/
  # GitHub App connection only:
  connection:
    name: '<GITHUB_CONNECTION_NAME>'
# GitHub Personal Access Token only:
secure:
  token: { create: 'GIT_PAT' }

# Git Sync for GitHub Enterprise:
spec:
  type: githubEnterprise
  githubEnterprise:
    url: '<GIT_REPO_URL>'
    branch: '<BRANCH>'
    path: grafana/
  # GitHub Enterprise App connection only:
  connection:
    name: '<GITHUB_ENTERPRISE_CONNECTION_NAME>'
# GitHub Personal Access Token only:
secure:
  token: { create: 'GIT_PAT' }

# GitLab Personal Access Token only:
spec:
  type: gitlab
  gitlab:
    url: '<GIT_REPO_URL>'
    branch: '<BRANCH>'
secure:
  token: { create: 'GIT_PAT' }

# Bitbucket Personal Access Token only:
spec:
  type: bitbucket
  bitbucket:
    url: '<GIT_REPO_URL>'
    branch: '<BRANCH>'
    tokenUser: tokenuser
secure:
  token: { create: 'GIT_PAT' }

# Pure Git only:
spec:
  type: git
  git:
    url: '<GIT_REPO_URL>'
    branch: '<BRANCH>'
    path: 'grafana/'
    tokenUser: tokenuser
secure:
  token: { create: 'GIT_PAT' }

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

  • <REPOSITORY_NAME>: уникальный идентификатор этого ресурса репозитория
  • <REPOSITORY_TITLE>: читаемое имя, отображаемое в интерфейсе Grafana
  • <GIT_REPO_URL>: URL репозитория GitHub
  • <BRANCH>: ветка для синхронизации
  • <GITHUB_CONNECTION_NAME>: имя вашего подключения GitHub
  • <GITHUB_ENTERPRISE_CONNECTION_NAME>: имя вашего подключения GitHub Enterprise
  • <GIT_PAT>: Personal Access Token Git-провайдера

Note

Git Sync поддерживает две цели синхронизации: target: folder (по умолчанию) создаёт папку с именем репозитория и помещает в неё синхронизируемые ресурсы, а target: folderless размещает синхронизируемые ресурсы на верхнем уровне без создания папки-обёртки. Подробности см. в разделе Цели синхронизации.

Параметры конфигурации

Доступны следующие параметры конфигурации:

Поле Описание
metadata.name Уникальный идентификатор этого ресурса репозитория
spec.title Читаемое имя, отображаемое в интерфейсе Grafana
spec.type Тип репозитория (github, githubEnterprise)
spec.github.url URL репозитория GitHub
spec.github.branch Ветка для синхронизации
spec.github.path Путь к каталогу, содержащему дашборды
spec.github.generateDashboardPreviews Создавать изображения предпросмотра (true/false) (только GitHub)
spec.sync.enabled Включить синхронизацию (true/false)
spec.sync.intervalSeconds Интервал синхронизации в секундах
spec.sync.target Куда помещать синхронизируемые дашборды (folder или folderless)
spec.workflows Включённые рабочие процессы: write (прямые коммиты), branch (PR)
secure.token.create Personal Access Token GitHub

Отправка ресурсов в Grafana

Прежде чем отправлять какие-либо ресурсы, настройте gcx с данными вашего экземпляра Grafana. Инструкции по настройке см. в документации Grafana CLI.

Отправьте конфигурацию репозитория. Если вы используете GitHub App для подключения Git Sync, отправьте также файл конфигурации ресурса подключения.

sh
gcx resources push --path <DIRECTORY>

Параметр --path должен указывать на каталог, содержащий ваши файлы repository.yaml и connection.yaml.

После отправки Grafana:

  1. Создаст необходимые ресурсы (репозиторий и, для GitHub App, подключение)
  2. Подключится к вашему репозиторию GitHub
  3. Получит дашборды из указанного пути
  4. Начнёт синхронизацию с настроенным интервалом

Управление ресурсами репозитория

Список репозиториев

Чтобы получить список всех репозиториев:

sh
gcx resources get repositories

Получение сведений о репозитории

Чтобы получить сведения о конкретном репозитории:

sh
gcx resources get repository/<REPOSITORY_NAME>
gcx resources get repository/<REPOSITORY_NAME> -o json
gcx resources get repository/<REPOSITORY_NAME> -o yaml

Обновление репозитория

Чтобы обновить репозиторий:

sh
gcx resources edit repository/<REPOSITORY_NAME>

Удаление репозитория

Чтобы удалить репозиторий:

sh
gcx resources delete repository/<REPOSITORY_NAME>

Проверка настройки

Проверьте, что Git Sync работает:

sh
# List repositories
gcx resources get repositories

# Check Grafana UI
# Navigate to: Administration → Provisioning → Git Sync