Настройка 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, выполните следующие шаги:
- Изучите ограничения использования и производительности
- Создайте CRDs подключения и репозитория
- Отправьте CRDs в Grafana
- Управляйте ресурсами репозитория
- Проверьте настройку
Создание CRDs ресурсов
Если вы подключаетесь к любому из поддерживаемых Git-провайдеров с помощью Personal Access Token, вам нужно создать ресурс репозитория, определяющий связь между вашими репозиториями и экземпляром Grafana.
Если вы подключаетесь к Git Sync с помощью GitHub App, помимо ресурса репозитория вам также нужно создать ресурс подключения.
Создание ресурса подключения
Если вы подключаете Git Sync с помощью GitHub App, создайте файл connection.yaml, определяющий конфигурацию подключения Git Sync:
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 или имя подключения.
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размещает синхронизируемые ресурсы на верхнем уровне без создания папки-обёртки. Подробности см. в разделе Цели синхронизации.
Параметры конфигурации
Доступны следующие параметры конфигурации:
Отправка ресурсов в Grafana
Прежде чем отправлять какие-либо ресурсы, настройте gcx с данными вашего экземпляра Grafana. Инструкции по настройке см. в
документации Grafana CLI.
Отправьте конфигурацию репозитория. Если вы используете GitHub App для подключения Git Sync, отправьте также файл конфигурации ресурса подключения.
gcx resources push --path <DIRECTORY>
Параметр --path должен указывать на каталог, содержащий ваши файлы repository.yaml и connection.yaml.
После отправки Grafana:
- Создаст необходимые ресурсы (репозиторий и, для GitHub App, подключение)
- Подключится к вашему репозиторию GitHub
- Получит дашборды из указанного пути
- Начнёт синхронизацию с настроенным интервалом
Управление ресурсами репозитория
Список репозиториев
Чтобы получить список всех репозиториев:
gcx resources get repositories
Получение сведений о репозитории
Чтобы получить сведения о конкретном репозитории:
gcx resources get repository/<REPOSITORY_NAME>
gcx resources get repository/<REPOSITORY_NAME> -o json
gcx resources get repository/<REPOSITORY_NAME> -o yaml
Обновление репозитория
Чтобы обновить репозиторий:
gcx resources edit repository/<REPOSITORY_NAME>
Удаление репозитория
Чтобы удалить репозиторий:
gcx resources delete repository/<REPOSITORY_NAME>
Проверка настройки
Проверьте, что Git Sync работает:
# List repositories
gcx resources get repositories
# Check Grafana UI
# Navigate to: Administration → Provisioning → Git Sync