Развёртывание Grafana на Kubernetes

На этой странице вы найдёте инструкции по установке и запуску Grafana на Kubernetes с использованием манифестов Kubernetes для настройки. Если вы предпочитаете Helm, обратитесь к Helm-чартам сообщества Grafana.

Посмотрите это видео, чтобы узнать больше об установке Grafana на Kubernetes:

Перед началом

Чтобы следовать этому руководству:

  • Вам нужна последняя версия Kubernetes, работающая локально или удалённо в публичном либо приватном облаке.

  • Если вы планируете использовать её в локальной среде, вы можете использовать различные варианты Kubernetes, такие как minikube, kind, Docker Desktop и другие.

  • Если вы планируете использовать Kubernetes в продакшен-среде, рекомендуется использовать управляемые облачные сервисы, такие как Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) или Azure Kubernetes Service (AKS).

Системные требования

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

Минимальные требования к оборудованию

  • Дисковое пространство: 1 ГБ
  • Память: 750 МиБ (примерно 750 МБ)
  • ЦП: 250m (примерно 0,25 ядра)

Поддерживаемые базы данных

Список поддерживаемых баз данных см. в разделе поддерживаемые базы данных.

Поддерживаемые веб-браузеры

Список поддерживаемых веб-браузеров см. в разделе поддерживаемые веб-браузеры.

Note

Включите порт 3000 в вашей сетевой среде, так как это порт Grafana по умолчанию.

Развёртывание Grafana OSS на Kubernetes

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

Note

Если вы хотите установить Grafana Enterprise на Kubernetes, обратитесь к разделу Развёртывание Grafana Enterprise на Kubernetes.

Если вы развёртываете приложение в Kubernetes, оно будет использовать пространство имён по умолчанию, в котором могут уже работать другие приложения. Это может привести к конфликтам и другим проблемам.

Рекомендуется создать новое пространство имён в Kubernetes, чтобы лучше управлять, организовывать, распределять и администрировать ресурсы кластера. Дополнительную информацию о пространствах имён см. в официальной документации Kubernetes.

  1. Чтобы создать пространство имён, выполните следующую команду:

    Bash
    kubectl create namespace my-grafana

    В этом примере пространство имён — my-grafana

  2. Чтобы проверить и просмотреть только что созданное пространство имён, выполните следующую команду:

    Bash
    kubectl get namespace my-grafana

    Вывод команды предоставляет больше информации о только что созданном пространстве имён.

  3. Создайте файл манифеста YAML с именем grafana.yaml. Этот файл будет содержать необходимый код для развёртывания.

    Bash
    touch grafana.yaml

    На следующем шаге вы определите следующие три объекта в файле YAML.

    Объект Описание
    Persistent Volume Claim (PVC) Этот объект хранит данные.
    Service Этот объект предоставляет сетевой доступ к Pod, определённому в развёртывании.
    Deployment Этот объект отвечает за создание pod, обеспечение их актуальности и управление Replicaset и Rolling-обновлениями.
  4. Скопируйте и вставьте следующее содержимое и сохраните его в файле grafana.yaml.

    YAML
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    spec:
      selector:
        matchLabels:
          app: grafana
      template:
        metadata:
          labels:
            app: grafana
        spec:
          securityContext:
            fsGroup: 472
            supplementalGroups:
              - 0
          containers:
            - name: grafana
              image: grafana/grafana:latest
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 3000
                  name: http-grafana
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  path: /robots.txt
                  port: 3000
                  scheme: HTTP
                initialDelaySeconds: 10
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 2
              livenessProbe:
                failureThreshold: 3
                initialDelaySeconds: 30
                periodSeconds: 10
                successThreshold: 1
                tcpSocket:
                  port: 3000
                timeoutSeconds: 1
              resources:
                requests:
                  cpu: 250m
                  memory: 750Mi
              volumeMounts:
                - mountPath: /var/lib/grafana
                  name: grafana-pv
          volumes:
            - name: grafana-pv
              persistentVolumeClaim:
                claimName: grafana-pvc
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
    spec:
      ports:
        - port: 3000
          protocol: TCP
          targetPort: http-grafana
      selector:
        app: grafana
      sessionAffinity: None
      type: LoadBalancer
  5. Выполните следующую команду, чтобы отправить манифест на сервер API Kubernetes:

    Bash
    kubectl apply -f grafana.yaml --namespace=my-grafana

    Эта команда создаёт объекты PVC, Deployment и Service.

  6. Выполните следующие шаги, чтобы проверить статус развёртывания каждого объекта.

    a. Для PVC выполните следующую команду:

    Bash
    kubectl get pvc --namespace=my-grafana -o wide

    b. Для Deployment выполните следующую команду:

    Bash
    kubectl get deployments --namespace=my-grafana -o wide

    c. Для Service выполните следующую команду:

    Bash
    kubectl get svc --namespace=my-grafana -o wide

Доступ к Grafana у управляемых провайдеров K8s

В этой задаче вы получаете доступ к Grafana, развёрнутой у управляемого провайдера Kubernetes, с помощью веб-браузера. Доступ к Grafana через веб-браузер прост, если она развёрнута у управляемого провайдера Kubernetes, поскольку используется LoadBalancer облачного провайдера, для которого автоматически создаются маршруты внешнего балансировщика нагрузки.

  1. Выполните следующую команду, чтобы получить информацию о развёртывании:

    Bash
    kubectl get all --namespace=my-grafana

    Возвращённый вывод должен выглядеть примерно так:

    Bash
    NAME                           READY   STATUS    RESTARTS   AGE
    pod/grafana-69946c9bd6-kwjb6   1/1     Running   0          7m27s
    
    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
    service/grafana   LoadBalancer   10.5.243.226   1.120.130.330   3000:31171/TCP   7m27s
    
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/grafana   1/1     1            1           7m29s
    
    NAME                                 DESIRED   CURRENT   READY   AGE
    replicaset.apps/grafana-69946c9bd6   1         1         1       7m30s
  2. Определите значение EXTERNAL-IP в выводе и введите его в ваш браузер.

    Появится страница входа Grafana.

  3. Чтобы войти, введите admin как для имени пользователя, так и для пароля.

  4. Если вы не видите EXTERNAL-IP, выполните следующие шаги:

    a. Выполните следующую команду, чтобы выполнить переадресацию портов службы Grafana на порт 3000.

    Bash
    kubectl port-forward service/grafana 3000:3000 --namespace=my-grafana

    Дополнительную информацию о переадресации портов см. в разделе Использование переадресации портов для доступа к приложениям в кластере.

    b. Перейдите на localhost:3000 в вашем браузере.

    Появится страница входа Grafana.

    c. Чтобы войти, введите admin как для имени пользователя, так и для пароля.

Доступ к Grafana с помощью minikube

Есть несколько способов получить доступ к интерфейсу Grafana в веб-браузере при использовании minikube. Дополнительную информацию о minikube см. в разделе Как получить доступ к приложениям, работающим в minikube.

В этом разделе перечислены два наиболее распространённых варианта доступа к приложению, работающему в minikube.

Вариант 1: открыть службу

Этот вариант использует type: LoadBalancer в манифесте службы grafana.yaml, что делает службу доступной через команду minikube service. Дополнительную информацию см. в разделе Использование команды minikube Service.

  1. Выполните следующую команду, чтобы получить IP службы Grafana:

    Bash
    minikube service grafana --namespace=my-grafana

    Вывод возвращает URL Kubernetes для службы в вашем локальном кластере.

    Bash
    |------------|---------|-------------|------------------------------|
    | NAMESPACE  |  NAME   | TARGET PORT |             URL              |
    |------------|---------|-------------|------------------------------|
    | my-grafana | grafana |        3000 | http://192.168.122.144:32182 |
    |------------|---------|-------------|------------------------------|
    Opening service my-grafana/grafana in default browser...
    http://192.168.122.144:32182
  2. Выполните команду curl, чтобы проверить, должно ли данное подключение работать в браузере при идеальных обстоятельствах.

    Bash
    curl 192.168.122.144:32182

    Следующий пример вывода показывает, что конечная точка была найдена:

    <a href="/login">Found</a>.

  3. Получите доступ к интерфейсу Grafana в браузере, используя предоставленный IP:Port из команды выше. Например 192.168.122.144:32182

    Появится страница входа Grafana.

  4. Чтобы войти в Grafana, введите admin как для имени пользователя, так и для пароля.

Вариант 2: использование переадресации портов

Если вариант 1 не работает в вашей среде minikube (это в основном зависит от сети), то в качестве альтернативы вы можете использовать вариант переадресации портов для службы Grafana на порт 3000.

Дополнительную информацию о переадресации портов см. в разделе Использование переадресации портов для доступа к приложениям в кластере.

  1. Чтобы найти IP-адрес minikube, выполните следующую команду:

    Bash
    minikube ip

    Вывод содержит IP-адрес, который вы используете для доступа к Pod Grafana во время переадресации портов.

    Pod — это наименьшая единица развёртывания в Kubernetes и основной строительный блок для запуска приложений в кластере Kubernetes. Дополнительную информацию о Pod см. в разделе Pods.

  2. Чтобы получить информацию о Pod Grafana, выполните следующую команду:

    Bash
    kubectl get pods --namespace=my-grafana

    Вывод должен выглядеть примерно так:

    Bash
    NAME                       READY   STATUS    RESTARTS   AGE
    grafana-58445b6986-dxrrw   1/1     Running   0          9m54s

    Вывод показывает имя POD Grafana в столбце NAME, которое вы используете для переадресации портов.

  3. Выполните следующую команду, чтобы включить переадресацию портов на POD:

    Bash
    kubectl port-forward pod/grafana-58445b6986-dxrrw --namespace=my-grafana --address 0.0.0.0 3000:3000
  4. Чтобы получить доступ к интерфейсу Grafana в веб-браузере, введите IP minikube вместе с перенаправленным портом. Например 192.168.122.144:3000

    Появится страница входа Grafana.

  5. Чтобы войти в Grafana, введите admin как для имени пользователя, так и для пароля.

Обновление существующего развёртывания с использованием стратегии Rolling-обновления

Rolling-обновления позволяют обновлять развёртывание без простоя, инкрементально заменяя экземпляры Pod новыми. Новые Pod будут запланированы на узлы с доступными ресурсами. Дополнительную информацию о Rolling-обновлениях см. в разделе Выполнение Rolling-обновления.

Следующие шаги используют команду kubectl annotate, чтобы добавить метаданные и отслеживать развёртывание. Дополнительную информацию о kubectl annotate см. в документации kubectl annotate.

Note

Вместо использования флага annotate вы всё ещё можете использовать флаг --record. Однако он устарел и будет удалён в будущей версии Kubernetes. См.: https://github.com/kubernetes/kubernetes/issues/40422

  1. Чтобы просмотреть текущий статус развёртывания (rollout), выполните следующую команду:

    Bash
    kubectl rollout history deployment/grafana --namespace=my-grafana

    Вывод будет выглядеть примерно так:

    Bash
    deployment.apps/grafana
    REVISION  CHANGE-CAUSE
    1         NONE

    Вывод показывает, что ничего не было обновлено или изменено после применения файла grafana.yaml.

  2. Чтобы добавить метаданные для отслеживания первоначального развёртывания, выполните следующую команду:

    Bash
    kubectl annotate deployment/grafana kubernetes.io/change-cause='deployed the default base yaml file' --namespace=my-grafana
  3. Чтобы просмотреть историю развёртывания и проверить изменения, выполните следующую команду:

    Bash
    kubectl rollout history deployment/grafana --namespace=my-grafana

    Вы должны увидеть обновлённую информацию, которую вы добавили в CHANGE-CAUSE ранее.

Изменение версии образа Grafana

  1. Чтобы изменить развёрнутую версию Grafana, выполните следующую команду kubectl edit:

    Bash
    kubectl edit deployment grafana --namespace=my-grafana
  2. В редакторе измените образ контейнера в разделе kind: Deployment.

    Например:

    • С

      • yaml image: grafana/grafana:12.1.0
    • На

      • yaml image: grafana/grafana-dev:12.2.0-17161637292
  3. Сохраните изменения.

    Как только вы сохраните файл, вы получите сообщение, похожее на следующее:

    Bash
    deployment.apps/grafana edited

    Это означает, что изменения были применены.

  4. Чтобы проверить, что развёртывание в кластере успешно, выполните следующую команду:

    Bash
    kubectl rollout status deployment grafana --namespace=my-grafana

    Успешное развёртывание означает, что кластер Grafana Dev теперь доступен.

  5. Чтобы проверить статусы всех развёрнутых объектов, выполните следующую команду и включите флаг -o wide, чтобы получить более подробный вывод:

    Bash
    kubectl get all --namespace=my-grafana -o wide

    Вы должны увидеть только что развёрнутый образ grafana-dev.

  6. Чтобы проверить это, получите доступ к интерфейсу Grafana в браузере, используя предоставленный IP:Port из команды выше.

    Появится страница входа Grafana.

  7. Чтобы войти в Grafana, введите admin как для имени пользователя, так и для пароля.

  8. В правом верхнем углу нажмите значок справки.

    Появится информация о версии.

  9. Добавьте метаданные change cause для отслеживания, используя команды:

    Bash
    kubectl annotate deployment grafana --namespace=my-grafana kubernetes.io/change-cause='using grafana-dev:12.2.0-17161637292 for testing'
  10. Чтобы проверить, выполните команду kubectl rollout history:

    Bash
    kubectl rollout history deployment grafana --namespace=my-grafana

    Вы увидите вывод, похожий на этот:

    Bash
    deployment.apps/grafana
    REVISION  CHANGE-CAUSE
    1         deploying the default yaml
    2         using grafana-dev:12.2.0-17161637292 for testing

Это означает, что REVISION#2 — текущая версия.

Note

Последняя строка вывода команды kubectl rollout history deployment — это та, которая в настоящее время активна и работает в вашей среде Kubernetes.

Откат развёртывания

Когда развёртывание Grafana становится нестабильным из-за циклических сбоев, ошибок и так далее, вы можете откатить развёртывание к более ранней версии (a REVISION).

По умолчанию история развёртываний Kubernetes сохраняется в системе, чтобы вы могли откатиться в любой момент. Дополнительную информацию см. в разделе Откат к предыдущей ревизии.

  1. Чтобы перечислить все возможные значения REVISION, выполните следующую команду:

    Bash
    kubectl rollout history deployment grafana --namespace=my-grafana
  2. Чтобы откатиться к предыдущей версии, выполните команду kubectl rollout undo и укажите номер ревизии.

    Пример: чтобы откатиться к предыдущей версии, укажите номер REVISION, который появляется после выполнения команды kubectl rollout history deployment, в параметре --to-revision.

    Bash
    kubectl rollout undo deployment grafana --to-revision=1 --namespace=my-grafana
  3. Чтобы проверить, что откат в кластере успешен, выполните следующую команду:

    Bash
    kubectl rollout status deployment grafana --namespace=my-grafana
  4. Получите доступ к интерфейсу Grafana в браузере, используя предоставленный IP:Port из команды выше.

    Появится страница входа Grafana.

  5. Чтобы войти в Grafana, введите admin как для имени пользователя, так и для пароля.

  6. В правом верхнем углу нажмите значок справки, чтобы отобразить номер версии.

  7. Чтобы увидеть новую историю развёртывания, выполните следующую команду:

    Bash
    kubectl rollout history deployment grafana --namespace=my-grafana

Если вам нужно вернуться к любой другой REVISION, просто повторите шаги выше и используйте правильный номер ревизии в параметре --to-revision.

Провижининг ресурсов Grafana с помощью файлов конфигурации

Провижининг может добавлять, обновлять или удалять ресурсы, указанные в ваших файлах конфигурации, при запуске Grafana. Подробную информацию см. в разделе Провижининг Grafana.

В этом разделе описаны общие инструкции по провижинингу ресурсов Grafana в Kubernetes с использованием постоянного тома для предоставления файлов конфигурации pod Grafana.

  1. Добавьте новый PersistentVolumeClaim в файл grafana.yaml.

    YAML
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-provisioning-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Mi
  2. В файле grafana.yaml смонтируйте постоянный том в /etc/grafana/provisioning следующим образом.

    YAML
    ...
        volumeMounts:
          - mountPath: /etc/grafana/provisioning
            name: grafana-provisioning-pv
          ...
    volumes:
      - name: grafana-provisioning-pv
        persistentVolumeClaim:
          claimName: grafana-provisioning-pvc
    ...
  3. Найдите или создайте ресурсы провижининга, которые вы хотите добавить. Например, создайте файл alerting.yaml, добавляющий время отключения (mute timing) (ресурс алертинга).

    YAML
    apiVersion: 1
    muteTimes:
      - orgId: 1
        name: MuteWeekends
        time_intervals:
          - weekdays: [saturday, sunday]
  4. По умолчанию файлы конфигурации для ресурсов алертинга должны быть помещены в каталог provisioning/alerting.

    Сохраните файл alerting.yaml в каталоге с именем alerting, так как далее мы предоставим этот каталог alerting в папку /etc/grafana/provisioning pod Grafana.

  5. Сначала проверьте содержимое каталога провижининга в работающем pod Grafana.

    Bash
    kubectl exec -n my-grafana <pod_name> -- ls /etc/grafana/provisioning/
    Bash
    kubectl exec -n my-grafana <pod_name> -- ls /etc/grafana/provisioning/alerting

    Поскольку папка alerting ещё недоступна, последняя команда должна вывести ошибку No such file or directory.

  6. Скопируйте локальный каталог alerting в /etc/grafana/provisioning/ в pod Grafana.

    Bash
    kubectl cp alerting my-grafana/<pod_name>:/etc/grafana/provisioning/

    Вы можете следовать тому же процессу, чтобы провижинить дополнительные ресурсы Grafana, предоставив следующие папки:

    • provisioning/dashboards
    • provisioning/datasources
    • provisioning/plugins
  7. Убедитесь, что каталог alerting в работающем pod Grafana включает файл alerting.yaml.

    Bash
    kubectl exec -n my-grafana <pod_name> -- ls /etc/grafana/provisioning/alerting
  8. Перезапустите pod Grafana, чтобы провижинить ресурсы.

    Bash
    kubectl rollout restart -n my-grafana deployment --selector=app=grafana

    Обратите внимание, что rollout restart убивает предыдущий pod и запускает новый pod. Когда старый pod завершается, вам может потребоваться включить переадресацию портов в новом pod. Инструкции см. в предыдущих разделах о переадресации портов в этом руководстве.

  9. Убедитесь, что ресурсы Grafana правильно провижинены в экземпляре Grafana.

Устранение неполадок

Этот раздел включает советы по устранению неполадок, которые могут оказаться полезными при развёртывании Grafana на Kubernetes.

Сбор журналов

Важно просматривать журналы сервера Grafana при устранении любых проблем.

  1. Чтобы проверить журналы Grafana, выполните следующую команду:

    Bash
    # dump Pod logs for a Deployment (single-container case)
    kubectl logs --namespace=my-grafana deploy/grafana
  2. Если в развёртывании работает несколько контейнеров, выполните следующую команду, чтобы получить журналы только для развёртывания Grafana:

    Bash
    # dump Pod logs for a Deployment (multi-container case)
    kubectl logs --namespace=my-grafana deploy/grafana -c grafana

Дополнительную информацию о доступе к журналам приложений Kubernetes см. в разделах Pods и Deployments.

Повышение уровня детализации журналов до режима debug

По умолчанию уровень журнала Grafana установлен в info, но вы можете повысить его до режима debug, чтобы получить информацию, необходимую для диагностики и устранения проблемы. Дополнительную информацию об уровнях журнала Grafana см. в разделе Настройка журналов.

Следующий пример использует ConfigMap Kubernetes, который является объектом API, хранящим неконфиденциальные данные в парах ключ-значение. Дополнительную информацию см. в разделе Концепция ConfigMap Kubernetes.

  1. Создайте пустой файл с именем grafana.ini и добавьте следующее:

    Bash
    [log]
    ; # Either "debug", "info", "warn", "error", "critical", default is "info"
    ; # we change from info to debug level
    level = debug

    Этот пример добавляет часть раздела log из файла конфигурации. Вы можете обратиться к документации Настройка Grafana для просмотра всех настроек конфигурации по умолчанию.

  2. Чтобы добавить файл конфигурации в кластер Kubernetes через объект ConfigMap, выполните следующую команду:

    Bash
    kubectl create configmap ge-config --from-file=/path/to/file/grafana.ini --namespace=my-grafana
  3. Чтобы проверить создание объекта ConfigMap, выполните следующую команду:

    Bash
    kubectl get configmap --namespace=my-grafana
  4. Откройте файл grafana.yaml и в разделе Deployment укажите путь монтирования к пользовательской конфигурации (/etc/grafana) и сослитесь на только что созданный ConfigMap для неё.

    Bash
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    # the rest of the code remains the same.
    ...
    ....
    ...
                requests:
                cpu: 250m
                memory: 750Mi
            volumeMounts:
              - mountPath: /var/lib/grafana
                name: grafana-pv
               # This is to mount the volume for the custom configuration
              - mountPath: /etc/grafana
                name: ge-config
        volumes:
          - name: grafana-pv
            persistentVolumeClaim:
              claimName: grafana-pvc
           # This is to provide the reference to the ConfigMap for the volume
          - name: ge-config
            configMap:
              name: ge-config
  5. Разверните манифест, используя следующую команду kubectl apply:

    Bash
    kubectl apply -f grafana.yaml --namespace=my-grafana
  6. Чтобы проверить статус, выполните следующие команды:

    Bash
    # first check the rollout status
    kubectl rollout status deployment grafana --namespace=my-grafana
    
    # then check the deployment and configMap information
    kubectl get all --namespace=my-grafana
  7. Чтобы проверить это, получите доступ к интерфейсу Grafana в браузере, используя предоставленный IP:Port

    Появится страница входа Grafana.

  8. Чтобы войти в Grafana, введите admin как для имени пользователя, так и для пароля.

  9. Перейдите в Server Admin > Settings и затем найдите log.

    Вы должны увидеть уровень в режиме debug.

Использование команды –dry-run

Вы можете использовать команду Kubernetes --dry-run для отправки запросов на изменяющие конечные точки и определения, был бы запрос успешным.

Выполнение dry run может быть полезно для перехвата ошибок или непредвиденных последствий до их возникновения. Дополнительную информацию см. в разделе Kubernetes Dry-run.

Пример:

Следующий пример показывает, как выполнить dry run, когда вы вносите изменения в grafana.yaml, такие как использование новой версии образа или добавление новых меток, и вы хотите определить, есть ли синтаксические ошибки или конфликты.

Чтобы выполнить dry run, выполните следующую команду:

Bash
kubectl apply -f grafana.yaml --dry-run=server --namespace=grafana

Если ошибок нет, то вывод будет выглядеть примерно так:

Bash
persistentvolumeclaim/grafana-pvc unchanged (server dry run)
deployment.apps/grafana unchanged (server dry run)
service/grafana unchanged (server dry run)

Если есть ошибки или предупреждения, вы увидите их в терминале.

Удаление Grafana

Если вы хотите удалить любые из объектов развёртывания Grafana, используйте команду kubectl delete command.

  1. Если вы хотите удалить полное развёртывание Grafana, выполните следующую команду:

    Bash
    kubectl delete -f grafana.yaml --namespace=my-grafana

    Эта команда удаляет объекты deployment, persistentvolumeclaim и service.

  2. Чтобы удалить ConfigMap, выполните следующую команду:

    Bash
    kubectl delete configmap ge-config --namespace=my-grafana

Развёртывание Grafana Enterprise на Kubernetes

Процесс развёртывания Grafana Enterprise почти идентичен предыдущему процессу, за исключением дополнительных шагов, необходимых для добавления вашего файла лицензии.

Получение лицензии Grafana Enterprise

Чтобы запустить Grafana Enterprise, вам нужна действительная лицензия. Чтобы получить лицензию, свяжитесь с представителем Grafana Labs. Эта тема предполагает, что у вас есть действительная лицензия в файле license.jwt. Свяжите вашу лицензию с URL, который вы сможете использовать позже в этой теме.

Создание секрета лицензии

Создайте секрет Kubernetes из вашего файла лицензии, используя следующую команду:

Bash
kubectl create secret generic ge-license --from-file=/path/to/your/license.jwt

Создание конфигурации Grafana Enterprise

  1. Создайте файл конфигурации Grafana с именем grafana.ini

  2. Вставьте следующее содержимое YAML в созданный вами файл:

    YAML
    [enterprise]
    license_path = /etc/grafana/license/license.jwt
    [server]
    root_url =/your/license/root/url
  3. Обновите поле root_url на url, связанный с предоставленной вам лицензией.

Создание Configmap для конфигурации Grafana Enterprise

Создайте Configmap Kubernetes из вашего файла grafana.ini с помощью следующей команды:

Bash
kubectl create configmap ge-config --from-file=/path/to/your/grafana.ini

Создание манифеста Kubernetes для Grafana Enterprise

  1. Создайте файл grafana.yaml и скопируйте-вставьте в него следующее содержимое.

    Следующий YAML идентичен тому, что для установки Grafana, за исключением дополнительных ссылок на Configmap, содержащий ваш файл конфигурации Grafana, и секрет, содержащий вашу лицензию.

    YAML
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    spec:
      selector:
        matchLabels:
          app: grafana
      template:
        metadata:
          labels:
            app: grafana
        spec:
          securityContext:
            fsGroup: 472
            supplementalGroups:
              - 0
          containers:
            - image: grafana/grafana-enterprise:latest
              imagePullPolicy: IfNotPresent
              name: grafana
              ports:
                - containerPort: 3000
                  name: http-grafana
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  path: /robots.txt
                  port: 3000
                  scheme: HTTP
                initialDelaySeconds: 10
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 2
              resources:
                limits:
                  memory: 4Gi
                requests:
                  cpu: 100m
                  memory: 2Gi
              volumeMounts:
                - mountPath: /var/lib/grafana
                  name: grafana-pv
                - mountPath: /etc/grafana
                  name: ge-config
                - mountPath: /etc/grafana/license
                  name: ge-license
          volumes:
            - name: grafana-pv
              persistentVolumeClaim:
                claimName: grafana-pvc
            - name: ge-config
              configMap:
                name: ge-config
            - name: ge-license
              secret:
                secretName: ge-license
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
    spec:
      ports:
        - port: 3000
          protocol: TCP
          targetPort: http-grafana
      selector:
        app: grafana
      sessionAffinity: None
      type: LoadBalancer

    Caution

    Если вы используете LoadBalancer в Service и в зависимости от вашей облачной платформы и сетевой конфигурации, это может открыть ваш экземпляр Grafana в Интернет. Чтобы устранить этот риск, используйте ClusterIP, чтобы ограничить доступ изнутри кластера, в котором развёрнута Grafana.

  2. Чтобы отправить манифест на сервер API Kubernetes, выполните следующую команду: kubectl apply -f grafana.yaml

  3. Чтобы проверить, что манифест был отправлен, выполните следующую команду: kubectl port-forward service/grafana 3000:3000

  4. Перейдите на localhost:3000 в вашем браузере.

    Вы должны увидеть страницу входа Grafana.

  5. Используйте admin как для имени пользователя, так и для пароля, чтобы войти.

  6. Чтобы убедиться, что вы работаете с корпоративной лицензией, прокрутите до нижней части страницы, где вы должны увидеть Enterprise (Licensed).