From d315d375e10e21416f01aa991d5da96ecf6e4c50 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 10 Oct 2024 06:02:04 +0000 Subject: [PATCH] grafana init --- .../monitoring/grafana/1_configure/init.yaml | 96 ++++++ .../monitoring/grafana/1_configure/pvc.yaml | 20 ++ .../monitoring/grafana/2_config/default.yaml | 28 ++ .../monitoring/grafana/3_apply/deploy.yaml | 131 ++++++++ .../monitoring/grafana/3_apply/ing.yaml | 23 ++ on-premise/monitoring/grafana/deploy.yaml | 304 ++++++++++++++++++ 6 files changed, 602 insertions(+) create mode 100644 on-premise/monitoring/grafana/1_configure/init.yaml create mode 100644 on-premise/monitoring/grafana/1_configure/pvc.yaml create mode 100644 on-premise/monitoring/grafana/2_config/default.yaml create mode 100644 on-premise/monitoring/grafana/3_apply/deploy.yaml create mode 100644 on-premise/monitoring/grafana/3_apply/ing.yaml create mode 100644 on-premise/monitoring/grafana/deploy.yaml diff --git a/on-premise/monitoring/grafana/1_configure/init.yaml b/on-premise/monitoring/grafana/1_configure/init.yaml new file mode 100644 index 0000000..bef0e13 --- /dev/null +++ b/on-premise/monitoring/grafana/1_configure/init.yaml @@ -0,0 +1,96 @@ +--- +# Source: grafana/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: false +metadata: + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm + name: grafana + namespace: monitoring +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm + name: grafana-clusterrole +rules: [] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: grafana-clusterrolebinding + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +subjects: + - kind: ServiceAccount + name: grafana + namespace: monitoring +roleRef: + kind: ClusterRole + name: grafana-clusterrole + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +rules: [] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: grafana +subjects: +- kind: ServiceAccount + name: grafana + namespace: monitoring +--- +apiVersion: v1 +kind: Secret +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + + admin-user: "YWRtaW4=" + admin-password: "aWppbmMxMjMh" + diff --git a/on-premise/monitoring/grafana/1_configure/pvc.yaml b/on-premise/monitoring/grafana/1_configure/pvc.yaml new file mode 100644 index 0000000..6e98f14 --- /dev/null +++ b/on-premise/monitoring/grafana/1_configure/pvc.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + finalizers: + - kubernetes.io/pvc-protection +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "10Gi" + storageClassName: "sc-monitoring" + diff --git a/on-premise/monitoring/grafana/2_config/default.yaml b/on-premise/monitoring/grafana/2_config/default.yaml new file mode 100644 index 0000000..376e883 --- /dev/null +++ b/on-premise/monitoring/grafana/2_config/default.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +data: + + grafana.ini: | + [analytics] + check_for_updates = true + [grafana_net] + url = https://grafana.net + [log] + mode = console + [paths] + data = /var/lib/grafana/ + logs = /var/log/grafana + plugins = /var/lib/grafana/plugins + provisioning = /etc/grafana/provisioning + [server] + domain = '' + diff --git a/on-premise/monitoring/grafana/3_apply/deploy.yaml b/on-premise/monitoring/grafana/3_apply/deploy.yaml new file mode 100644 index 0000000..a35f640 --- /dev/null +++ b/on-premise/monitoring/grafana/3_apply/deploy.yaml @@ -0,0 +1,131 @@ +apiVersion: v1 +kind: Service +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: service + port: 80 + protocol: TCP + targetPort: 3000 + selector: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + annotations: + checksum/config: 0e9cbd0ea8e24e32f7dfca5bab17a2ba05652642f0a09a4882833ae88e4cc4a3 + checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24 + checksum/secret: 1a4c44a6f2d345d1f498d12433d997816b70e31086de700f7c153b4803f27a7a + kubectl.kubernetes.io/default-container: grafana + spec: + + serviceAccountName: grafana + automountServiceAccountToken: true + securityContext: + fsGroup: 472 + runAsGroup: 472 + runAsNonRoot: true + runAsUser: 472 + enableServiceLinks: true + containers: + - name: grafana + image: "reg.inje-private.com/nnd002/grafana/grafana:11.2.1" + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + volumeMounts: + - name: config + mountPath: "/etc/grafana/grafana.ini" + subPath: grafana.ini + - name: storage + mountPath: "/var/lib/grafana" + ports: + - name: grafana + containerPort: 3000 + protocol: TCP + - name: gossip-tcp + containerPort: 9094 + protocol: TCP + - name: gossip-udp + containerPort: 9094 + protocol: UDP + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: GF_SECURITY_ADMIN_USER + valueFrom: + secretKeyRef: + name: grafana + key: admin-user + - name: GF_SECURITY_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: grafana + key: admin-password + - name: GF_PATHS_DATA + value: /var/lib/grafana/ + - name: GF_PATHS_LOGS + value: /var/log/grafana + - name: GF_PATHS_PLUGINS + value: /var/lib/grafana/plugins + - name: GF_PATHS_PROVISIONING + value: /etc/grafana/provisioning + livenessProbe: + failureThreshold: 10 + httpGet: + path: /api/health + port: 3000 + initialDelaySeconds: 60 + timeoutSeconds: 30 + readinessProbe: + httpGet: + path: /api/health + port: 3000 + volumes: + - name: config + configMap: + name: grafana + - name: storage + #emptyDir: {} + persistentVolumeClaim: + claimName: pvc-grafana diff --git a/on-premise/monitoring/grafana/3_apply/ing.yaml b/on-premise/monitoring/grafana/3_apply/ing.yaml new file mode 100644 index 0000000..65fda9b --- /dev/null +++ b/on-premise/monitoring/grafana/3_apply/ing.yaml @@ -0,0 +1,23 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ing-grafana + namespace: monitoring +spec: + ingressClassName: nginx + rules: + - host: grafana.inje-private.com + http: + paths: + - backend: + service: + name: grafana + port: + number: 80 + path: / + pathType: Prefix + tls: + - hosts: + - grafana.inje-private.com + secretName: grafana-ssl + diff --git a/on-premise/monitoring/grafana/deploy.yaml b/on-premise/monitoring/grafana/deploy.yaml new file mode 100644 index 0000000..8336228 --- /dev/null +++ b/on-premise/monitoring/grafana/deploy.yaml @@ -0,0 +1,304 @@ +--- +# Source: grafana/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: false +metadata: + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm + name: grafana + namespace: monitoring +--- +# Source: grafana/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + + admin-user: "YWRtaW4=" + admin-password: "aWppbmMxMjMh" + # ldap-toml: "" +--- +# Source: grafana/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +data: + + grafana.ini: | + [analytics] + check_for_updates = true + [grafana_net] + url = https://grafana.net + [log] + mode = console + [paths] + data = /var/lib/grafana/ + logs = /var/log/grafana + plugins = /var/lib/grafana/plugins + provisioning = /etc/grafana/provisioning + [server] + domain = '' +--- +# Source: grafana/templates/clusterrole.yaml +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm + name: grafana-clusterrole +rules: [] +--- +# Source: grafana/templates/clusterrolebinding.yaml +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: grafana-clusterrolebinding + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +subjects: + - kind: ServiceAccount + name: grafana + namespace: monitoring +roleRef: + kind: ClusterRole + name: grafana-clusterrole + apiGroup: rbac.authorization.k8s.io +--- +# Source: grafana/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +rules: [] +--- +# Source: grafana/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: grafana +subjects: +- kind: ServiceAccount + name: grafana + namespace: monitoring +--- +# Source: grafana/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: service + port: 80 + protocol: TCP + targetPort: 3000 + selector: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana +--- +# Source: grafana/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: grafana + namespace: monitoring + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + annotations: + checksum/config: 0e9cbd0ea8e24e32f7dfca5bab17a2ba05652642f0a09a4882833ae88e4cc4a3 + checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24 + checksum/secret: 1a4c44a6f2d345d1f498d12433d997816b70e31086de700f7c153b4803f27a7a + kubectl.kubernetes.io/default-container: grafana + spec: + + serviceAccountName: grafana + automountServiceAccountToken: true + securityContext: + fsGroup: 472 + runAsGroup: 472 + runAsNonRoot: true + runAsUser: 472 + enableServiceLinks: true + containers: + - name: grafana + image: "reg.inje-private.com/nnd002/grafana/grafana:11.2.1" + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + volumeMounts: + - name: config + mountPath: "/etc/grafana/grafana.ini" + subPath: grafana.ini + - name: storage + mountPath: "/var/lib/grafana" + ports: + - name: grafana + containerPort: 3000 + protocol: TCP + - name: gossip-tcp + containerPort: 9094 + protocol: TCP + - name: gossip-udp + containerPort: 9094 + protocol: UDP + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: GF_SECURITY_ADMIN_USER + valueFrom: + secretKeyRef: + name: grafana + key: admin-user + - name: GF_SECURITY_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: grafana + key: admin-password + - name: GF_PATHS_DATA + value: /var/lib/grafana/ + - name: GF_PATHS_LOGS + value: /var/log/grafana + - name: GF_PATHS_PLUGINS + value: /var/lib/grafana/plugins + - name: GF_PATHS_PROVISIONING + value: /etc/grafana/provisioning + livenessProbe: + failureThreshold: 10 + httpGet: + path: /api/health + port: 3000 + initialDelaySeconds: 60 + timeoutSeconds: 30 + readinessProbe: + httpGet: + path: /api/health + port: 3000 + volumes: + - name: config + configMap: + name: grafana + - name: storage + #emptyDir: {} +# persistentVolumeClaim: +# claimNmae: pvc-grafana +--- +# Source: grafana/templates/tests/test-serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm + name: grafana-test + namespace: monitoring + annotations: + "helm.sh/hook": test + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" +--- +# Source: grafana/templates/tests/test-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana-test + namespace: monitoring + annotations: + "helm.sh/hook": test + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" + labels: + helm.sh/chart: grafana-8.5.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "11.2.1" + app.kubernetes.io/managed-by: Helm +data: + run.sh: |- + @test "Test Health" { + url="http://grafana/api/health" + + code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^ HTTP/{print $2}') + [ "$code" == "200" ] + }