This commit is contained in:
2026-03-13 15:02:42 +00:00
parent 9ffc3d97a4
commit c306ff7e9b
9 changed files with 10272 additions and 0 deletions

16
app-of-apps/grafana.yaml Normal file
View File

@@ -0,0 +1,16 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: grafana
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
namespace: grafana
server: https://kubernetes.default.svc
project: default
source:
path: grafana
repoURL: http://gitea.gitea.svc.k8s.undercloud.local:3000/Undercloud/k8s-apps.git
targetRevision: HEAD

122
grafana/dashboards.yaml Normal file
View File

@@ -0,0 +1,122 @@
apiVersion: v1
kind: Secret
metadata:
name: grafana-admin-credentials
namespace: grafana
type: Opaque
stringData:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: change-this-now
---
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
name: grafana
namespace: grafana
labels:
dashboards: "grafana"
spec:
config:
log:
mode: "console"
security:
admin_user: admin
admin_password: change-this-now
auth:
disable_login_form: "false"
users:
viewers_can_edit: "false"
server:
root_url: "%(protocol)s://%(domain)s/"
deployment:
spec:
replicas: 1
template:
spec:
securityContext:
fsGroup: 472
containers:
- name: grafana
image: grafana/grafana:12.0.2
ports:
- containerPort: 3000
name: http
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 1000m
memory: 1Gi
readinessProbe:
httpGet:
path: /api/health
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /api/health
port: 3000
initialDelaySeconds: 30
periodSeconds: 20
service:
spec:
type: ClusterIP
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv6
- IPv4
ports:
- name: http
port: 3000
targetPort: 3000
persistentVolumeClaim:
metadata: {}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDatasource
metadata:
name: loki
namespace: grafana
spec:
instanceSelector:
matchLabels:
dashboards: "grafana"
datasource:
name: Loki
type: loki
access: proxy
url: http://loki.loki.svc.cluster.local:3100
isDefault: false
editable: true
jsonData:
maxLines: 1000
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDatasource
metadata:
name: victoriametrics
namespace: grafana
spec:
instanceSelector:
matchLabels:
dashboards: "grafana"
datasource:
name: VictoriaMetrics
type: prometheus
access: proxy
isDefault: true
editable: true
url: http://REPLACE_ME:8428
jsonData:
httpMethod: POST
prometheusType: Prometheus
prometheusVersion: 2.24.0
timeInterval: 30s

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,235 @@
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: grafana-operator-permissions
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- ""
resources:
- configmaps
- persistentvolumeclaims
- secrets
- serviceaccounts
- services
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- get
- list
- patch
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- grafana.integreatly.org
resources:
- grafanadashboards
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- grafana.integreatly.org
resources:
- grafanadashboards/finalizers
verbs:
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanadashboards/status
verbs:
- get
- patch
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanadatasources
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- grafana.integreatly.org
resources:
- grafanadatasources/finalizers
verbs:
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanadatasources/status
verbs:
- get
- patch
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanafolders
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- grafana.integreatly.org
resources:
- grafanafolders/finalizers
verbs:
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanafolders/status
verbs:
- get
- patch
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanas
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- grafana.integreatly.org
resources:
- grafanas/finalizers
verbs:
- update
- apiGroups:
- grafana.integreatly.org
resources:
- grafanas/status
verbs:
- get
- patch
- update
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- route.openshift.io
resources:
- routes
verbs:
- create
- delete
- get
- list
- update
- watch
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: grafana-operator-permissions
subjects:
- kind: ServiceAccount
name: grafana-operator-controller-manager
namespace: monitoring
roleRef:
kind: ClusterRole
name: grafana-operator-permissions
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: grafana-operator-controller-manager
namespace: monitoring
automountServiceAccountToken: true

View File

@@ -0,0 +1,92 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana-operator-controller-manager
namespace: grafana
labels:
app: grafana-operator-controller-manager
spec:
replicas: 1
selector:
matchLabels:
control-plane: grafana-operator-controller-manager
strategy: {}
template:
metadata:
labels:
control-plane: grafana-operator-controller-manager
spec:
containers:
#- args:
# - --secure-listen-address=0.0.0.0:8443
# - --upstream=http://127.0.0.1:8080/
# - --logtostderr=true
# - --v=10
# image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
# name: kube-rbac-proxy
# ports:
# - containerPort: 8443
# name: https
# protocol: TCP
# resources: {}
- args:
- --health-probe-bind-address=:8081
- --metrics-bind-address=[::1]:8080
- --leader-elect
image: ghcr.io/grafana-operator/grafana-operator:v5.0.0-rc1
imagePullPolicy: Always
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
name: manager
ports:
- containerPort: 8080
name: http
protocol: TCP
env:
- name: WATCH_NAMESPACE
#valueFrom:
# fieldRef:
# fieldPath: metadata.namespace
value: ""
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
resources:
limits:
cpu: 200m
memory: 100Mi
requests:
cpu: 100m
memory: 20Mi
securityContext:
allowPrivilegeEscalation: false
securityContext:
runAsNonRoot: true
serviceAccountName: grafana-operator-controller-manager
terminationGracePeriodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: grafana-operator
namespace: grafana
spec:
ipFamilies:
- IPv6
- IPv4
ipFamilyPolicy: PreferDualStack
ports:
- name: web
port: 8080
protocol: TCP
targetPort: http
selector:
control-plane: grafana-operator-controller-manager

View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: grafana-service
namespace: grafana
spec:
selector:
app.kubernetes.io/name: grafana # ajuste si différent
ports:
- name: http
port: 3000
targetPort: 3000
type: ClusterIP
ipFamilyPolicy: PreferDualStack

16
grafana/grafana.yaml Normal file
View File

@@ -0,0 +1,16 @@
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
name: grafana
namespace: monitoring
labels:
dashboards: "grafana"
spec:
config:
log:
mode: "console"
auth:
disable_login_form: "false"
security:
admin_user: admin
admin_password: 4IsTheMindKiller

25
grafana/ingress.yaml Normal file
View File

@@ -0,0 +1,25 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana
namespace: grafana
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- grafana.apps.undercloud.dev
secretName: grafana-tls
rules:
- host: grafana.apps.undercloud.dev
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana-service
port:
number: 3000

7
grafana/namespace.yaml Normal file
View File

@@ -0,0 +1,7 @@
apiVersion: v1
kind: Namespace
metadata:
name: grafana
labels:
undercloud.dev/cert: "ca"
#prometheus: prometheus