mirror of https://github.com/grafana/grafana
prometheushacktoberfestmetricsmonitoringalertinggrafanagoinfluxdbmysqlpostgresanalyticsdata-visualizationdashboardbusiness-intelligenceelasticsearch
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
6.7 KiB
255 lines
6.7 KiB
|
4 years ago
|
---
|
||
|
|
aliases:
|
||
|
|
- /docs/grafana/latest/installation/kubernetes/
|
||
|
4 years ago
|
- /docs/grafana/latest/setup-grafana/installation/kubernetes/
|
||
|
4 years ago
|
description: Guide for deploying Grafana on Kubernetes
|
||
|
|
title: Deploy Grafana on Kubernetes
|
||
|
4 years ago
|
weight: 300
|
||
|
4 years ago
|
---
|
||
|
5 years ago
|
|
||
|
|
## Deploy Grafana on Kubernetes
|
||
|
|
|
||
|
4 years ago
|
This page explains how to install and run Grafana on Kubernetes (K8S). It uses Kubernetes manifests for the setup. If you prefer Helm, refer to the [Grafana Helm community charts](https://github.com/grafana/helm-charts).
|
||
|
5 years ago
|
|
||
|
|
If you are interested in Grafana Enterprise (not Grafana OS), jump to [Deploy Grafana Enterprise on Kubernetes](#deploy-grafana-enterprise-on-kubernetes) section.
|
||
|
|
|
||
|
|
### Create Grafana Kubernetes manifest
|
||
|
4 years ago
|
|
||
|
|
1. Create a file called `grafana.yaml`, then paste the contents below.
|
||
|
5 years ago
|
|
||
|
|
```yaml
|
||
|
|
---
|
||
|
|
apiVersion: v1
|
||
|
|
kind: PersistentVolumeClaim
|
||
|
|
metadata:
|
||
|
5 years ago
|
name: grafana-pvc
|
||
|
5 years ago
|
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:
|
||
|
5 years ago
|
securityContext:
|
||
|
|
fsGroup: 472
|
||
|
|
supplementalGroups:
|
||
|
4 years ago
|
- 0
|
||
|
5 years ago
|
containers:
|
||
|
5 years ago
|
- name: grafana
|
||
|
4 years ago
|
image: grafana/grafana:8.4.4
|
||
|
5 years ago
|
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
|
||
|
5 years ago
|
livenessProbe:
|
||
|
|
failureThreshold: 3
|
||
|
|
initialDelaySeconds: 30
|
||
|
|
periodSeconds: 10
|
||
|
|
successThreshold: 1
|
||
|
|
tcpSocket:
|
||
|
|
port: 3000
|
||
|
4 years ago
|
timeoutSeconds: 1
|
||
|
5 years ago
|
resources:
|
||
|
|
requests:
|
||
|
5 years ago
|
cpu: 250m
|
||
|
|
memory: 750Mi
|
||
|
5 years ago
|
volumeMounts:
|
||
|
|
- mountPath: /var/lib/grafana
|
||
|
5 years ago
|
name: grafana-pv
|
||
|
5 years ago
|
volumes:
|
||
|
5 years ago
|
- name: grafana-pv
|
||
|
5 years ago
|
persistentVolumeClaim:
|
||
|
5 years ago
|
claimName: grafana-pvc
|
||
|
5 years ago
|
---
|
||
|
|
apiVersion: v1
|
||
|
|
kind: Service
|
||
|
|
metadata:
|
||
|
|
name: grafana
|
||
|
|
spec:
|
||
|
|
ports:
|
||
|
|
- port: 3000
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: http-grafana
|
||
|
|
selector:
|
||
|
|
app: grafana
|
||
|
|
sessionAffinity: None
|
||
|
|
type: LoadBalancer
|
||
|
|
```
|
||
|
|
|
||
|
|
### Send manifest to Kubernetes API server
|
||
|
|
|
||
|
4 years ago
|
1. Run the following command:
|
||
|
|
`kubectl apply -f grafana.yaml`
|
||
|
5 years ago
|
|
||
|
|
1. Check that it worked by running the following:
|
||
|
4 years ago
|
`kubectl port-forward service/grafana 3000:3000`
|
||
|
5 years ago
|
|
||
|
4 years ago
|
1. Navigate to `localhost:3000` in your browser. You should see a Grafana login page.
|
||
|
5 years ago
|
|
||
|
|
1. Use `admin` for both the username and password to login.
|
||
|
|
|
||
|
|
## Deploy Grafana Enterprise on Kubernetes
|
||
|
4 years ago
|
|
||
|
5 years ago
|
The process for deploying Grafana Enterprise is almost identical to the process above, except for some extra steps required to add in your license file. They are described in the following sections.
|
||
|
|
|
||
|
|
### Obtain Grafana Enterprise license
|
||
|
4 years ago
|
|
||
|
|
To run Grafana Enterprise, you need a valid license. [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise) to obtain the license. This topic assumes that you already have done this and have a `license.jwt` file. Your license should also be associated with a URL, which we will use later in the topic.
|
||
|
5 years ago
|
|
||
|
|
### Create License Secret
|
||
|
4 years ago
|
|
||
|
5 years ago
|
Create a Kubernetes secret from your license file using the following command:
|
||
|
4 years ago
|
|
||
|
5 years ago
|
```bash
|
||
|
|
kubectl create secret generic ge-license --from-file=/path/to/your/license.jwt
|
||
|
|
```
|
||
|
|
|
||
|
|
### Create Grafana Enterprise configuration
|
||
|
4 years ago
|
|
||
|
|
Create a Grafana configuration file with the name `grafana.ini`. Then paste the content below.
|
||
|
|
|
||
|
|
> **Note:** You will have to update the `root_url` field to the url associated with the license you were given.
|
||
|
|
|
||
|
5 years ago
|
```yaml
|
||
|
|
[enterprise]
|
||
|
|
license_path = /etc/grafana/license/license.jwt
|
||
|
|
[server]
|
||
|
|
root_url =/your/license/root/url
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
|
### Create Configmap for Grafana Enterprise Config
|
||
|
4 years ago
|
|
||
|
5 years ago
|
Create a Kubernetes Configmap from your `grafana.ini` file with the following command:
|
||
|
4 years ago
|
|
||
|
5 years ago
|
```bash
|
||
|
|
kubectl create configmap ge-config --from-file=/path/to/your/config.ini
|
||
|
|
```
|
||
|
4 years ago
|
|
||
|
5 years ago
|
### Create Grafana Enterprise Kubernetes manifest
|
||
|
4 years ago
|
|
||
|
|
Create a `grafana.yaml` file, then paste the content below. This YAML is identical to the one for Grafana OS install except for the additional references to the Configmap which has your Grafana configuration file and the Secret that has your license.
|
||
|
5 years ago
|
|
||
|
|
```yaml
|
||
|
|
---
|
||
|
|
apiVersion: v1
|
||
|
|
kind: PersistentVolumeClaim
|
||
|
|
metadata:
|
||
|
|
name: grafana
|
||
|
|
spec:
|
||
|
|
accessModes:
|
||
|
|
- ReadWriteOnce
|
||
|
|
resources:
|
||
|
|
requests:
|
||
|
|
storage: 1Gi
|
||
|
|
storageClassName: local-path
|
||
|
|
---
|
||
|
|
apiVersion: apps/v1
|
||
|
|
kind: Deployment
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: grafana
|
||
|
|
name: grafana
|
||
|
|
spec:
|
||
|
|
selector:
|
||
|
|
matchLabels:
|
||
|
|
app: grafana
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: grafana
|
||
|
|
spec:
|
||
|
|
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
|
||
|
|
- mountPath: /etc/grafana
|
||
|
|
name: ge-config
|
||
|
|
- mountPath: /etc/grafana/license
|
||
|
|
name: ge-license
|
||
|
|
volumes:
|
||
|
|
- name: grafana
|
||
|
|
persistentVolumeClaim:
|
||
|
|
claimName: grafana
|
||
|
|
- 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
|
||
|
|
```
|
||
|
4 years ago
|
|
||
|
5 years ago
|
1. Send manifest to Kubernetes API Server
|
||
|
4 years ago
|
`kubectl apply -f grafana.yaml`
|
||
|
5 years ago
|
|
||
|
|
1. Check that it worked by running the following:
|
||
|
4 years ago
|
`kubectl port-forward service/grafana 3000:3000`
|
||
|
5 years ago
|
|
||
|
4 years ago
|
1. Navigate to `localhost:3000` in your browser. You should see the Grafana login page.
|
||
|
5 years ago
|
|
||
|
|
1. Use `admin` for both the username and password to login.
|
||
|
4 years ago
|
If it worked, you should see `Enterprise (Licensed)` at the bottom of the page.
|