Lab 11.1: Installing and configuring Grafana
1. Create a file named grafana-datasource-config.yaml
vim grafana-datasource-config.yaml
Copy the following contents:
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-datasources
namespace: monitoring
data:
prometheus.yaml: |-
{
"apiVersion": 1,
"datasources": [
{
"access":"proxy",
"editable": true,
"name": "prometheus",
"orgId": 1,
"type": "prometheus",
"url": "http://prometheus-service.monitoring.svc:8080",
"version": 1
}
]
}
2. Create the configmap using the following command.
kubectl create -f grafana-datasource-config.yaml
3. Create a file named deployment.yaml
vim deployment.yaml
Copy the following contents into the file:
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
name: grafana
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana:latest
ports:
- name: grafana
containerPort: 3000
resources:
limits:
memory: "1Gi"
cpu: "1000m"
requests:
memory: 500M
cpu: "500m"
volumeMounts:
- mountPath: /var/lib/grafana
name: grafana-storage
- mountPath: /etc/grafana/provisioning/datasources
name: grafana-datasources
readOnly: false
volumes:
- name: grafana-storage
emptyDir: {}
- name: grafana-datasources
configMap:
defaultMode: 420
name: grafana-datasources
Note: This Grafana deployment does not use a persistent volume. If you restart the pod, all changes will be gone. Use a persistent volume if you are deploying Grafana for your project requirements. It will persist all the configs and data that Grafana uses.
4. Create the deployment
kubectl create -f deployment.yaml
5. Create a service file named service.yaml
vim service.yaml
Copy the following contents into the file. This will expose Grafana on NodePort 32000. You can also expose it using ingress or a LoadBalancer based on your requirement.
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: monitoring
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '3000'
spec:
selector:
app: grafana
type: NodePort
ports:
- port: 3000
targetPort: 3000
nodePort: 32000
6. Create the service.
kubectl create -f service.yaml
Now you should be able to access the Grafana dashboard using any node IP on port 32000. Make sure the port is allowed in the firewall to be accessed from your workstation.
http://10.3.X.11:32000
Login
- User: admin
- Pass: admin
change password to 'adinusapro'