Grafana 初始化配置挂载出来

    1. kind: Deployment
    2. apiVersion: apps/v1
    3. metadata:
    4. name: grafana
    5. namespace: kubesphere-monitoring-system
    6. labels:
    7. app.kubernetes.io/component: grafana
    8. app.kubernetes.io/name: grafana
    9. app.kubernetes.io/part-of: kube-prometheus
    10. app.kubernetes.io/version: 7.4.3
    11. annotations:
    12. deployment.kubernetes.io/revision: '30'
    13. kubectl.kubernetes.io/last-applied-configuration: >
    14. {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"grafana","app.kubernetes.io/name":"grafana","app.kubernetes.io/part-of":"kube-prometheus","app.kubernetes.io/version":"7.4.3"},"name":"grafana","namespace":"kubesphere-monitoring-system"},"spec":{"replicas":1,"selector":{"matchLabels":{"app.kubernetes.io/component":"grafana","app.kubernetes.io/name":"grafana","app.kubernetes.io/part-of":"kube-prometheus"}},"template":{"metadata":{"annotations":{"checksum/grafana-datasources":"bff02b6fd55e414ce7cf08a5ea2a85e3"},"labels":{"app.kubernetes.io/component":"grafana","app.kubernetes.io/name":"grafana","app.kubernetes.io/part-of":"kube-prometheus","app.kubernetes.io/version":"7.4.3"}},"spec":{"containers":[{"env":[],"image":"hw-harbor.ur.com.cn/grafana/grafana:7.4.3","name":"grafana","ports":[{"containerPort":3000,"name":"http"}],"readinessProbe":{"httpGet":{"path":"/api/health","port":"http"}},"resources":{"limits":{"cpu":"200m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"volumeMounts":[{"mountPath":"/var/lib/grafana","name":"grafana-storage","readOnly":false},{"mountPath":"/etc/grafana/provisioning/datasources","name":"grafana-datasources","readOnly":false},{"mountPath":"/etc/grafana/provisioning/dashboards","name":"grafana-dashboards","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/apiserver","name":"grafana-dashboard-apiserver","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/cluster-total","name":"grafana-dashboard-cluster-total","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/controller-manager","name":"grafana-dashboard-controller-manager","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/k8s-resources-cluster","name":"grafana-dashboard-k8s-resources-cluster","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/k8s-resources-namespace","name":"grafana-dashboard-k8s-resources-namespace","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/k8s-resources-node","name":"grafana-dashboard-k8s-resources-node","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/k8s-resources-pod","name":"grafana-dashboard-k8s-resources-pod","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/k8s-resources-workload","name":"grafana-dashboard-k8s-resources-workload","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/k8s-resources-workloads-namespace","name":"grafana-dashboard-k8s-resources-workloads-namespace","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/kubelet","name":"grafana-dashboard-kubelet","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/namespace-by-pod","name":"grafana-dashboard-namespace-by-pod","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/namespace-by-workload","name":"grafana-dashboard-namespace-by-workload","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/node-cluster-rsrc-use","name":"grafana-dashboard-node-cluster-rsrc-use","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/node-rsrc-use","name":"grafana-dashboard-node-rsrc-use","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/nodes","name":"grafana-dashboard-nodes","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/persistentvolumesusage","name":"grafana-dashboard-persistentvolumesusage","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/pod-total","name":"grafana-dashboard-pod-total","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/prometheus-remote-write","name":"grafana-dashboard-prometheus-remote-write","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/prometheus","name":"grafana-dashboard-prometheus","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/proxy","name":"grafana-dashboard-proxy","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/scheduler","name":"grafana-dashboard-scheduler","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/statefulset","name":"grafana-dashboard-statefulset","readOnly":false},{"mountPath":"/grafana-dashboard-definitions/0/workload-total","name":"grafana-dashboard-workload-total","readOnly":false}]}],"nodeSelector":{"beta.kubernetes.io/os":"linux"},"securityContext":{"fsGroup":65534,"runAsNonRoot":true,"runAsUser":65534},"serviceAccountName":"grafana","volumes":[{"name":"grafana-storage","persistentVolumeClaim":{"claimName":"csi-nas"}},{"name":"grafana-datasources","secret":{"secretName":"grafana-datasources"}},{"configMap":{"name":"grafana-dashboards"},"name":"grafana-dashboards"},{"configMap":{"name":"grafana-dashboard-apiserver"},"name":"grafana-dashboard-apiserver"},{"configMap":{"name":"grafana-dashboard-cluster-total"},"name":"grafana-dashboard-cluster-total"},{"configMap":{"name":"grafana-dashboard-controller-manager"},"name":"grafana-dashboard-controller-manager"},{"configMap":{"name":"grafana-dashboard-k8s-resources-cluster"},"name":"grafana-dashboard-k8s-resources-cluster"},{"configMap":{"name":"grafana-dashboard-k8s-resources-namespace"},"name":"grafana-dashboard-k8s-resources-namespace"},{"configMap":{"name":"grafana-dashboard-k8s-resources-node"},"name":"grafana-dashboard-k8s-resources-node"},{"configMap":{"name":"grafana-dashboard-k8s-resources-pod"},"name":"grafana-dashboard-k8s-resources-pod"},{"configMap":{"name":"grafana-dashboard-k8s-resources-workload"},"name":"grafana-dashboard-k8s-resources-workload"},{"configMap":{"name":"grafana-dashboard-k8s-resources-workloads-namespace"},"name":"grafana-dashboard-k8s-resources-workloads-namespace"},{"configMap":{"name":"grafana-dashboard-kubelet"},"name":"grafana-dashboard-kubelet"},{"configMap":{"name":"grafana-dashboard-namespace-by-pod"},"name":"grafana-dashboard-namespace-by-pod"},{"configMap":{"name":"grafana-dashboard-namespace-by-workload"},"name":"grafana-dashboard-namespace-by-workload"},{"configMap":{"name":"grafana-dashboard-node-cluster-rsrc-use"},"name":"grafana-dashboard-node-cluster-rsrc-use"},{"configMap":{"name":"grafana-dashboard-node-rsrc-use"},"name":"grafana-dashboard-node-rsrc-use"},{"configMap":{"name":"grafana-dashboard-nodes"},"name":"grafana-dashboard-nodes"},{"configMap":{"name":"grafana-dashboard-persistentvolumesusage"},"name":"grafana-dashboard-persistentvolumesusage"},{"configMap":{"name":"grafana-dashboard-pod-total"},"name":"grafana-dashboard-pod-total"},{"configMap":{"name":"grafana-dashboard-prometheus-remote-write"},"name":"grafana-dashboard-prometheus-remote-write"},{"configMap":{"name":"grafana-dashboard-prometheus"},"name":"grafana-dashboard-prometheus"},{"configMap":{"name":"grafana-dashboard-proxy"},"name":"grafana-dashboard-proxy"},{"configMap":{"name":"grafana-dashboard-scheduler"},"name":"grafana-dashboard-scheduler"},{"configMap":{"name":"grafana-dashboard-statefulset"},"name":"grafana-dashboard-statefulset"},{"configMap":{"name":"grafana-dashboard-workload-total"},"name":"grafana-dashboard-workload-total"}]}}}}
    15. spec:
    16. replicas: 1
    17. selector:
    18. matchLabels:
    19. app.kubernetes.io/component: grafana
    20. app.kubernetes.io/name: grafana
    21. app.kubernetes.io/part-of: kube-prometheus
    22. template:
    23. metadata:
    24. creationTimestamp: null
    25. labels:
    26. app.kubernetes.io/component: grafana
    27. app.kubernetes.io/name: grafana
    28. app.kubernetes.io/part-of: kube-prometheus
    29. app.kubernetes.io/version: 7.5.4
    30. pod-template-hash: 65b64c79c6
    31. annotations:
    32. checksum/grafana-datasources: bff02b6fd55e414ce7cf08a5ea2a85e3
    33. kubesphere.io/restartedAt: '2022-09-28T05:39:39.838Z'
    34. logging.kubesphere.io/logsidecar-config: '{}'
    35. spec:
    36. volumes:
    37. - name: grafana-storage
    38. persistentVolumeClaim:
    39. claimName: grafana-storage
    40. - name: grafana-datasources
    41. secret:
    42. secretName: grafana-datasources
    43. defaultMode: 420
    44. - name: grafana-dashboards
    45. configMap:
    46. name: grafana-dashboards
    47. defaultMode: 420
    48. - name: grafana-dashboard-apiserver
    49. configMap:
    50. name: grafana-dashboard-apiserver
    51. defaultMode: 420
    52. - name: grafana-dashboard-cluster-total
    53. configMap:
    54. name: grafana-dashboard-cluster-total
    55. defaultMode: 420
    56. - name: grafana-dashboard-controller-manager
    57. configMap:
    58. name: grafana-dashboard-controller-manager
    59. defaultMode: 420
    60. - name: grafana-dashboard-k8s-resources-cluster
    61. configMap:
    62. name: grafana-dashboard-k8s-resources-cluster
    63. defaultMode: 420
    64. - name: grafana-dashboard-k8s-resources-namespace
    65. configMap:
    66. name: grafana-dashboard-k8s-resources-namespace
    67. defaultMode: 420
    68. - name: grafana-dashboard-k8s-resources-node
    69. configMap:
    70. name: grafana-dashboard-k8s-resources-node
    71. defaultMode: 420
    72. - name: grafana-dashboard-k8s-resources-pod
    73. configMap:
    74. name: grafana-dashboard-k8s-resources-pod
    75. defaultMode: 420
    76. - name: grafana-dashboard-k8s-resources-workload
    77. configMap:
    78. name: grafana-dashboard-k8s-resources-workload
    79. defaultMode: 420
    80. - name: grafana-dashboard-k8s-resources-workloads-namespace
    81. configMap:
    82. name: grafana-dashboard-k8s-resources-workloads-namespace
    83. defaultMode: 420
    84. - name: grafana-dashboard-kubelet
    85. configMap:
    86. name: grafana-dashboard-kubelet
    87. defaultMode: 420
    88. - name: grafana-dashboard-namespace-by-pod
    89. configMap:
    90. name: grafana-dashboard-namespace-by-pod
    91. defaultMode: 420
    92. - name: grafana-dashboard-namespace-by-workload
    93. configMap:
    94. name: grafana-dashboard-namespace-by-workload
    95. defaultMode: 420
    96. - name: grafana-dashboard-node-cluster-rsrc-use
    97. configMap:
    98. name: grafana-dashboard-node-cluster-rsrc-use
    99. defaultMode: 420
    100. - name: grafana-dashboard-node-rsrc-use
    101. configMap:
    102. name: grafana-dashboard-node-rsrc-use
    103. defaultMode: 420
    104. - name: grafana-dashboard-nodes
    105. configMap:
    106. name: grafana-dashboard-nodes
    107. defaultMode: 420
    108. - name: grafana-dashboard-persistentvolumesusage
    109. configMap:
    110. name: grafana-dashboard-persistentvolumesusage
    111. defaultMode: 420
    112. - name: grafana-dashboard-pod-total
    113. configMap:
    114. name: grafana-dashboard-pod-total
    115. defaultMode: 420
    116. - name: grafana-dashboard-prometheus-remote-write
    117. configMap:
    118. name: grafana-dashboard-prometheus-remote-write
    119. defaultMode: 420
    120. - name: grafana-dashboard-prometheus
    121. configMap:
    122. name: grafana-dashboard-prometheus
    123. defaultMode: 420
    124. - name: grafana-dashboard-proxy
    125. configMap:
    126. name: grafana-dashboard-proxy
    127. defaultMode: 420
    128. - name: grafana-dashboard-scheduler
    129. configMap:
    130. name: grafana-dashboard-scheduler
    131. defaultMode: 420
    132. - name: grafana-dashboard-statefulset
    133. configMap:
    134. name: grafana-dashboard-statefulset
    135. defaultMode: 420
    136. - name: grafana-dashboard-workload-total
    137. configMap:
    138. name: grafana-dashboard-workload-total
    139. defaultMode: 420
    140. - name: grafana-defaults-ini
    141. configMap:
    142. name: grafana-defaults-ini
    143. defaultMode: 420
    144. containers:
    145. - name: grafana
    146. image: 'bytest-harbor.ur.com.cn/grafana/grafana:7.4.3'
    147. ports:
    148. - name: http
    149. containerPort: 3000
    150. protocol: TCP
    151. resources:
    152. limits:
    153. cpu: 400m
    154. memory: 200Mi
    155. requests:
    156. cpu: 100m
    157. memory: 100Mi
    158. volumeMounts:
    159. - name: grafana-storage
    160. mountPath: /var/lib/grafana
    161. - name: grafana-datasources
    162. mountPath: /etc/grafana/provisioning/datasources
    163. - name: grafana-dashboards
    164. mountPath: /etc/grafana/provisioning/dashboards
    165. - name: grafana-dashboard-apiserver
    166. mountPath: /grafana-dashboard-definitions/0/apiserver
    167. - name: grafana-dashboard-cluster-total
    168. mountPath: /grafana-dashboard-definitions/0/cluster-total
    169. - name: grafana-dashboard-controller-manager
    170. mountPath: /grafana-dashboard-definitions/0/controller-manager
    171. - name: grafana-dashboard-k8s-resources-cluster
    172. mountPath: /grafana-dashboard-definitions/0/k8s-resources-cluster
    173. - name: grafana-dashboard-k8s-resources-namespace
    174. mountPath: /grafana-dashboard-definitions/0/k8s-resources-namespace
    175. - name: grafana-dashboard-k8s-resources-node
    176. mountPath: /grafana-dashboard-definitions/0/k8s-resources-node
    177. - name: grafana-dashboard-k8s-resources-pod
    178. mountPath: /grafana-dashboard-definitions/0/k8s-resources-pod
    179. - name: grafana-dashboard-k8s-resources-workload
    180. mountPath: /grafana-dashboard-definitions/0/k8s-resources-workload
    181. - name: grafana-dashboard-k8s-resources-workloads-namespace
    182. mountPath: >-
    183. /grafana-dashboard-definitions/0/k8s-resources-workloads-namespace
    184. - name: grafana-dashboard-kubelet
    185. mountPath: /grafana-dashboard-definitions/0/kubelet
    186. - name: grafana-dashboard-namespace-by-pod
    187. mountPath: /grafana-dashboard-definitions/0/namespace-by-pod
    188. - name: grafana-dashboard-namespace-by-workload
    189. mountPath: /grafana-dashboard-definitions/0/namespace-by-workload
    190. - name: grafana-dashboard-node-cluster-rsrc-use
    191. mountPath: /grafana-dashboard-definitions/0/node-cluster-rsrc-use
    192. - name: grafana-dashboard-node-rsrc-use
    193. mountPath: /grafana-dashboard-definitions/0/node-rsrc-use
    194. - name: grafana-dashboard-nodes
    195. mountPath: /grafana-dashboard-definitions/0/nodes
    196. - name: grafana-dashboard-persistentvolumesusage
    197. mountPath: /grafana-dashboard-definitions/0/persistentvolumesusage
    198. - name: grafana-dashboard-pod-total
    199. mountPath: /grafana-dashboard-definitions/0/pod-total
    200. - name: grafana-dashboard-prometheus-remote-write
    201. mountPath: /grafana-dashboard-definitions/0/prometheus-remote-write
    202. - name: grafana-dashboard-prometheus
    203. mountPath: /grafana-dashboard-definitions/0/prometheus
    204. - name: grafana-dashboard-proxy
    205. mountPath: /grafana-dashboard-definitions/0/proxy
    206. - name: grafana-dashboard-scheduler
    207. mountPath: /grafana-dashboard-definitions/0/scheduler
    208. - name: grafana-dashboard-statefulset
    209. mountPath: /grafana-dashboard-definitions/0/statefulset
    210. - name: grafana-dashboard-workload-total
    211. mountPath: /grafana-dashboard-definitions/0/workload-total
    212. - name: grafana-defaults-ini
    213. mountPath: /usr/share/grafana/conf
    214. readinessProbe:
    215. httpGet:
    216. path: /api/health
    217. port: http
    218. scheme: HTTP
    219. timeoutSeconds: 1
    220. periodSeconds: 10
    221. successThreshold: 1
    222. failureThreshold: 3
    223. terminationMessagePath: /dev/termination-log
    224. terminationMessagePolicy: File
    225. imagePullPolicy: IfNotPresent
    226. restartPolicy: Always
    227. terminationGracePeriodSeconds: 30
    228. dnsPolicy: ClusterFirst
    229. nodeSelector:
    230. beta.kubernetes.io/os: linux
    231. serviceAccountName: grafana
    232. serviceAccount: grafana
    233. securityContext:
    234. runAsUser: 65534
    235. runAsNonRoot: true
    236. fsGroup: 65534
    237. schedulerName: default-scheduler
    238. strategy:
    239. type: RollingUpdate
    240. rollingUpdate:
    241. maxUnavailable: 25%
    242. maxSurge: 25%
    243. revisionHistoryLimit: 10
    244. progressDeadlineSeconds: 600

    kubesphere 模板配置
    image.png
    image.png

    Gitlab 添加应用
    填写回调地址:
    http://grafana-k8s-test.ur.com.cn/login/gitlab
    image.png

    修改Grafana配置,启用Gitlab认证
    默认配置文件里添加回调地址

    1. [server]
    2. protocol = http
    3. root_url = http://grafana-k8s-test.ur.com.cn
    1. #################################### GitLab Auth #########################
    2. [auth.gitlab]
    3. enabled = true
    4. allow_sign_up = true
    5. client_id = 73ccfdd396582e5f0f2dd2b0dc72c1a5b52bdeea814dc2e01a9e1ca06db91387
    6. client_secret = b0ec91792c29ff74dbd70280c0968b2b293288a71db8c9d113b8964ecb465cca
    7. scopes = api
    8. auth_url = http://192.168.13.78/oauth/authorize
    9. token_url = http://192.168.13.78/oauth/token
    10. api_url = http://192.168.13.78/api/v4
    11. allowed_domains =
    12. allowed_groups =
    13. [server]
    14. protocol = http
    15. root_url = http://grafana-k8s-test.ur.com.cn

    image.png