Skip to content

Commit f76e9a6

Browse files
authored
Add k8gb custom dashboards for Grafana (k8gb-io#959)
* Add k8gb custom dashboards for Grafana * Bump Grafana and Prometheus versions * Get rid of 'policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+' * Import the dashboards during deploy-grafana makefile target Signed-off-by: Jirka Kremser <[email protected]>
1 parent 84ea55b commit f76e9a6

File tree

8 files changed

+1664
-15
lines changed

8 files changed

+1664
-15
lines changed

Makefile

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ check: license lint gokart test ## Check project integrity
105105

106106
.PHONY: clean-test-apps
107107
clean-test-apps:
108-
kubectl delete -f deploy/test-apps
108+
kubectl delete --ignore-not-found -f deploy/test-apps
109109
helm -n test-gslb uninstall frontend
110110

111111
# see: https://dev4devs.com/2019/05/04/operator-framework-how-to-debug-golang-operator-projects/
@@ -264,9 +264,17 @@ deploy-grafana:
264264
helm repo add grafana https://grafana.github.io/helm-charts
265265
helm repo update
266266
helm -n k8gb upgrade -i grafana grafana/grafana -f deploy/grafana/values.yaml \
267-
--wait --timeout=2m30s \
267+
--wait --timeout=4m \
268+
--version=6.38.6 \
268269
--kube-context=k3d-$(CLUSTER_NAME)1
269270
kubectl --context k3d-$(CLUSTER_NAME)1 apply -f deploy/grafana/dashboard-cm.yaml -n k8gb
271+
mkdir grafana/dashboards/ || true
272+
cat grafana/controller-resources-metrics.json | sed 's/$${DS_PROMETHEUS}/Prometheus/g' > grafana/dashboards/controller-resources-metrics.json
273+
cat grafana/controller-runtime-metrics.json | sed 's/$${DS_PROMETHEUS}/Prometheus/g' > grafana/dashboards/controller-runtime-metrics.json
274+
cat grafana/custom-metrics/pretty-custom-metrics-dashboard.json | sed 's/$${DS_PROMETHEUS}/Prometheus/g' > grafana/dashboards/pretty-custom-metrics-dashboard.json
275+
kubectl --context k3d-$(CLUSTER_NAME)1 -n k8gb create cm -n k8gb k8gb-dashboards --from-file=./grafana/dashboards/ --dry-run=client -oyaml | kubectl apply --context k3d-$(CLUSTER_NAME)1 -f -
276+
kubectl --context k3d-$(CLUSTER_NAME)1 -n k8gb label cm k8gb-dashboards grafana_dashboard=true --overwrite
277+
rm -rf grafana/dashboards/
270278
@echo -e "\nGrafana is listening on http://localhost:3000\n"
271279
@echo -e "🖖 credentials are admin:admin\n"
272280

@@ -275,7 +283,8 @@ deploy-grafana:
275283
uninstall-grafana:
276284
@echo -e "\n$(YELLOW)Local cluster $(CYAN)$(CLUSTER_GSLB1)$(NC)"
277285
@echo -e "\n$(YELLOW)uninstall grafana $(NC)"
278-
kubectl --context k3d-$(CLUSTER_NAME)1 delete -f deploy/grafana/dashboard-cm.yaml -n k8gb
286+
kubectl --context k3d-$(CLUSTER_NAME)1 delete --ignore-not-found -f deploy/grafana/dashboard-cm.yaml -n k8gb
287+
kubectl --context k3d-$(CLUSTER_NAME)1 delete cm --ignore-not-found -n k8gb k8gb-dashboards
279288
helm uninstall grafana -n k8gb --kube-context=k3d-$(CLUSTER_NAME)1
280289

281290
.PHONY: dns-tools
@@ -309,7 +318,7 @@ ensure-cluster-size:
309318

310319
.PHONY: goreleaser
311320
goreleaser:
312-
go install github.com/goreleaser/[email protected]
321+
command -v goreleaser &> /dev/null || go install github.com/goreleaser/[email protected]
313322

314323
.PHONY: release-images
315324
release-images: goreleaser
@@ -572,7 +581,7 @@ define deploy-prometheus
572581
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts ;\
573582
helm repo update ;\
574583
helm -n k8gb upgrade -i prometheus prometheus-community/prometheus -f deploy/prometheus/values.yaml \
575-
--version 14.2.0 \
584+
--version 15.14.0 \
576585
--wait --timeout=2m0s \
577586
--kube-context=k3d-$1
578587
endef

PROJECT

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
domain: absa.oss
2-
layout: go.kubebuilder.io/v2
2+
layout:
3+
- go.kubebuilder.io/v3
4+
plugins:
5+
grafana.kubebuilder.io/v1-alpha: {}
6+
manifests.sdk.operatorframework.io/v2: {}
7+
scorecard.sdk.operatorframework.io/v2: {}
38
projectName: k8gb
49
repo: github.com/k8gb-io/k8gb
510
resources:
611
- group: k8gb
712
kind: Gslb
813
version: v1beta1
914
version: "3"
10-
plugins:
11-
manifests.sdk.operatorframework.io/v2: {}
12-
scorecard.sdk.operatorframework.io/v2: {}

deploy/grafana/values.yaml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,11 @@ datasources:
1212
datasources.yaml:
1313
apiVersion: 1
1414
datasources:
15-
# use this proxied datasource for single cluster deployment
16-
# - name: Prometheus
17-
# type: prometheus
18-
# url: http://prometheus-server.k8gb.svc.cluster.local:9090
19-
# access: proxy
20-
# isDefault: true
15+
- name: Prometheus
16+
type: prometheus
17+
url: http://k3d-test-gslb1-agent-0:30090
18+
access: proxy
19+
isDefault: true
2120
- name: Prometheus-cluster1
2221
type: prometheus
2322
url: http://localhost:9080
@@ -45,3 +44,7 @@ dashboards:
4544
k8s-node-exporter-full:
4645
# Node Exporter Full https://grafana.com/grafana/dashboards/1860
4746
url: https://grafana.com/api/dashboards/1860/revisions/23/download
47+
rbac:
48+
pspEnabled: false
49+
testFramework:
50+
enabled: false

grafana/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## Sample Grafana Dashboards
2+
3+
This directory contains semi-generated dashboards for Grafana. It's using kubebuilder's
4+
plugin introduced in [pr #2858](https://github.com/kubernetes-sigs/kubebuilder/pull/2858).
5+
6+
In order to modify the custom metrics, change the config in [`custom-metrics/config.yaml`](./custom-metrics/config.yaml) and in project root run:
7+
8+
```bash
9+
kubebuilder edit --plugins grafana.kubebuilder.io/v1-alpha
10+
```

0 commit comments

Comments
 (0)