Refactor the first version
diff --git a/charts/README.md b/charts/README.md
new file mode 100644
index 0000000..9b5505e
--- /dev/null
+++ b/charts/README.md
@@ -0,0 +1,20 @@
+# Apache Dubbo Admin
+
+A Helm chart for Dubbo Admin The ops and reference implementation for Apache Dubbo.
+
+## Prerequisites
+
+* Kubernetes v1.14+
+* Helm v3+
+
+### Install
+
+```bash
+helm install [RELEASE_NAME] dubbo-admin --namespace dubbo-system --create-namespace
+```
+
+### Uninstall
+
+```bash
+helm delete [RELEASE_NAME] --namespace dubbo-system
+```
\ No newline at end of file
diff --git a/charts/admin-stack/README.md b/charts/admin-stack/README.md
deleted file mode 100644
index 4439046..0000000
--- a/charts/admin-stack/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-> **Security Notice: Please remember to change the `admin.check.signSecret`, `admin.root.user.name` and `admin.root.user.password` value before you deploy to production environment.**
-
-## 1. Project download to local
-```
-git clone https://github.com/apache/dubbo-admin.git
-```
-
-## 2. Switch project directory
-```
-cd dubbo-admin/deploy/charts/dubbo-admin
-```
-
-## 3. Install dubbo-admin
-```
-helm install dubbo-admin -f values.yaml .
-```
diff --git a/charts/admin-stack/charts/dubbo-admin/.helmignore b/charts/admin-stack/charts/dubbo-admin/.helmignore
deleted file mode 100644
index 0e8a0eb..0000000
--- a/charts/admin-stack/charts/dubbo-admin/.helmignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Patterns to ignore when building packages.
-# This supports shell glob matching, relative path matching, and
-# negation (prefixed with !). Only one pattern per line.
-.DS_Store
-# Common VCS dirs
-.git/
-.gitignore
-.bzr/
-.bzrignore
-.hg/
-.hgignore
-.svn/
-# Common backup files
-*.swp
-*.bak
-*.tmp
-*.orig
-*~
-# Various IDEs
-.project
-.idea/
-*.tmproj
-.vscode/
diff --git a/charts/admin-stack/charts/dubbo-admin/Chart.yaml b/charts/admin-stack/charts/dubbo-admin/Chart.yaml
deleted file mode 100644
index dff5d7f..0000000
--- a/charts/admin-stack/charts/dubbo-admin/Chart.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v2
-appVersion: ""
-name: dubbo-admin
-description: Distributed application monitoring and management platform.
-home: https://cn.dubbo.apache.org
-kubeVersion: '>=1.20.0-0'
-maintainers:
-  - email: dev@dubbo.apache.org
-    name: dubbo
-sources:
-  - https://github.com/apache/dubbo
-type: application
-version: 0.5.0
\ No newline at end of file
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/NOTES.txt b/charts/admin-stack/charts/dubbo-admin/templates/NOTES.txt
deleted file mode 100644
index e69de29..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/NOTES.txt
+++ /dev/null
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/_helpers.tpl b/charts/admin-stack/charts/dubbo-admin/templates/_helpers.tpl
deleted file mode 100644
index 538e61c..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/_helpers.tpl
+++ /dev/null
@@ -1,103 +0,0 @@
-{{/*
-Create chart name and version as used by the chart label.
-*/}}
-{{- define "dubbo-admin.chart" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-
-{{/* vim: set filetype=mustache: */}}
-{{/*
-Expand the name of the chart.
-*/}}
-{{- define "dubbo-admin.name" -}}
-{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-
-{{/*
-Create a default fully qualified app name.
-We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
-If release name contains chart name it will be used as a full name.
-*/}}
-{{- define "dubbo-admin.fullname" -}}
-{{- if .Values.fullnameOverride }}
-{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
-{{- else }}
-{{- $name := default .Chart.Name .Values.nameOverride }}
-{{- if contains $name .Release.Name }}
-{{- .Release.Name | trunc 63 | trimSuffix "-" }}
-{{- else }}
-{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
-{{- end }}
-{{- end }}
-{{- end }}
-
-{{- define "dubbo-admin.labels" -}}
-app.kubernetes.io/name: {{ include "dubbo-admin.name" . }}
-helm.sh/chart: {{ include "dubbo-admin.chart" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end -}}
-
-
-{{/*
-Allow the release namespace to be overridden for multi-namespace deployments in combined charts
-*/}}
-{{- define "dubbo-admin.namespace" -}}
-{{- if .Values.namespaceOverride }}
-{{- .Values.namespaceOverride }}
-{{- else }}
-{{- .Release.Namespace }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Labels to use on sts.spec.selector.matchLabels and svc.spec.selector
-*/}}
-{{- define "dubbo-admin.matchLabels" -}}
-app.kubernetes.io/name: {{ include "dubbo-admin.name" . }}
-{{- end -}}
-
-
-{{- define "dubbo-admin.selectorLabels" -}}
-app.kubernetes.io/name: {{ include "dubbo-admin.name" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-{{- end }}
-
-
-{{/*
-Create the name of the service account to use
-*/}}
-{{- define "dubbo-admin.serviceAccountName" -}}
-{{- if .Values.serviceAccount.enabled }}
-{{- default (include "dubbo-admin.fullname" .) .Values.serviceAccount.name }}
-{{- else }}
-{{- default "default" .Values.serviceAccount.name }}
-{{- end }}
-{{- end }}
-
-
-{{- define "dubbo-admin.serviceAccountNameTest" -}}
-{{- if .Values.serviceAccount.enabled }}
-{{- default (print (include "dubbo-admin.fullname" .) "-test") .Values.serviceAccount.nameTest }}
-{{- else }}
-{{- default "default" .Values.serviceAccount.nameTest }}
-{{- end }}
-{{- end }}
-
-{{- define "dubbo-admin.rbac.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
-{{- print "rbac.authorization.k8s.io/v1" }}
-{{- else }}
-{{- print "rbac.authorization.k8s.io/v1beta1" }}
-{{- end }}
-{{- end }}
-
-{{- define "dubbo-admin.podDisruptionBudget.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
-{{- print "policy/v1" }}
-{{- else }}
-{{- print "policy/v1beta1" }}
-{{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/clusterrole.yaml b/charts/admin-stack/charts/dubbo-admin/templates/clusterrole.yaml
deleted file mode 100644
index 1d666a5..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/clusterrole.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-{{- if and .Values.rbac.enabled }}
-apiVersion: {{ include "dubbo-admin.rbac.apiVersion" . }}
-kind: ClusterRole
-metadata:
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  name: {{ include "dubbo-admin.fullname" . }}-clusterrole
-rules:
-  - apiGroups: # "" indicates the core API group
-      - ""
-    resources:
-      - configmaps
-      - secrets
-      - pods
-    verbs:
-      - get
-      - watch
-      - list
-  - apiGroups:
-      - "extensions"
-    resources:
-      - ingresses
-    verbs:
-      - get
-  - apiGroups:
-      - "apps"
-    resources:
-      - configmaps
-      - deployments
-      - services
-    verbs:
-      - get
-      - list
-      - watch
-  {{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/clusterrolebinding.yaml b/charts/admin-stack/charts/dubbo-admin/templates/clusterrolebinding.yaml
deleted file mode 100644
index d0e99d9..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/clusterrolebinding.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-{{- if and .Values.rbac.enabled }}
-apiVersion: {{ include "dubbo-admin.rbac.apiVersion" . }}
-kind: ClusterRoleBinding
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-clusterrolebinding
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-subjects:
-  - kind: ServiceAccount
-    name: {{ include "dubbo-admin.serviceAccountName" . }}
-    namespace: {{ include "dubbo-admin.namespace" . }}
-roleRef:
-  kind: ClusterRole
-  name: {{ include "dubbo-admin.fullname" . }}-clusterrole
-  {{- end }}
-  apiGroup: rbac.authorization.k8s.io
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/ingress.yaml b/charts/admin-stack/charts/dubbo-admin/templates/ingress.yaml
deleted file mode 100644
index 9fe91f0..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/ingress.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressApiIsStable := eq (include "dubbo-admin.ingress.isStable" .) "true" -}}
-{{- $ingressSupportsIngressClassName := eq (include "dubbo-admin.ingress.supportsIngressClassName" .) "true" -}}
-{{- $ingressSupportsPathType := eq (include "dubbo-admin.ingress.supportsPathType" .) "true" -}}
-{{- $fullName := include "dubbo-admin.fullname" . -}}
-{{- $servicePort := .Values.service.port -}}
-{{- $ingressPath := .Values.ingress.path -}}
-{{- $ingressPathType := .Values.ingress.pathType -}}
-{{- $extraPaths := .Values.ingress.extraPaths -}}
-apiVersion: {{ include "dubbo-admin.ingress.apiVersion" . }}
-kind: Ingress
-metadata:
-  name: {{ $fullName }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-    {{- with .Values.ingress.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.ingress.annotations }}
-  annotations:
-    {{- range $key, $value := . }}
-    {{ $key }}: {{ tpl $value $ | quote }}
-    {{- end }}
-  {{- end }}
-spec:
-  {{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }}
-  ingressClassName: {{ .Values.ingress.ingressClassName }}
-  {{- end -}}
-  {{- with .Values.ingress.tls }}
-  tls:
-    {{- tpl (toYaml .) $ | nindent 4 }}
-  {{- end }}
-  rules:
-  {{- if .Values.ingress.hosts  }}
-  {{- range .Values.ingress.hosts }}
-    - host: {{ tpl . $ }}
-      http:
-        paths:
-          {{- with $extraPaths }}
-          {{- toYaml . | nindent 10 }}
-          {{- end }}
-          - path: {{ $ingressPath }}
-            {{- if $ingressSupportsPathType }}
-            pathType: {{ $ingressPathType }}
-            {{- end }}
-            backend:
-              {{- if $ingressApiIsStable }}
-              service:
-                name: {{ $fullName }}
-                port:
-                  number: {{ $servicePort }}
-              {{- else }}
-              serviceName: {{ $fullName }}
-              servicePort: {{ $servicePort }}
-              {{- end }}
-  {{- end }}
-  {{- else }}
-    - http:
-        paths:
-          - backend:
-              {{- if $ingressApiIsStable }}
-              service:
-                name: {{ $fullName }}
-                port:
-                  number: {{ $servicePort }}
-              {{- else }}
-              serviceName: {{ $fullName }}
-              servicePort: {{ $servicePort }}
-              {{- end }}
-            {{- with $ingressPath }}
-            path: {{ . }}
-            {{- end }}
-            {{- if $ingressSupportsPathType }}
-            pathType: {{ $ingressPathType }}
-            {{- end }}
-  {{- end -}}
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/networkpolicy.yaml b/charts/admin-stack/charts/dubbo-admin/templates/networkpolicy.yaml
deleted file mode 100644
index 70f3e8a..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/networkpolicy.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-{{- if .Values.networkPolicy.enabled }}
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-    {{- with .Values.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  policyTypes:
-    {{- if .Values.networkPolicy.ingress }}
-    - Ingress
-    {{- end }}
-    {{- if .Values.networkPolicy.egress.enabled }}
-    - Egress
-    {{- end }}
-  podSelector:
-    matchLabels:
-      {{- include "dubbo-admin.selectorLabels" . | nindent 6 }}
-
-  {{- if .Values.networkPolicy.egress.enabled }}
-  egress:
-    - ports:
-        {{ .Values.networkPolicy.egress.ports | toJson }}
-  {{- end }}
-  {{- if .Values.networkPolicy.ingress }}
-  ingress:
-    - ports:
-        - port: {{ .Values.service.targetPort }}
-      {{- if not .Values.networkPolicy.allowExternal }}
-      from:
-        - podSelector:
-            matchLabels:
-              {{ include "dubbo-admin.fullname" . }}-client: "true"
-        {{- with .Values.networkPolicy.explicitNamespacesSelector }}
-        - namespaceSelector:
-            {{- toYaml . | nindent 12 }}
-        {{- end }}
-        - podSelector:
-            matchLabels:
-              {{- include "dubbo-admin.labels" . | nindent 14 }}
-              role: read
-      {{- end }}
-  {{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/pdb.yaml b/charts/admin-stack/charts/dubbo-admin/templates/pdb.yaml
deleted file mode 100644
index 86809fe..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/pdb.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: {{ include "dubbo-admin.podDisruptionBudget.apiVersion" . }}
-kind: PodDisruptionBudget
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-    {{- with .Values.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-spec:
-  {{- with .Values.podDisruptionBudget.minAvailable }}
-  minAvailable: {{ . }}
-  {{- end }}
-  {{- with .Values.podDisruptionBudget.maxUnavailable }}
-  maxUnavailable: {{ . }}
-  {{- end }}
-  selector:
-    matchLabels:
-      {{- include "dubbo-admin.selectorLabels" . | nindent 6 }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/psp.yaml b/charts/admin-stack/charts/dubbo-admin/templates/psp.yaml
deleted file mode 100644
index e2b830f..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/psp.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-{{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
-apiVersion: policy/v1beta1
-kind: PodSecurityPolicy
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-spec:
-  privileged: false
-  allowPrivilegeEscalation: false
-  requiredDropCapabilities:
-    - ALL
-  volumes:
-    - 'configMap'
-    - 'emptyDir'
-    - 'projected'
-    - 'csi'
-    - 'secret'
-    - 'downwardAPI'
-    - 'persistentVolumeClaim'
-  hostNetwork: false
-  hostIPC: false
-  hostPID: false
-  runAsUser:
-    rule: 'RunAsAny'
-  seLinux:
-    rule: 'RunAsAny'
-  supplementalGroups:
-    rule: 'MustRunAs'
-    ranges:
-      - min: 1
-        max: 65535
-  fsGroup:
-    rule: 'MustRunAs'
-    ranges:
-      - min: 1
-        max: 65535
-  readOnlyRootFilesystem: false
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/pvc.yaml b/charts/admin-stack/charts/dubbo-admin/templates/pvc.yaml
deleted file mode 100644
index 2af3e1a..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/pvc.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-{{- if and .Values.persistence.enabled }}
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.persistence.annotations  }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  accessModes:
-    {{- range .Values.persistence.accessModes }}
-    - {{ . | quote }}
-    {{- end }}
-  resources:
-    requests:
-      storage: {{ .Values.persistence.size | quote }}
-  {{- with .Values.persistence.storageClass }}
-  storageClassName: {{ . }}
-  {{- end }}
-  {{- with .Values.persistence.selectorLabels }}
-  selector:
-    matchLabels:
-    {{- toYaml . | nindent 6 }}
-  {{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/role.yaml b/charts/admin-stack/charts/dubbo-admin/templates/role.yaml
deleted file mode 100644
index b096ba5..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/role.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-{{- if and .Values.rbac.enabled -}}
-apiVersion: {{ include "dubbo-admin.rbac.apiVersion" . }}
-kind: Role
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.labels }}
-  {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-{{- if .Values.rbac.pspEnabled }}
-rules:
-  {{- if .Values.rbac.pspEnabled }}
-  - apiGroups:
-      - extensions
-    resources:
-      - podsecuritypolicies
-    verbs:
-      - use
-    resourceNames:
-      - {{ include "dubbo-admin.fullname" . }}
-  {{- end }}
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/rolebinding.yaml b/charts/admin-stack/charts/dubbo-admin/templates/rolebinding.yaml
deleted file mode 100644
index 357f935..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/rolebinding.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-{{- if .Values.rbac.enabled }}
-apiVersion: {{ include "dubbo-admin.rbac.apiVersion" . }}
-kind: RoleBinding
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.labels }}
-  {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: {{ include "dubbo-admin.fullname" . }}
-subjects:
-  - kind: ServiceAccount
-    name: {{ include "dubbo-admin.serviceAccountName" . }}
-    namespace: {{ include "dubbo-admin.namespace" . }}
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/secret.yaml b/charts/admin-stack/charts/dubbo-admin/templates/secret.yaml
deleted file mode 100644
index fcad8fe..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/secret.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Secret
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-secret
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.labels }}
-  {{- toYaml . | nindent 4 }}
-  {{- end }}
-type: Opaque
-data:
-  application.properties: {{ tpl (toYaml .Values.properties) . | b64enc }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/serviceaccount.yaml b/charts/admin-stack/charts/dubbo-admin/templates/serviceaccount.yaml
deleted file mode 100644
index 3ccaf61..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/serviceaccount.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-{{- if .Values.serviceAccount.enabled }}
-{{- $admin := . -}}
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-    {{- with .Values.serviceAccount.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.serviceAccount.annotations }}
-  annotations:
-    {{- tpl (toYaml . | nindent 4) $admin }}
-  {{- end }}
-  name: {{ include "dubbo-admin.serviceAccountName" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  {{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/svc-headless.yaml b/charts/admin-stack/charts/dubbo-admin/templates/svc-headless.yaml
deleted file mode 100644
index 0a5c086..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/svc-headless.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-{{- if .Values.service.enabled }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-headless
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.labels }}
-  {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
-  type: {{ .Values.service.type }}
-  clusterIP: None
-  {{- else if eq .Values.service.type "LoadBalancer" }}
-  type: {{ .Values.service.type }}
-  {{- with .Values.service.loadBalancerIP }}
-  loadBalancerIP: {{ . }}
-  {{- end }}
-  {{- with .Values.service.loadBalancerSourceRanges }}
-  loadBalancerSourceRanges:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- else }}
-  type: {{ .Values.service.type }}
-  {{- end }}
-  {{- with .Values.service.externalIPs }}
-  externalIPs:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  ports:
-    - name: {{ .Values.service.portName }}
-      port: {{ .Values.service.port }}
-      protocol: {{ .Values.service.protocol }}
-      targetPort: {{ .Values.service.targetPort }}
-        {{- with .Values.service.appProtocol }}
-      appProtocol: {{ . }}
-        {{- end }}
-        {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
-      nodePort: {{ .Values.service.nodePort }}
-        {{- end }}
-  selector:
-      {{- include "dubbo-admin.selectorLabels" . | nindent 4 }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/svc.yaml b/charts/admin-stack/charts/dubbo-admin/templates/svc.yaml
deleted file mode 100644
index 941c917..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/svc.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-{{- if .Values.service.enabled }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  {{- with .Values.labels }}
-  {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
-  type: {{ .Values.service.type }}
-  {{- with .Values.service.clusterIP }}
-  clusterIP: {{ . }}
-  {{- end }}
-  {{- else if eq .Values.service.type "LoadBalancer" }}
-  type: {{ .Values.service.type }}
-  {{- with .Values.service.loadBalancerIP }}
-  loadBalancerIP: {{ . }}
-  {{- end }}
-  {{- with .Values.service.loadBalancerSourceRanges }}
-  loadBalancerSourceRanges:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- else }}
-  type: {{ .Values.service.type }}
-  {{- end }}
-  {{- with .Values.service.externalIPs }}
-  externalIPs:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  ports:
-    - name: {{ .Values.service.portName }}
-      port: {{ .Values.service.port }}
-      protocol: {{ .Values.service.protocol }}
-      targetPort: {{ .Values.service.targetPort }}
-        {{- with .Values.service.appProtocol }}
-      appProtocol: {{ . }}
-        {{- end }}
-        {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
-      nodePort: {{ .Values.service.nodePort }}
-        {{- end }}
-  selector:
-      {{- include "dubbo-admin.selectorLabels" . | nindent 4 }}
-  {{- end }}
-
-
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-role.yaml b/charts/admin-stack/charts/dubbo-admin/templates/tests/test-role.yaml
deleted file mode 100644
index 5a59823..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-role.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.tests.enabled .Values.rbac.pspEnabled }}
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-test
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  annotations:
-    "helm.sh/hook": test-success
-    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-rules:
-  - apiGroups:
-      - extensions
-    resources:
-      - podsecuritypolicies
-    verbs:
-      - use
-    resourceNames:
-      - {{ include "dubbo-admin.fullname" . }}-test
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-rolebinding.yaml b/charts/admin-stack/charts/dubbo-admin/templates/tests/test-rolebinding.yaml
deleted file mode 100644
index 7bb20eb..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-rolebinding.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.tests.enabled .Values.rbac.pspEnabled }}
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-test
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  annotations:
-    "helm.sh/hook": test-success
-    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: {{ include "dubbo-admin.fullname" . }}-test
-subjects:
-  - kind: ServiceAccount
-    name: {{ include "dubbo-admin.serviceAccountNameTest" . }}
-    namespace: {{ include "dubbo-admin.namespace" . }}
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-secret.yaml b/charts/admin-stack/charts/dubbo-admin/templates/tests/test-secret.yaml
deleted file mode 100644
index 7ee857b..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-secret.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: Secret
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-secret-test
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  annotations:
-    "helm.sh/hook": test-success
-    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-type: Opaque
-data:
-  application.properties: {{ tpl (toYaml .Values.properties) . | b64enc }}-test
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-serviceaccount.yaml b/charts/admin-stack/charts/dubbo-admin/templates/tests/test-serviceaccount.yaml
deleted file mode 100644
index 0590e0b..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/tests/test-serviceaccount.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-{{- if and .Values.tests.enabled .Values.serviceAccount.enabled }}
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  name: {{ include "dubbo-admin.serviceAccountNameTest" . }}
-  namespace: {{ include "dubbo-admin.namespace" . }}
-  annotations:
-    "helm.sh/hook": test-success
-    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/tests/test.yaml b/charts/admin-stack/charts/dubbo-admin/templates/tests/test.yaml
deleted file mode 100644
index 1cf6b64..0000000
--- a/charts/admin-stack/charts/dubbo-admin/templates/tests/test.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-{{- if .Values.tests.enabled }}
-{{- $root := . }}
-apiVersion: v1
-kind: Pod
-metadata:
-  name: {{ include "dubbo-admin.fullname" . }}-test
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-  annotations:
-    "helm.sh/hook": test-success
-    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
-  namespace: {{ include "dubbo-admin.namespace" . }}
-spec:
-  serviceAccountName: {{ include "dubbo-admin.serviceAccountName" . }}
-  {{- with .Values.tests.securityContext }}
-  securityContext:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }}
-  imagePullSecrets:
-    {{- include "dubbo-admin.imagePullSecrets" (dict "root" $root "imagePullSecrets" .Values.image.pullSecrets) | nindent 4 }}
-  {{- end }}
-  {{- with .Values.nodeSelector }}
-  nodeSelector:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- with .Values.affinity }}
-  affinity:
-    {{- tpl (toYaml .) $root | nindent 4 }}
-  {{- end }}
-  {{- with .Values.tolerations }}
-  tolerations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  containers:
-    - name: {{ .Release.Name }}-test
-      image: "{{ .Values.tests.image}}"
-      imagePullPolicy: "{{ .Values.tests.imagePullPolicy}}"
-      command: ["wget"]
-      volumeMounts:
-        - mountPath: /tests
-          name: tests
-          readOnly: true
-  volumes:
-    - name: tests
-      secret:
-        secretName: {{ include "dubbo-admin.fullname" . }}-secret
-  restartPolicy: Never
-{{- end }}
diff --git a/charts/admin-stack/charts/dubbo-admin/values.yaml b/charts/admin-stack/charts/dubbo-admin/values.yaml
deleted file mode 100644
index cf9ff5e..0000000
--- a/charts/admin-stack/charts/dubbo-admin/values.yaml
+++ /dev/null
@@ -1,413 +0,0 @@
-image:
-  registry: docker.io
-  ##  E.g registry.k8s.io
-  ##
-  repository: apache/dubbo-admin
-  ##
-  ##
-  tag: "0.6.0"
-  ##
-  ##
-  debug: false
-  ##
-  ## Specify a imagePullPolicy
-  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
-  ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
-  ##
-  pullPolicy: IfNotPresent
-  ##
-  ## Optionally specify an array of imagePullSecrets.
-  ## Secrets must be manually created in the namespace.
-  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
-  ## Can be templated.
-  ##
-  pullSecrets: []
-  #   - RegisterKeySecretName
-
-replicas: 1
-
-## global.imageRegistry Global Docker image registry
-## global.imagePullSecrets Global Docker registry secret names as an array
-## global.storageClass Global StorageClass for Persistent Volume(s)
-##
-global:
-  imageRegistry: ""
-  ## E.g.
-  ## imagePullSecrets:
-  ##   - myRegistryKeySecretName
-  ##
-  imagePullSecrets: []
-
-
-rbac:
-  # Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
-  enabled: true
-  pspEnabled: true
-
-
-## serviceAccount
-serviceAccount:
-  enabled: true
-  ## ## ServiceAccount name.
-  name: {}
-  ## ServiceAccount nameTests.
-  nameTest: {}
-  ## ServiceAccount labels.
-  labels: {}
-  ## ServiceAccount annotations.
-  annotations: {}
-
-
-# -- Optional array of imagePullSecrets containing private registry credentials
-## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
-imagePullSecrets: []
-# - name: secretName
-
-
-## Create HorizontalPodAutoscaler object for deployment type
-autoscaling:
-  enabled: false
-  minReplicas: 1
-  maxReplicas: 5
-  targetCPU: "60"
-  targetMemory: ""
-  behavior: {}
-
-
-## See `kubectl explain deployment.spec.strategy` for more
-## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
-deploymentStrategy:
-  type: RollingUpdate
-
-
-## @param readinessProbe.enabled Enable readinessProbe on containers
-readinessProbe:
-  httpGet:
-    path: /
-    port: 8080
-  ## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
-  initialDelaySeconds: 60
-  ## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
-  timeoutSeconds: 30
-  ## @param readinessProbe.periodSeconds Period seconds for readinessProbe
-  periodSeconds: 10
-  ## @param readinessProbe.successThreshold Success threshold for readinessProbe
-  successThreshold: 1
-  ## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
-  failureThreshold: 3
-  ## @param readinessProbe.probeCommandTimeout Probe command timeout for readinessProbe
-  probeCommandTimeout: 1
-
-
-## @param livenessProbe.enabled Enable livenessProbe on containers
-livenessProbe:
-  httpGet:
-    path: /
-    port: 8080
-  ## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
-  initialDelaySeconds: 60
-  ## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
-  timeoutSeconds: 30
-  ## @param livenessProbe.periodSeconds Period seconds for livenessProbe
-  periodSeconds: 10
-  ## @param livenessProbe.successThreshold Success threshold for livenessProbe
-  successThreshold: 1
-  ## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
-  failureThreshold: 3
-  ## @param livenessProbe.probeCommandTimeout Probe command timeout for livenessProbe
-  probeCommandTimeout: 1
-
-
-## @param startupProbe.enabled Enable startupProbe on containers
-startupProbe:
-  httpGet:
-    path: /
-    port: 8080
-  ## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
-  initialDelaySeconds: 60
-  ## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
-  timeoutSeconds: 30
-  ## @param startupProbe.periodSeconds Period seconds for startupProbe
-  periodSeconds: 10
-  ## @param startupProbe.successThreshold Success threshold for startupProbe
-  successThreshold: 1
-  ## @param startupProbe.failureThreshold Failure threshold for startupProbe
-  failureThreshold: 3
-
-
-tests:
-  enabled: true
-  image: busybox
-  tag: ""
-  imagePullPolicy: IfNotPresent
-  securityContext: {}
-
-
-## configmap mounts
-ConfigmapMounts: []
-  # - name: configMap-file
-  #   mountPath: /config
-  #   configMap: configMap-file
-  #   readOnly: true
-
-
-## secret mounts
-SecretMounts:
-#  - name: secret-file
-#    secret:
-#      secretName: secret-file
-
-
-## emptyDir mounts
-EmptyDirMounts: []
-# - name: ""
-#   mountPath: /
-
-
-## Expose the dubbo-admin service to be accessed from outside the cluster (LoadBalancer service).
-## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
-## ref: http://kubernetes.io/docs/user-guide/services/
-##
-service:
-  name: http
-  ##
-  ## Service name.
-  ##
-  enabled: true
-  ##
-  ## Service enable true or false.
-  ##
-  type: ClusterIP
-  ##
-  ## Service type.
-  ##
-  clusterIP: ""
-  ##
-  ## Service clusterIP.
-  ##
-  loadBalancerIP: ""
-  ##
-  ## Service loadBalancerIP.
-  ##
-  loadBalancerSourceRanges: ""
-  ##
-  ## Service loadBalancerSourceRanges.
-  ##
-  externalIPs: ""
-  ##
-  ## Service externalIPs.
-  ##
-  nodePort: ""
-  ##
-  ## Service nodePort.
-  ##
-  path: /
-  ##
-  ## Service path.
-  ##
-  port: 38080
-  ##
-  ## Service port.
-  ##
-  targetPort: http
-  ##
-  ## Service targetPort.
-  ##
-  containerPort: 8080
-  ##
-  ## Service containerPort.
-  ##
-  protocol: TCP
-  ##
-  ## Service protocol.
-  ##
-  ##
-  labels: {}
-  ##
-  ## Service labels.
-  ##
-  annotations: {}
-  ##
-  ## Service annotations. Can be templated.
-  ##
-  portName: service
-  ##
-  ## Service portName.
-  ##
-  appProtocol: ""
-  ##
-  ## Service appProtocol.
-  ##
-
-
-ingress:
-  enabled: false
-  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
-  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
-  # ingressClassName: nginx
-  # Values can be templated
-  annotations: {}
-  # kubernetes.io/ingress.class: nginx
-  # kubernetes.io/tls-acme: "true"
-  labels: {}
-  path: /
-  ##
-  ##
-  # pathType is only for k8s >= 1.1=
-  pathType: Prefix
-  ##
-  ##
-  hosts:
-    - chart-example.local
-  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
-  extraPaths: []
-  # - path: /*
-  #   backend:
-  #     serviceName: ssl-redirect
-  #     servicePort: use-annotation
-  ## Or for k8s > 1.19
-  # - path: /*
-  #   pathType: Prefix
-  #   backend:
-  #     service:
-  #       name: ssl-redirect
-  #       port:
-  #         name: use-annotation
-  ##
-  ##
-  tls: []
-  #  - secretName: chart-example-tls
-  #    hosts:
-  #      - chart-example.local
-
-
-resources: {}
-#  limits:
-#    cpu: 100m
-#    memory: 128Mi
-#  requests:
-#    cpu: 100m
-#    memory: 128Mi
-
-
-## Enable persistence using Persistent Volume Claims
-## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
-##
-persistence:
-  enabled: false
-  storageClass: ""
-  accessModes:
-    - ReadWriteOnce
-  size: 10Gi
-  ## Name of an existing PVC. Can be templated.
-  ClaimName: {}
-  ##
-  ## persistence emptyDir
-  emptyDir: {}
-
-
-securityContext:
-  runAsNonRoot: false
-  runAsUser: 0
-
-
-## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request
-lifecycleHooks: {}
-  # postStart:
-  #   exec:
-  #     command: []
-  # preStop:
-  #   exec:
-  #     command: []
-
-
-## See `kubectl explain poddisruptionbudget.spec` for more
-## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
-podDisruptionBudget:
-  enabled: false
-  minAvailable: 1
-  # maxUnavailable: 1
-
-
-networkPolicy:
-  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
-  ##
-  enabled: false
-  ## @param networkPolicy.allowExternal Don't require client label for connections
-  ## The Policy model to apply. When set to false, only pods with the correct
-  ## client label will have network access to  dubbo-admin port defined.
-  ## When true, dubbo-admin will accept connections from any source
-  ## (with the correct destination port).
-  ##
-  ingress: true
-  ## @param networkPolicy.ingress When true enables the creation
-  ## an ingress network policy
-  ##
-  ##
-  ##
-  ##
-  egress:
-    ## @param networkPolicy.egress.enabled When enabled, an egress network policy will be
-    ## created allowing dubbo-admin to connect to external data sources from kubernetes cluster.
-    enabled: false
-    ##
-    ## @param networkPolicy.egress.ports Add individual ports to be allowed by the egress
-    ports: []
-      ## Add ports to the egress by specifying - port: <port number>
-      ## E.X.
-      ## ports:
-      ## - port: 80
-      ## - port: 443
-
-
-
-
-##  @param Dubbo-admin Default Enable Configuration
-properties:
-  admin.registry.address: zookeeper://zookeeper:2181
-  admin.config-center: zookeeper://zookeeper:2181
-  admin.metadata-report.address: zookeeper://zookeeper:2181
-  admin.root.user.name: root
-  admin.root.user.password: root
-  admin.check.sessionTimeoutMilli: 3600000
-  server.compression.enabled: true
-  server.compression.mime-types: text/css,text/javascript,application/javascript
-  server.compression.min-response-size: 10240
-  admin.check.tokenTimeoutMilli: 3600000
-  admin.check.signSecret: 86295dd0c4ef69a1036b0b0c15158d77
-  dubbo.application.name: dubbo-admin
-  dubbo.registry.address: ${admin.registry.address}
-  spring.datasource.url: jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
-  spring.datasource.username: sa
-  spring.datasource.password:
-  mybatis-plus.global-config.db-config.id-type: none
-  dubbo.application.logger: slf4j
-
-  # nacos config, add parameters to url like username=nacos&password=nacos
-  # admin.registry.address: nacos://nacos:8848?group=DEFAULT_GROUP&namespace=public
-  # admin.config-center: nacos://nacos:8848?group=dubbo
-  # admin.metadata-report.address: nacos://nacos:8848?group=dubbo
-
-
-  # group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
-  # admin.registry.group: dubbo
-  # admin.config-center.group: dubbo
-  # admin.metadata-report.group: dubbo
-
-  # namespace used by nacos.(Deprecated it is recommended to use URL to add parameters,will be removed in the future)
-  # admin.registry.namespace: public
-  # admin.config-center.namespace: public
-  # admin.metadata-report.namespace: public
-
-  # apollo config
-  # admin.config-center: apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
-  # admin.apollo.token: e16e5cd903fd0c97a116c873b448544b9d086de9
-  # admin.apollo.appId: test
-  # admin.apollo.env: dev
-  # admin.apollo.cluster: default
-
-  # mysql
-  # spring.datasource.driver-class-name: com.mysql.jdbc.Driver
-  # spring.datasource.url: jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
-  # spring.datasource.username: root
-  # spring.datasource.password: mysql
\ No newline at end of file
diff --git a/charts/admin-stack/charts/grafana/.helmignore b/charts/admin-stack/charts/grafana/.helmignore
deleted file mode 100644
index 8cade13..0000000
--- a/charts/admin-stack/charts/grafana/.helmignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Patterns to ignore when building packages.
-# This supports shell glob matching, relative path matching, and
-# negation (prefixed with !). Only one pattern per line.
-.DS_Store
-# Common VCS dirs
-.git/
-.gitignore
-.bzr/
-.bzrignore
-.hg/
-.hgignore
-.svn/
-# Common backup files
-*.swp
-*.bak
-*.tmp
-*~
-# Various IDEs
-.vscode
-.project
-.idea/
-*.tmproj
-OWNERS
diff --git a/charts/admin-stack/charts/grafana/Chart.yaml b/charts/admin-stack/charts/grafana/Chart.yaml
deleted file mode 100644
index 9886092..0000000
--- a/charts/admin-stack/charts/grafana/Chart.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v2
-appVersion: 9.3.6
-description: The leading tool for querying and visualizing time series and metrics.
-home: https://grafana.net
-kubeVersion: ^1.8.0-0
-maintainers:
-  - email: dev@dubbo.apache.org
-    name: dubbo
-name: grafana
-sources:
-  - https://github.com/grafana/grafana
-type: application
-version: 6.50.6
diff --git a/charts/admin-stack/charts/grafana/dashboards/custom-dashboard.json b/charts/admin-stack/charts/grafana/dashboards/custom-dashboard.json
deleted file mode 100644
index f14ec32..0000000
--- a/charts/admin-stack/charts/grafana/dashboards/custom-dashboard.json
+++ /dev/null
@@ -1,4358 +0,0 @@
-{
-  "annotations": {
-    "list": [
-      {
-        "builtIn": 1,
-        "datasource": {
-          "type": "datasource",
-          "uid": "grafana"
-        },
-        "enable": true,
-        "hide": true,
-        "iconColor": "rgba(0, 211, 255, 1)",
-        "name": "Annotations & Alerts",
-        "target": {
-          "limit": 100,
-          "matchAny": false,
-          "tags": [],
-          "type": "dashboard"
-        },
-        "type": "dashboard"
-      }
-    ]
-  },
-  "editable": true,
-  "fiscalYearStartMonth": 0,
-  "graphTooltip": 0,
-  "id": 9,
-  "links": [
-    {
-      "asDropdown": false,
-      "icon": "external link",
-      "includeVars": false,
-      "keepTime": false,
-      "tags": [],
-      "targetBlank": false,
-      "title": "New link",
-      "tooltip": "",
-      "type": "dashboards",
-      "url": ""
-    }
-  ],
-  "liveNow": false,
-  "panels": [
-    {
-      "collapsed": true,
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 0
-      },
-      "id": 57,
-      "panels": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "application_name",
-          "gridPos": {
-            "h": 3,
-            "w": 24,
-            "x": 0,
-            "y": 17
-          },
-          "id": 42,
-          "options": {
-            "code": {
-              "language": "html",
-              "showLineNumbers": false,
-              "showMiniMap": false
-            },
-            "content": "<div style=\"text-align:center;font-size:30px\">${application_name}</div>",
-            "mode": "html"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "builder",
-              "expr": "qps{application_name=\"$application_name\"}",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "application_name",
-          "type": "text"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              },
-              "unit": "percentunit"
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 4,
-            "x": 0,
-            "y": 20
-          },
-          "id": 47,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "sum(dubbo_provider_requests_succeed_total{application_name=\"$application_name\"}) / sum(dubbo_provider_requests_total{application_name=\"$application_name\"})",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_success_rate",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 0
-                  }
-                ]
-              },
-              "unit": "percentunit"
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 4,
-            "x": 4,
-            "y": 20
-          },
-          "id": 53,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "sum(dubbo_provider_requests_failed_total{application_name=\"$application_name\"}) OR on() vector(0)  / sum(dubbo_provider_requests_total{application_name=\"$application_name\"})",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_failed_rate",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "fixedColor": "red",
-                "mode": "fixed"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 4,
-            "x": 8,
-            "y": 20
-          },
-          "id": 48,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "text": {},
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "sum(dubbo_provider_requests_failed_total{application_name=\"$application_name\"}) OR on() vector(0)",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_error_total",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "fixedColor": "red",
-                "mode": "fixed"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 4,
-            "x": 12,
-            "y": 20
-          },
-          "id": 51,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "text": {},
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "sum(dubbo_provider_requests_timeout_total{application_name=\"$application_name\"}) OR on() vector(0)",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "timeout_total",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "fixedColor": "red",
-                "mode": "fixed"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 4,
-            "x": 16,
-            "y": 20
-          },
-          "id": 50,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "text": {},
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "sum(dubbo_provider_requests_limit_total{application_name=\"$application_name\"}) OR on() vector(0)",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "limit_total",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "fixedColor": "red",
-                "mode": "fixed"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 4,
-            "x": 20,
-            "y": 20
-          },
-          "id": 52,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "text": {},
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "sum(dubbo_provider_requests_unknown_total{application_name=\"$application_name\"})OR on() vector(0)",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "unknown_total",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              },
-              "unit": "s"
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 6,
-            "w": 12,
-            "x": 0,
-            "y": 25
-          },
-          "id": 54,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "max(dubbo_provider_rt_seconds_max{application_name=\"$application_name\"})",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "rt_max",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              },
-              "unit": "s"
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 6,
-            "w": 12,
-            "x": 12,
-            "y": 25
-          },
-          "id": 55,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "9.3.2",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "expr": "min(dubbo_provider_rt_seconds_min{application_name=\"$application_name\"})",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "rt_min",
-          "type": "stat"
-        }
-      ],
-      "title": "Dubbo Stat",
-      "type": "row"
-    },
-    {
-      "collapsed": false,
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 1
-      },
-      "id": 10,
-      "panels": [],
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "refId": "A"
-        }
-      ],
-      "title": "Provider Request",
-      "type": "row"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "axisSoftMin": 1,
-            "axisWidth": 0,
-            "barAlignment": 0,
-            "drawStyle": "line",
-            "fillOpacity": 15,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineStyle": {
-              "fill": "solid"
-            },
-            "lineWidth": 1,
-            "pointSize": 4,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          }
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 24,
-        "x": 0,
-        "y": 2
-      },
-      "id": 18,
-      "options": {
-        "legend": {
-          "calcs": [
-            "min",
-            "max"
-          ],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_provider_qps_seconds{application_name=\"$application_name\"}",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_qps",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "line",
-            "fillOpacity": 15,
-            "gradientMode": "none",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "decimals": 0,
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "none"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 6,
-        "w": 24,
-        "x": 0,
-        "y": 9
-      },
-      "id": 36,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "list",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "increase(dubbo_provider_requests_total{application_name=\"$application_name\"}[2m])",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_requests_total(2m)",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "line",
-            "fillOpacity": 19,
-            "gradientMode": "none",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          }
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 8,
-        "w": 12,
-        "x": 0,
-        "y": 15
-      },
-      "id": 32,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_requests_processing{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_requests_processing",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "line",
-            "fillOpacity": 18,
-            "gradientMode": "none",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "decimals": 0,
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "none"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 8,
-        "w": 12,
-        "x": 12,
-        "y": 15
-      },
-      "id": 33,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "increase(dubbo_provider_requests_succeed_total{application_name=\"$application_name\"}[2m])",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_requests_succeed(2m)",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "line",
-            "fillOpacity": 13,
-            "gradientMode": "none",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          }
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 23
-      },
-      "id": 38,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "list",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_provider_requests_total_aggregate{application_name=\"$application_name\"}",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_requests_total_aggregate",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "line",
-            "fillOpacity": 13,
-            "gradientMode": "none",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          }
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 23
-      },
-      "id": 60,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "list",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_requests_succeed_aggregate{application_name=\"$application_name\"}",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_requests_succeed_aggregate",
-      "type": "timeseries"
-    },
-    {
-      "collapsed": false,
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 30
-      },
-      "id": 44,
-      "panels": [],
-      "title": "Provider RT",
-      "type": "row"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 72,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 23,
-        "x": 0,
-        "y": 31
-      },
-      "id": 45,
-      "options": {
-        "legend": {
-          "calcs": [
-            "min",
-            "max"
-          ],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "increase(dubbo_provider_rt_seconds_sum{application_name=\"$application_name\"}[1m])",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_rt_sum(1m)",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 38
-      },
-      "id": 29,
-      "options": {
-        "colorMode": "value",
-        "graphMode": "area",
-        "justifyMode": "auto",
-        "orientation": "auto",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "textMode": "auto"
-      },
-      "pluginVersion": "9.3.2",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_min{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_rt_min",
-      "type": "stat"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 38
-      },
-      "id": 30,
-      "options": {
-        "colorMode": "value",
-        "graphMode": "area",
-        "justifyMode": "auto",
-        "orientation": "auto",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "textMode": "auto"
-      },
-      "pluginVersion": "9.3.2",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_max{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_rt_max",
-      "type": "stat"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 24,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 45
-      },
-      "id": 78,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_avg{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_rt_avg ",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 35,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "s"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 45
-      },
-      "id": 39,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "list",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_last{application_name=\"$application_name\"}",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_rt_last",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 34,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 52
-      },
-      "id": 40,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_p95{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": " provider_rt_p95",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 31,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": [
-          {
-            "__systemRef": "hideSeriesFrom",
-            "matcher": {
-              "id": "byNames",
-              "options": {
-                "mode": "exclude",
-                "names": [
-                  "org.apache.dubbo.samples.metrics.prometheus.api.DemoService.sayHello"
-                ],
-                "prefix": "All except:",
-                "readOnly": true
-              }
-            },
-            "properties": [
-              {
-                "id": "custom.hideFrom",
-                "value": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": true
-                }
-              }
-            ]
-          }
-        ]
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 52
-      },
-      "id": 35,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_p99{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "provider_rt_p99",
-      "type": "timeseries"
-    },
-    {
-      "collapsed": true,
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 59
-      },
-      "id": 59,
-      "panels": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 24,
-            "x": 0,
-            "y": 4
-          },
-          "id": 31,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_provider_requests_failed_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_requests_failed_total",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 0,
-            "y": 9
-          },
-          "id": 62,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_provider_requests_limit_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_requests_limit",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 12,
-            "y": 9
-          },
-          "id": 64,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_provider_requests_business_failed_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_requests_business_failed",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 0,
-            "y": 16
-          },
-          "id": 63,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_provider_requests_unknown_failed_total{application_name=\"$application_name\"}OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_requests_unknown_failed",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 12,
-            "y": 16
-          },
-          "id": 61,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_provider_requests_timeout_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "provider_requests_timeout",
-          "type": "timeseries"
-        }
-      ],
-      "title": "Provider Error",
-      "type": "row"
-    },
-    {
-      "collapsed": true,
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 60
-      },
-      "id": 12,
-      "panels": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "axisSoftMin": 1,
-                "axisWidth": 0,
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 15,
-                "gradientMode": "opacity",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineStyle": {
-                  "fill": "solid"
-                },
-                "lineWidth": 1,
-                "pointSize": 4,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": [
-              {
-                "__systemRef": "hideSeriesFrom",
-                "matcher": {
-                  "id": "byNames",
-                  "options": {
-                    "mode": "exclude",
-                    "names": [
-                      "org.apache.dubbo.samples.metrics.prometheus.api.DemoService.sayHello"
-                    ],
-                    "prefix": "All except:",
-                    "readOnly": true
-                  }
-                },
-                "properties": [
-                  {
-                    "id": "custom.hideFrom",
-                    "value": {
-                      "legend": false,
-                      "tooltip": false,
-                      "viz": true
-                    }
-                  }
-                ]
-              }
-            ]
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 24,
-            "x": 0,
-            "y": 35
-          },
-          "id": 65,
-          "options": {
-            "legend": {
-              "calcs": [
-                "min",
-                "max"
-              ],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_qps_seconds{application_name=\"$application_name\"}",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_qps",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 15,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "decimals": 0,
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              },
-              "unit": "none"
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 6,
-            "w": 24,
-            "x": 0,
-            "y": 42
-          },
-          "id": 66,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "list",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "increase(dubbo_consumer_requests_total{application_name=\"$application_name\"}[2m])",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_request_total(2m)",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 19,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 8,
-            "w": 12,
-            "x": 0,
-            "y": 48
-          },
-          "id": 67,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_processing{application_name=\"$application_name\"}",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_processing",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 18,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "decimals": 0,
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              },
-              "unit": "none"
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 8,
-            "w": 12,
-            "x": 12,
-            "y": 48
-          },
-          "id": 68,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "increase(dubbo_consumer_requests_succeed_total{application_name=\"$application_name\"}[2m])",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_succeed(2m)",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 13,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 0,
-            "y": 56
-          },
-          "id": 69,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "list",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_total_aggregate{application_name=\"$application_name\"}",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_total_aggregate",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 13,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 12,
-            "y": 56
-          },
-          "id": 70,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "list",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_succeed_aggregate{application_name=\"$application_name\"}",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_succeed_aggregate",
-          "type": "timeseries"
-        }
-      ],
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "refId": "A"
-        }
-      ],
-      "title": "Consumer Request",
-      "type": "row"
-    },
-    {
-      "collapsed": false,
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 61
-      },
-      "id": 72,
-      "panels": [],
-      "title": "Consumer RT",
-      "type": "row"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 72,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 23,
-        "x": 0,
-        "y": 62
-      },
-      "id": 75,
-      "options": {
-        "legend": {
-          "calcs": [
-            "min",
-            "max"
-          ],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "increase(dubbo_consumer_rt_seconds_sum{application_name=\"$application_name\"}[1m])",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_sum(1m)",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 69
-      },
-      "id": 76,
-      "options": {
-        "colorMode": "value",
-        "graphMode": "area",
-        "justifyMode": "auto",
-        "orientation": "auto",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "textMode": "auto"
-      },
-      "pluginVersion": "9.3.2",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "builder",
-          "exemplar": false,
-          "expr": "dubbo_provider_rt_seconds_min{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_min",
-      "type": "stat"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "thresholds"
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 69
-      },
-      "id": 77,
-      "options": {
-        "colorMode": "value",
-        "graphMode": "area",
-        "justifyMode": "auto",
-        "orientation": "auto",
-        "reduceOptions": {
-          "calcs": [
-            "lastNotNull"
-          ],
-          "fields": "",
-          "values": false
-        },
-        "textMode": "auto"
-      },
-      "pluginVersion": "9.3.2",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_consumer_rt_seconds_max{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_max",
-      "type": "stat"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 24,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 76
-      },
-      "id": 34,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_consumer_rt_seconds_avg{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_avg ",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 35,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 76
-      },
-      "id": 79,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "list",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_consumer_rt_seconds_last{application_name=\"$application_name\"}",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_last",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 34,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": []
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 0,
-        "y": 83
-      },
-      "id": 80,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_consumer_rt_seconds_p95{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_p95",
-      "type": "timeseries"
-    },
-    {
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "description": "",
-      "fieldConfig": {
-        "defaults": {
-          "color": {
-            "mode": "palette-classic"
-          },
-          "custom": {
-            "axisCenteredZero": false,
-            "axisColorMode": "text",
-            "axisLabel": "",
-            "axisPlacement": "auto",
-            "barAlignment": 0,
-            "drawStyle": "bars",
-            "fillOpacity": 31,
-            "gradientMode": "opacity",
-            "hideFrom": {
-              "legend": false,
-              "tooltip": false,
-              "viz": false
-            },
-            "lineInterpolation": "linear",
-            "lineWidth": 1,
-            "pointSize": 5,
-            "scaleDistribution": {
-              "type": "linear"
-            },
-            "showPoints": "auto",
-            "spanNulls": false,
-            "stacking": {
-              "group": "A",
-              "mode": "none"
-            },
-            "thresholdsStyle": {
-              "mode": "off"
-            }
-          },
-          "mappings": [],
-          "thresholds": {
-            "mode": "absolute",
-            "steps": [
-              {
-                "color": "green",
-                "value": null
-              },
-              {
-                "color": "red",
-                "value": 80
-              }
-            ]
-          },
-          "unit": "ms"
-        },
-        "overrides": [
-          {
-            "__systemRef": "hideSeriesFrom",
-            "matcher": {
-              "id": "byNames",
-              "options": {
-                "mode": "exclude",
-                "names": [
-                  "org.apache.dubbo.samples.metrics.prometheus.api.DemoService.sayHello"
-                ],
-                "prefix": "All except:",
-                "readOnly": true
-              }
-            },
-            "properties": [
-              {
-                "id": "custom.hideFrom",
-                "value": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": true
-                }
-              }
-            ]
-          }
-        ]
-      },
-      "gridPos": {
-        "h": 7,
-        "w": 12,
-        "x": 12,
-        "y": 83
-      },
-      "id": 81,
-      "options": {
-        "legend": {
-          "calcs": [],
-          "displayMode": "table",
-          "placement": "bottom",
-          "showLegend": true
-        },
-        "tooltip": {
-          "mode": "single",
-          "sort": "none"
-        }
-      },
-      "pluginVersion": "8.2.5",
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "editorMode": "code",
-          "exemplar": false,
-          "expr": "dubbo_consumer_rt_seconds_p99{application_name=\"$application_name\"}",
-          "format": "time_series",
-          "instant": false,
-          "interval": "",
-          "legendFormat": "{{interface}}.{{method}}",
-          "range": true,
-          "refId": "A"
-        }
-      ],
-      "title": "consumer_rt_p99",
-      "type": "timeseries"
-    },
-    {
-      "collapsed": true,
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 90
-      },
-      "id": 74,
-      "panels": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 5,
-            "w": 24,
-            "x": 0,
-            "y": 7
-          },
-          "id": 82,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_failed_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_failed_total",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 0,
-            "y": 12
-          },
-          "id": 83,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_limit_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_limit",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 12,
-            "y": 12
-          },
-          "id": 84,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_business_failed_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_business_failed",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 0,
-            "y": 19
-          },
-          "id": 85,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_unknown_failed_total{application_name=\"$application_name\"}OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_unknown_failed",
-          "type": "timeseries"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "description": "",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "palette-classic"
-              },
-              "custom": {
-                "axisCenteredZero": false,
-                "axisColorMode": "text",
-                "axisLabel": "",
-                "axisPlacement": "auto",
-                "barAlignment": 0,
-                "drawStyle": "line",
-                "fillOpacity": 14,
-                "gradientMode": "none",
-                "hideFrom": {
-                  "legend": false,
-                  "tooltip": false,
-                  "viz": false
-                },
-                "lineInterpolation": "linear",
-                "lineWidth": 1,
-                "pointSize": 5,
-                "scaleDistribution": {
-                  "type": "linear"
-                },
-                "showPoints": "auto",
-                "spanNulls": false,
-                "stacking": {
-                  "group": "A",
-                  "mode": "none"
-                },
-                "thresholdsStyle": {
-                  "mode": "off"
-                }
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "red",
-                    "value": 80
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 7,
-            "w": 12,
-            "x": 12,
-            "y": 19
-          },
-          "id": 86,
-          "options": {
-            "legend": {
-              "calcs": [],
-              "displayMode": "table",
-              "placement": "bottom",
-              "showLegend": true
-            },
-            "tooltip": {
-              "mode": "single",
-              "sort": "none"
-            }
-          },
-          "pluginVersion": "8.2.5",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "U_7pLbpnk"
-              },
-              "editorMode": "code",
-              "exemplar": false,
-              "expr": "dubbo_consumer_requests_timeout_total{application_name=\"$application_name\"} OR on() vector(0)",
-              "format": "time_series",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "{{interface}}.{{method}}",
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "consumer_requests_timeout",
-          "type": "timeseries"
-        }
-      ],
-      "title": "Consumer Error",
-      "type": "row"
-    },
-    {
-      "collapsed": true,
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 91
-      },
-      "id": 4,
-      "panels": [],
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "refId": "A"
-        }
-      ],
-      "title": "注册中心",
-      "type": "row"
-    },
-    {
-      "collapsed": true,
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 92
-      },
-      "id": 2,
-      "panels": [],
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "refId": "A"
-        }
-      ],
-      "title": "配置中心",
-      "type": "row"
-    },
-    {
-      "collapsed": true,
-      "datasource": {
-        "type": "prometheus",
-        "uid": "U_7pLbpnk"
-      },
-      "gridPos": {
-        "h": 1,
-        "w": 24,
-        "x": 0,
-        "y": 93
-      },
-      "id": 8,
-      "panels": [],
-      "targets": [
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "U_7pLbpnk"
-          },
-          "refId": "A"
-        }
-      ],
-      "title": "元数据中心",
-      "type": "row"
-    }
-  ],
-  "refresh": "",
-  "schemaVersion": 37,
-  "style": "dark",
-  "tags": [],
-  "templating": {
-    "list": [
-      {
-        "current": {
-          "selected": false,
-          "text": "metrics-demo-consumer",
-          "value": "metrics-demo-consumer"
-        },
-        "datasource": {
-          "type": "prometheus",
-          "uid": "U_7pLbpnk"
-        },
-        "definition": "dubbo_provider_rt_seconds_p99",
-        "description": "",
-        "hide": 1,
-        "includeAll": false,
-        "label": "application_name",
-        "multi": false,
-        "name": "application_name",
-        "options": [],
-        "query": {
-          "query": "dubbo_provider_rt_seconds_p99",
-          "refId": "StandardVariableQuery"
-        },
-        "refresh": 1,
-        "regex": "/.*application_name=\"([^\"]*).*/",
-        "skipUrlSync": false,
-        "sort": 0,
-        "type": "query"
-      }
-    ]
-  },
-  "time": {
-    "from": "now-24h",
-    "to": "now"
-  },
-  "timepicker": {},
-  "timezone": "",
-  "title": "Dubbo可观测性面板",
-  "uid": "ewNiYNcVk",
-  "version": 42,
-  "weekStart": ""
-}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/grafana/templates/_helpers.tpl b/charts/admin-stack/charts/grafana/templates/_helpers.tpl
deleted file mode 100644
index 03db144..0000000
--- a/charts/admin-stack/charts/grafana/templates/_helpers.tpl
+++ /dev/null
@@ -1,219 +0,0 @@
-{{/* vim: set filetype=mustache: */}}
-{{/*
-Expand the name of the chart.
-*/}}
-{{- define "grafana.name" -}}
-{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-
-{{/*
-Create a default fully qualified app name.
-We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
-If release name contains chart name it will be used as a full name.
-*/}}
-{{- define "grafana.fullname" -}}
-{{- if .Values.fullnameOverride }}
-{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
-{{- else }}
-{{- $name := default .Chart.Name .Values.nameOverride }}
-{{- if contains $name .Release.Name }}
-{{- .Release.Name | trunc 63 | trimSuffix "-" }}
-{{- else }}
-{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
-{{- end }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Create chart name and version as used by the chart label.
-*/}}
-{{- define "grafana.chart" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-
-{{/*
-Create the name of the service account
-*/}}
-{{- define "grafana.serviceAccountName" -}}
-{{- if .Values.serviceAccount.create }}
-{{- default (include "grafana.fullname" .) .Values.serviceAccount.name }}
-{{- else }}
-{{- default "default" .Values.serviceAccount.name }}
-{{- end }}
-{{- end }}
-
-
-{{- define "grafana.serviceAccountNameTest" -}}
-{{- if .Values.serviceAccount.create }}
-{{- default (print (include "grafana.fullname" .) "-test") .Values.serviceAccount.nameTest }}
-{{- else }}
-{{- default "default" .Values.serviceAccount.nameTest }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Allow the release namespace to be overridden for multi-namespace deployments in combined charts
-*/}}
-{{- define "grafana.namespace" -}}
-{{- if .Values.namespaceOverride }}
-{{- .Values.namespaceOverride }}
-{{- else }}
-{{- .Release.Namespace }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Common labels
-*/}}
-{{- define "grafana.labels" -}}
-helm.sh/chart: {{ include "grafana.chart" . }}
-{{ include "grafana.selectorLabels" . }}
-{{- if or .Chart.AppVersion .Values.image.tag }}
-app.kubernetes.io/version: {{ mustRegexReplaceAllLiteral "@sha.*" .Values.image.tag "" | default .Chart.AppVersion | quote }}
-{{- end }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- with .Values.extraLabels }}
-{{ toYaml . }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Selector labels
-*/}}
-{{- define "grafana.selectorLabels" -}}
-app.kubernetes.io/name: {{ include "grafana.name" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-{{- end }}
-
-
-{{/*
-Common labels
-*/}}
-{{- define "grafana.imageRenderer.labels" -}}
-helm.sh/chart: {{ include "grafana.chart" . }}
-{{ include "grafana.imageRenderer.selectorLabels" . }}
-{{- if or .Chart.AppVersion .Values.image.tag }}
-app.kubernetes.io/version: {{ mustRegexReplaceAllLiteral "@sha.*" .Values.image.tag "" | default .Chart.AppVersion | quote }}
-{{- end }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end }}
-
-
-{{/*
-Selector labels ImageRenderer
-*/}}
-{{- define "grafana.imageRenderer.selectorLabels" -}}
-app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer
-app.kubernetes.io/instance: {{ .Release.Name }}
-{{- end }}
-
-
-{{/*
-Looks if there's an existing secret and reuse its password. If not it generates
-new password and use it.
-*/}}
-{{- define "grafana.password" -}}
-{{- $secret := (lookup "v1" "Secret" (include "grafana.namespace" .) (include "grafana.fullname" .) ) }}
-{{- if $secret }}
-{{- index $secret "data" "admin-password" }}
-{{- else }}
-{{- (randAlphaNum 40) | b64enc | quote }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the appropriate apiVersion for rbac.
-*/}}
-{{- define "grafana.rbac.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
-{{- print "rbac.authorization.k8s.io/v1" }}
-{{- else }}
-{{- print "rbac.authorization.k8s.io/v1beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the appropriate apiVersion for ingress.
-*/}}
-{{- define "grafana.ingress.apiVersion" -}}
-{{- if and ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) }}
-{{- print "networking.k8s.io/v1" }}
-{{- else if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
-{{- print "networking.k8s.io/v1beta1" }}
-{{- else }}
-{{- print "extensions/v1beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the appropriate apiVersion for Horizontal Pod Autoscaler.
-*/}}
-{{- define "grafana.hpa.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "autoscaling/v2/HorizontalPodAutoscaler" }}
-{{- print "autoscaling/v2" }}
-{{- else if $.Capabilities.APIVersions.Has "autoscaling/v2beta2/HorizontalPodAutoscaler" }}
-{{- print "autoscaling/v2beta2" }}
-{{- else }}
-{{- print "autoscaling/v2beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the appropriate apiVersion for podDisruptionBudget.
-*/}}
-{{- define "grafana.podDisruptionBudget.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
-{{- print "policy/v1" }}
-{{- else }}
-{{- print "policy/v1beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return if ingress is stable.
-*/}}
-{{- define "grafana.ingress.isStable" -}}
-{{- eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1" }}
-{{- end }}
-
-
-{{/*
-Return if ingress supports ingressClassName.
-*/}}
-{{- define "grafana.ingress.supportsIngressClassName" -}}
-{{- or (eq (include "grafana.ingress.isStable" .) "true") (and (eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
-{{- end }}
-
-
-{{/*
-Return if ingress supports pathType.
-*/}}
-{{- define "grafana.ingress.supportsPathType" -}}
-{{- or (eq (include "grafana.ingress.isStable" .) "true") (and (eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
-{{- end }}
-
-
-{{/*
-Formats imagePullSecrets. Input is (dict "root" . "imagePullSecrets" .{specific imagePullSecrets})
-*/}}
-{{- define "grafana.imagePullSecrets" -}}
-{{- $root := .root }}
-{{- range (concat .root.Values.global.imagePullSecrets .imagePullSecrets) }}
-{{- if eq (typeOf .) "map[string]interface {}" }}
-- {{ toYaml (dict "name" (tpl .name $root)) | trim }}
-{{- else }}
-- name: {{ tpl . $root }}
-{{- end }}
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/_pod.tpl b/charts/admin-stack/charts/grafana/templates/_pod.tpl
deleted file mode 100644
index 4c4755d..0000000
--- a/charts/admin-stack/charts/grafana/templates/_pod.tpl
+++ /dev/null
@@ -1,1153 +0,0 @@
-{{- define "grafana.pod" -}}
-{{- $sts := list "sts" "StatefulSet" "statefulset" -}}
-{{- $root := . -}}
-{{- with .Values.schedulerName }}
-schedulerName: "{{ . }}"
-{{- end }}
-serviceAccountName: {{ include "grafana.serviceAccountName" . }}
-automountServiceAccountToken: {{ .Values.serviceAccount.autoMount }}
-{{- with .Values.securityContext }}
-securityContext:
-  {{- toYaml . | nindent 2 }}
-{{- end }}
-{{- with .Values.hostAliases }}
-hostAliases:
-  {{- toYaml . | nindent 2 }}
-{{- end }}
-{{- with .Values.priorityClassName }}
-priorityClassName: {{ . }}
-{{- end }}
-{{- if ( or .Values.persistence.enabled .Values.dashboards .Values.extraInitContainers (and .Values.sidecar.datasources.enabled .Values.sidecar.datasources.initDatasources) (and .Values.sidecar.notifiers.enabled .Values.sidecar.notifiers.initNotifiers)) }}
-initContainers:
-{{- end }}
-{{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }}
-  - name: init-chown-data
-    {{- if .Values.initChownData.image.sha }}
-    image: "{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }}
-    {{- with .Values.initChownData.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    command:
-      - chown
-      - -R
-      - {{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }}
-      - /var/lib/grafana
-    {{- with .Values.initChownData.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: storage
-        mountPath: "/var/lib/grafana"
-        {{- with .Values.persistence.subPath }}
-        subPath: {{ tpl . $root }}
-        {{- end }}
-{{- end }}
-{{- if .Values.dashboards }}
-  - name: download-dashboards
-    {{- if .Values.downloadDashboardsImage.sha }}
-    image: "{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}"
-    {{- else }}
-    image: "{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }}
-    command: ["/bin/sh"]
-    args: [ "-c", "mkdir -p /var/lib/grafana/dashboards/default && /bin/sh -x /etc/grafana/download_dashboards.sh" ]
-    {{- with .Values.downloadDashboards.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    env:
-      {{- range $key, $value := .Values.downloadDashboards.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- range $key, $value := .Values.downloadDashboards.envValueFrom }}
-      - name: {{ $key | quote }}
-        valueFrom:
-          {{- tpl (toYaml $value) $ | nindent 10 }}
-      {{- end }}
-    {{- with .Values.downloadDashboards.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.downloadDashboards.envFromSecret }}
-    envFrom:
-      - secretRef:
-          name: {{ tpl . $root }}
-    {{- end }}
-    volumeMounts:
-      - name: config
-        mountPath: "/etc/grafana/download_dashboards.sh"
-        subPath: download_dashboards.sh
-      - name: storage
-        mountPath: "/var/lib/grafana"
-        {{- with .Values.persistence.subPath }}
-        subPath: {{ tpl . $root }}
-        {{- end }}
-      {{- range .Values.extraSecretMounts }}
-      - name: {{ .name }}
-        mountPath: {{ .mountPath }}
-        readOnly: {{ .readOnly }}
-      {{- end }}
-{{- end }}
-{{- if and .Values.sidecar.datasources.enabled .Values.sidecar.datasources.initDatasources }}
-  - name: {{ include "grafana.name" . }}-init-sc-datasources
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.datasources.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.datasources.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: "LIST"
-      - name: LABEL
-        value: "{{ .Values.sidecar.datasources.label }}"
-      {{- with .Values.sidecar.datasources.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote . }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "/etc/grafana/provisioning/datasources"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.datasources.resource }}
-      {{- with .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ . }}"
-      {{- end }}
-      {{- if .Values.sidecar.datasources.searchNamespace }}
-      - name: NAMESPACE
-        value: "{{ tpl (.Values.sidecar.datasources.searchNamespace | join ",") . }}"
-      {{- end }}
-      {{- with .Values.sidecar.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: "{{ . }}"
-      {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-datasources-volume
-        mountPath: "/etc/grafana/provisioning/datasources"
-{{- end }}
-{{- if and .Values.sidecar.notifiers.enabled .Values.sidecar.notifiers.initNotifiers }}
-  - name: {{ include "grafana.name" . }}-init-sc-notifiers
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.notifiers.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.notifiers.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: LIST
-      - name: LABEL
-        value: "{{ .Values.sidecar.notifiers.label }}"
-      {{- with .Values.sidecar.notifiers.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote . }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "/etc/grafana/provisioning/notifiers"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.notifiers.resource }}
-      {{- with .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.notifiers.searchNamespace }}
-      - name: NAMESPACE
-        value: "{{ tpl (. | join ",") $root }}"
-      {{- end }}
-      {{- with .Values.sidecar.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: "{{ . }}"
-      {{- end }}
-    {{- with .Values.sidecar.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-notifiers-volume
-        mountPath: "/etc/grafana/provisioning/notifiers"
-{{- end}}
-{{- with .Values.extraInitContainers }}
-  {{- tpl (toYaml .) $root | nindent 2 }}
-{{- end }}
-{{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }}
-imagePullSecrets:
-  {{- include "grafana.imagePullSecrets" (dict "root" $root "imagePullSecrets" .Values.image.pullSecrets) | nindent 2 }}
-{{- end }}
-{{- if not .Values.enableKubeBackwardCompatibility }}
-enableServiceLinks: {{ .Values.enableServiceLinks }}
-{{- end }}
-containers:
-{{- if .Values.sidecar.alerts.enabled }}
-  - name: {{ include "grafana.name" . }}-sc-alerts
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.alerts.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.alerts.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: {{ .Values.sidecar.alerts.watchMethod }}
-      - name: LABEL
-        value: "{{ .Values.sidecar.alerts.label }}"
-      {{- with .Values.sidecar.alerts.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote . }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "/etc/grafana/provisioning/alerting"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.alerts.resource }}
-      {{- with .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.alerts.searchNamespace }}
-      - name: NAMESPACE
-        value: {{ . | join "," | quote }}
-      {{- end }}
-      {{- with .Values.sidecar.alerts.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: {{ quote . }}
-      {{- end }}
-      {{- with .Values.sidecar.alerts.script }}
-      - name: SCRIPT
-        value: {{ quote . }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_USERNAME
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.userKey | default "admin-user" }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.passwordKey | default "admin-password" }}
-      {{- end }}
-      {{- if not .Values.sidecar.alerts.skipReload }}
-      - name: REQ_URL
-        value: {{ .Values.sidecar.alerts.reloadURL }}
-      - name: REQ_METHOD
-        value: POST
-      {{- end }}
-      {{- if .Values.sidecar.alerts.watchServerTimeout }}
-      {{- if ne .Values.sidecar.alerts.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.alerts.watchServerTimeout with .Values.sidecar.alerts.watchMethod %s" .Values.sidecar.alerts.watchMethod) }}
-      {{- end }}
-      - name: WATCH_SERVER_TIMEOUT
-        value: "{{ .Values.sidecar.alerts.watchServerTimeout }}"
-      {{- end }}
-      {{- if .Values.sidecar.alerts.watchClientTimeout }}
-      {{- if ne .Values.sidecar.alerts.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.alerts.watchClientTimeout with .Values.sidecar.alerts.watchMethod %s" .Values.sidecar.alerts.watchMethod) }}
-      {{- end }}
-      - name: WATCH_CLIENT_TIMEOUT
-        value: "{{ .Values.sidecar.alerts.watchClientTimeout }}"
-      {{- end }}
-    {{- with .Values.sidecar.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-alerts-volume
-        mountPath: "/etc/grafana/provisioning/alerting"
-{{- end}}
-{{- if .Values.sidecar.dashboards.enabled }}
-  - name: {{ include "grafana.name" . }}-sc-dashboard
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.dashboards.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.dashboards.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: {{ .Values.sidecar.dashboards.watchMethod }}
-      - name: LABEL
-        value: "{{ .Values.sidecar.dashboards.label }}"
-      {{- with .Values.sidecar.dashboards.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote . }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.dashboards.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.dashboards.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.dashboards.resource }}
-      {{- with .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.dashboards.searchNamespace }}
-      - name: NAMESPACE
-        value: "{{ tpl (. | join ",") $root }}"
-      {{- end }}
-      {{- with .Values.sidecar.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.dashboards.folderAnnotation }}
-      - name: FOLDER_ANNOTATION
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.dashboards.script }}
-      - name: SCRIPT
-        value: "{{ . }}"
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_USERNAME
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.userKey | default "admin-user" }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.passwordKey | default "admin-password" }}
-      {{- end }}
-      {{- if not .Values.sidecar.dashboards.skipReload }}
-      - name: REQ_URL
-        value: {{ .Values.sidecar.dashboards.reloadURL }}
-      - name: REQ_METHOD
-        value: POST
-      {{- end }}
-      {{- if .Values.sidecar.dashboards.watchServerTimeout }}
-      {{- if ne .Values.sidecar.dashboards.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.dashboards.watchServerTimeout with .Values.sidecar.dashboards.watchMethod %s" .Values.sidecar.dashboards.watchMethod) }}
-      {{- end }}
-      - name: WATCH_SERVER_TIMEOUT
-        value: "{{ .Values.sidecar.dashboards.watchServerTimeout }}"
-      {{- end }}
-      {{- if .Values.sidecar.dashboards.watchClientTimeout }}
-      {{- if ne .Values.sidecar.dashboards.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.dashboards.watchClientTimeout with .Values.sidecar.dashboards.watchMethod %s" .Values.sidecar.dashboards.watchMethod) }}
-      {{- end }}
-      - name: WATCH_CLIENT_TIMEOUT
-        value: {{ .Values.sidecar.dashboards.watchClientTimeout | quote }}
-      {{- end }}
-    {{- with .Values.sidecar.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-dashboard-volume
-        mountPath: {{ .Values.sidecar.dashboards.folder | quote }}
-      {{- with .Values.sidecar.dashboards.extraMounts }}
-      {{- toYaml . | trim | nindent 6 }}
-      {{- end }}
-{{- end}}
-{{- if .Values.sidecar.datasources.enabled }}
-  - name: {{ include "grafana.name" . }}-sc-datasources
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.datasources.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.datasources.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: {{ .Values.sidecar.datasources.watchMethod }}
-      - name: LABEL
-        value: "{{ .Values.sidecar.datasources.label }}"
-      {{- with .Values.sidecar.datasources.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote . }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "/etc/grafana/provisioning/datasources"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.datasources.resource }}
-      {{- with .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.datasources.searchNamespace }}
-      - name: NAMESPACE
-        value: "{{ tpl (. | join ",") $root }}"
-      {{- end }}
-      {{- if .Values.sidecar.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: "{{ .Values.sidecar.skipTlsVerify }}"
-      {{- end }}
-      {{- if .Values.sidecar.datasources.script }}
-      - name: SCRIPT
-        value: "{{ .Values.sidecar.datasources.script }}"
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_USERNAME
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.userKey | default "admin-user" }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.passwordKey | default "admin-password" }}
-      {{- end }}
-      {{- if not .Values.sidecar.datasources.skipReload }}
-      - name: REQ_URL
-        value: {{ .Values.sidecar.datasources.reloadURL }}
-      - name: REQ_METHOD
-        value: POST
-      {{- end }}
-      {{- if .Values.sidecar.datasources.watchServerTimeout }}
-      {{- if ne .Values.sidecar.datasources.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.datasources.watchServerTimeout with .Values.sidecar.datasources.watchMethod %s" .Values.sidecar.datasources.watchMethod) }}
-      {{- end }}
-      - name: WATCH_SERVER_TIMEOUT
-        value: "{{ .Values.sidecar.datasources.watchServerTimeout }}"
-      {{- end }}
-      {{- if .Values.sidecar.datasources.watchClientTimeout }}
-      {{- if ne .Values.sidecar.datasources.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.datasources.watchClientTimeout with .Values.sidecar.datasources.watchMethod %s" .Values.sidecar.datasources.watchMethod) }}
-      {{- end }}
-      - name: WATCH_CLIENT_TIMEOUT
-        value: "{{ .Values.sidecar.datasources.watchClientTimeout }}"
-      {{- end }}
-    {{- with .Values.sidecar.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-datasources-volume
-        mountPath: "/etc/grafana/provisioning/datasources"
-{{- end}}
-{{- if .Values.sidecar.notifiers.enabled }}
-  - name: {{ include "grafana.name" . }}-sc-notifiers
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.notifiers.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.notifiers.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: {{ .Values.sidecar.notifiers.watchMethod }}
-      - name: LABEL
-        value: "{{ .Values.sidecar.notifiers.label }}"
-      {{- with .Values.sidecar.notifiers.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote . }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "/etc/grafana/provisioning/notifiers"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.notifiers.resource }}
-      {{- if .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ .Values.sidecar.enableUniqueFilenames }}"
-      {{- end }}
-      {{- with .Values.sidecar.notifiers.searchNamespace }}
-      - name: NAMESPACE
-        value: "{{ tpl (. | join ",") $root }}"
-      {{- end }}
-      {{- with .Values.sidecar.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: "{{ . }}"
-      {{- end }}
-      {{- if .Values.sidecar.notifiers.script }}
-      - name: SCRIPT
-        value: "{{ .Values.sidecar.notifiers.script }}"
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_USERNAME
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.userKey | default "admin-user" }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.passwordKey | default "admin-password" }}
-      {{- end }}
-      {{- if not .Values.sidecar.notifiers.skipReload }}
-      - name: REQ_URL
-        value: {{ .Values.sidecar.notifiers.reloadURL }}
-      - name: REQ_METHOD
-        value: POST
-      {{- end }}
-      {{- if .Values.sidecar.notifiers.watchServerTimeout }}
-      {{- if ne .Values.sidecar.notifiers.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.notifiers.watchServerTimeout with .Values.sidecar.notifiers.watchMethod %s" .Values.sidecar.notifiers.watchMethod) }}
-      {{- end }}
-      - name: WATCH_SERVER_TIMEOUT
-        value: "{{ .Values.sidecar.notifiers.watchServerTimeout }}"
-      {{- end }}
-      {{- if .Values.sidecar.notifiers.watchClientTimeout }}
-      {{- if ne .Values.sidecar.notifiers.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.notifiers.watchClientTimeout with .Values.sidecar.notifiers.watchMethod %s" .Values.sidecar.notifiers.watchMethod) }}
-      {{- end }}
-      - name: WATCH_CLIENT_TIMEOUT
-        value: "{{ .Values.sidecar.notifiers.watchClientTimeout }}"
-      {{- end }}
-    {{- with .Values.sidecar.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-notifiers-volume
-        mountPath: "/etc/grafana/provisioning/notifiers"
-{{- end}}
-{{- if .Values.sidecar.plugins.enabled }}
-  - name: {{ include "grafana.name" . }}-sc-plugins
-    {{- if .Values.sidecar.image.sha }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
-    env:
-      {{- range $key, $value := .Values.sidecar.plugins.env }}
-      - name: "{{ $key }}"
-        value: "{{ $value }}"
-      {{- end }}
-      {{- if .Values.sidecar.plugins.ignoreAlreadyProcessed }}
-      - name: IGNORE_ALREADY_PROCESSED
-        value: "true"
-      {{- end }}
-      - name: METHOD
-        value: {{ .Values.sidecar.plugins.watchMethod }}
-      - name: LABEL
-        value: "{{ .Values.sidecar.plugins.label }}"
-      {{- if .Values.sidecar.plugins.labelValue }}
-      - name: LABEL_VALUE
-        value: {{ quote .Values.sidecar.plugins.labelValue }}
-      {{- end }}
-      {{- if or .Values.sidecar.logLevel .Values.sidecar.plugins.logLevel }}
-      - name: LOG_LEVEL
-        value: {{ default .Values.sidecar.logLevel .Values.sidecar.plugins.logLevel }}
-      {{- end }}
-      - name: FOLDER
-        value: "/etc/grafana/provisioning/plugins"
-      - name: RESOURCE
-        value: {{ quote .Values.sidecar.plugins.resource }}
-      {{- with .Values.sidecar.enableUniqueFilenames }}
-      - name: UNIQUE_FILENAMES
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.plugins.searchNamespace }}
-      - name: NAMESPACE
-        value: "{{ tpl (. | join ",") $root }}"
-      {{- end }}
-      {{- with .Values.sidecar.plugins.script }}
-      - name: SCRIPT
-        value: "{{ . }}"
-      {{- end }}
-      {{- with .Values.sidecar.skipTlsVerify }}
-      - name: SKIP_TLS_VERIFY
-        value: "{{ . }}"
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_USERNAME
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.userKey | default "admin-user" }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: REQ_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.passwordKey | default "admin-password" }}
-      {{- end }}
-      {{- if not .Values.sidecar.plugins.skipReload }}
-      - name: REQ_URL
-        value: {{ .Values.sidecar.plugins.reloadURL }}
-      - name: REQ_METHOD
-        value: POST
-      {{- end }}
-      {{- if .Values.sidecar.plugins.watchServerTimeout }}
-      {{- if ne .Values.sidecar.plugins.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.plugins.watchServerTimeout with .Values.sidecar.plugins.watchMethod %s" .Values.sidecar.plugins.watchMethod) }}
-      {{- end }}
-      - name: WATCH_SERVER_TIMEOUT
-        value: "{{ .Values.sidecar.plugins.watchServerTimeout }}"
-      {{- end }}
-      {{- if .Values.sidecar.plugins.watchClientTimeout }}
-      {{- if ne .Values.sidecar.plugins.watchMethod "WATCH" }}
-        {{- fail (printf "Cannot use .Values.sidecar.plugins.watchClientTimeout with .Values.sidecar.plugins.watchMethod %s" .Values.sidecar.plugins.watchMethod) }}
-      {{- end }}
-      - name: WATCH_CLIENT_TIMEOUT
-        value: "{{ .Values.sidecar.plugins.watchClientTimeout }}"
-      {{- end }}
-    {{- with .Values.sidecar.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.sidecar.securityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: sc-plugins-volume
-        mountPath: "/etc/grafana/provisioning/plugins"
-{{- end}}
-  - name: {{ .Chart.Name }}
-    {{- if .Values.image.sha }}
-    image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.image.sha }}"
-    {{- else }}
-    image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
-    {{- end }}
-    imagePullPolicy: {{ .Values.image.pullPolicy }}
-    {{- if .Values.command }}
-    command:
-    {{- range .Values.command }}
-      - {{ . | quote }}
-    {{- end }}
-    {{- end}}
-    {{- with .Values.containerSecurityContext }}
-    securityContext:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    volumeMounts:
-      - name: config
-        mountPath: "/etc/grafana/grafana.ini"
-        subPath: grafana.ini
-      {{- if .Values.ldap.enabled }}
-      - name: ldap
-        mountPath: "/etc/grafana/ldap.toml"
-        subPath: ldap.toml
-      {{- end }}
-      {{- range .Values.extraConfigmapMounts }}
-      - name: {{ tpl .name $root }}
-        mountPath: {{ tpl .mountPath $root }}
-        subPath: {{ (tpl .subPath $root) | default "" }}
-        readOnly: {{ .readOnly }}
-      {{- end }}
-      - name: storage
-        mountPath: "/var/lib/grafana"
-        {{- with .Values.persistence.subPath }}
-        subPath: {{ tpl . $root }}
-        {{- end }}
-      {{- with .Values.dashboards }}
-      {{- range $provider, $dashboards := . }}
-      {{- range $key, $value := $dashboards }}
-      {{- if (or (hasKey $value "json") (hasKey $value "file")) }}
-      - name: dashboards-{{ $provider }}
-        mountPath: "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json"
-        subPath: "{{ $key }}.json"
-      {{- end }}
-      {{- end }}
-      {{- end }}
-      {{- end }}
-      {{- with .Values.dashboardsConfigMaps }}
-      {{- range (keys . | sortAlpha) }}
-      - name: dashboards-{{ . }}
-        mountPath: "/var/lib/grafana/dashboards/{{ . }}"
-      {{- end }}
-      {{- end }}
-      {{- with .Values.datasources }}
-      {{- range (keys . | sortAlpha) }}
-      - name: config
-        mountPath: "/etc/grafana/provisioning/datasources/{{ . }}"
-        subPath: {{ . | quote }}
-      {{- end }}
-      {{- end }}
-      {{- with .Values.notifiers }}
-      {{- range (keys . | sortAlpha) }}
-      - name: config
-        mountPath: "/etc/grafana/provisioning/notifiers/{{ . }}"
-        subPath: {{ . | quote }}
-      {{- end }}
-      {{- end }}
-      {{- with .Values.alerting }}
-      {{- range (keys . | sortAlpha) }}
-      - name: config
-        mountPath: "/etc/grafana/provisioning/alerting/{{ . }}"
-        subPath: {{ . | quote }}
-      {{- end }}
-      {{- end }}
-      {{- with .Values.dashboardProviders }}
-      {{- range (keys . | sortAlpha) }}
-      - name: config
-        mountPath: "/etc/grafana/provisioning/dashboards/{{ . }}"
-        subPath: {{ . | quote }}
-      {{- end }}
-      {{- end }}
-      {{- with .Values.sidecar.alerts.enabled }}
-      - name: sc-alerts-volume
-        mountPath: "/etc/grafana/provisioning/alerting"
-      {{- end}}
-      {{- if .Values.sidecar.dashboards.enabled }}
-      - name: sc-dashboard-volume
-        mountPath: {{ .Values.sidecar.dashboards.folder | quote }}
-      {{- if .Values.sidecar.dashboards.SCProvider }}
-      - name: sc-dashboard-provider
-        mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml"
-        subPath: provider.yaml
-      {{- end}}
-      {{- end}}
-      {{- if .Values.sidecar.datasources.enabled }}
-      - name: sc-datasources-volume
-        mountPath: "/etc/grafana/provisioning/datasources"
-      {{- end}}
-      {{- if .Values.sidecar.plugins.enabled }}
-      - name: sc-plugins-volume
-        mountPath: "/etc/grafana/provisioning/plugins"
-      {{- end}}
-      {{- if .Values.sidecar.notifiers.enabled }}
-      - name: sc-notifiers-volume
-        mountPath: "/etc/grafana/provisioning/notifiers"
-      {{- end}}
-      {{- range .Values.extraSecretMounts }}
-      - name: {{ .name }}
-        mountPath: {{ .mountPath }}
-        readOnly: {{ .readOnly }}
-        subPath: {{ .subPath | default "" }}
-      {{- end }}
-      {{- range .Values.extraVolumeMounts }}
-      - name: {{ .name }}
-        mountPath: {{ .mountPath }}
-        subPath: {{ .subPath | default "" }}
-        readOnly: {{ .readOnly }}
-      {{- end }}
-      {{- range .Values.extraEmptyDirMounts }}
-      - name: {{ .name }}
-        mountPath: {{ .mountPath }}
-      {{- end }}
-    ports:
-      - name: {{ .Values.podPortName }}
-        containerPort: {{ .Values.service.targetPort }}
-        protocol: TCP
-      - name: {{ .Values.gossipPortName }}-tcp
-        containerPort: 9094
-        protocol: TCP
-      - name: {{ .Values.gossipPortName }}-udp
-        containerPort: 9094
-        protocol: UDP
-    env:
-      - name: POD_IP
-        valueFrom:
-          fieldRef:
-            fieldPath: status.podIP
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: GF_SECURITY_ADMIN_USER
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.userKey | default "admin-user" }}
-      {{- end }}
-      {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-      - name: GF_SECURITY_ADMIN_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }}
-            key: {{ .Values.admin.passwordKey | default "admin-password" }}
-      {{- end }}
-      {{- if .Values.plugins }}
-      - name: GF_INSTALL_PLUGINS
-        valueFrom:
-          configMapKeyRef:
-            name: {{ include "grafana.fullname" . }}
-            key: plugins
-      {{- end }}
-      {{- if .Values.smtp.existingSecret }}
-      - name: GF_SMTP_USER
-        valueFrom:
-          secretKeyRef:
-            name: {{ .Values.smtp.existingSecret }}
-            key: {{ .Values.smtp.userKey | default "user" }}
-      - name: GF_SMTP_PASSWORD
-        valueFrom:
-          secretKeyRef:
-            name: {{ .Values.smtp.existingSecret }}
-            key: {{ .Values.smtp.passwordKey | default "password" }}
-      {{- end }}
-      {{- if .Values.imageRenderer.enabled }}
-      - name: GF_RENDERING_SERVER_URL
-        value: http://{{ include "grafana.fullname" . }}-image-renderer.{{ include "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render
-      - name: GF_RENDERING_CALLBACK_URL
-        value: {{ .Values.imageRenderer.grafanaProtocol }}://{{ include "grafana.fullname" . }}.{{ include "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }}
-      {{- end }}
-      - name: GF_PATHS_DATA
-        value: {{ (get .Values "grafana.ini").paths.data }}
-      - name: GF_PATHS_LOGS
-        value: {{ (get .Values "grafana.ini").paths.logs }}
-      - name: GF_PATHS_PLUGINS
-        value: {{ (get .Values "grafana.ini").paths.plugins }}
-      - name: GF_PATHS_PROVISIONING
-        value: {{ (get .Values "grafana.ini").paths.provisioning }}
-      {{- range $key, $value := .Values.envValueFrom }}
-      - name: {{ $key | quote }}
-        valueFrom:
-          {{- tpl (toYaml $value) $ | nindent 10 }}
-      {{- end }}
-      {{- range $key, $value := .Values.env }}
-      - name: "{{ tpl $key $ }}"
-        value: "{{ tpl (print $value) $ }}"
-      {{- end }}
-    {{- if or .Values.envFromSecret (or .Values.envRenderSecret .Values.envFromSecrets) .Values.envFromConfigMaps }}
-    envFrom:
-      {{- if .Values.envFromSecret }}
-      - secretRef:
-          name: {{ tpl .Values.envFromSecret . }}
-      {{- end }}
-      {{- if .Values.envRenderSecret }}
-      - secretRef:
-          name: {{ include "grafana.fullname" . }}-env
-      {{- end }}
-      {{- range .Values.envFromSecrets }}
-      - secretRef:
-          name: {{ tpl .name $ }}
-          optional: {{ .optional | default false }}
-      {{- end }}
-      {{- range .Values.envFromConfigMaps }}
-      - configMapRef:
-          name: {{ tpl .name $ }}
-          optional: {{ .optional | default false }}
-      {{- end }}
-    {{- end }}
-    {{- with .Values.livenessProbe }}
-    livenessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.readinessProbe }}
-    readinessProbe:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-    {{- with .Values.lifecycleHooks }}
-    lifecycle:
-      {{- tpl (toYaml .) $root | nindent 6 }}
-    {{- end }}
-    {{- with .Values.resources }}
-    resources:
-      {{- toYaml . | nindent 6 }}
-    {{- end }}
-{{- with .Values.extraContainers }}
-  {{- tpl . $ | nindent 2 }}
-{{- end }}
-{{- with .Values.nodeSelector }}
-nodeSelector:
-  {{- toYaml . | nindent 2 }}
-{{- end }}
-{{- with .Values.affinity }}
-affinity:
-  {{- tpl (toYaml .) $root | nindent 2 }}
-{{- end }}
-{{- with .Values.topologySpreadConstraints }}
-topologySpreadConstraints:
-  {{- toYaml . | nindent 2 }}
-{{- end }}
-{{- with .Values.tolerations }}
-tolerations:
-  {{- toYaml . | nindent 2 }}
-{{- end }}
-volumes:
-  - name: config
-    configMap:
-      name: {{ include "grafana.fullname" . }}
-  {{- range .Values.extraConfigmapMounts }}
-  - name: {{ tpl .name $root }}
-    configMap:
-      name: {{ tpl .configMap $root }}
-      {{- with .items }}
-      items:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-  {{- end }}
-  {{- if .Values.dashboards }}
-  {{- range (keys .Values.dashboards | sortAlpha) }}
-  - name: dashboards-{{ . }}
-    configMap:
-      name: {{ include "grafana.fullname" $ }}-dashboards-{{ . }}
-  {{- end }}
-  {{- end }}
-  {{- if .Values.dashboardsConfigMaps }}
-  {{- range $provider, $name := .Values.dashboardsConfigMaps }}
-  - name: dashboards-{{ $provider }}
-    configMap:
-      name: {{ tpl $name $root }}
-  {{- end }}
-  {{- end }}
-  {{- if .Values.ldap.enabled }}
-  - name: ldap
-    secret:
-      {{- if .Values.ldap.existingSecret }}
-      secretName: {{ .Values.ldap.existingSecret }}
-      {{- else }}
-      secretName: {{ include "grafana.fullname" . }}
-      {{- end }}
-      items:
-        - key: ldap-toml
-          path: ldap.toml
-  {{- end }}
-  {{- if and .Values.persistence.enabled (eq .Values.persistence.type "pvc") }}
-  - name: storage
-    persistentVolumeClaim:
-      claimName: {{ tpl (.Values.persistence.existingClaim | default (include "grafana.fullname" .)) . }}
-  {{- else if and .Values.persistence.enabled (has .Values.persistence.type $sts) }}
-  {{/* nothing */}}
-  {{- else }}
-  - name: storage
-    {{- if .Values.persistence.inMemory.enabled }}
-    emptyDir:
-      medium: Memory
-      {{- with .Values.persistence.inMemory.sizeLimit }}
-      sizeLimit: {{ . }}
-      {{- end }}
-    {{- else }}
-    emptyDir: {}
-    {{- end }}
-  {{- end }}
-  {{- if .Values.sidecar.alerts.enabled }}
-  - name: sc-alerts-volume
-    emptyDir:
-      {{- with .Values.sidecar.alerts.sizeLimit }}
-      sizeLimit: {{ . }}
-      {{- else }}
-      {}
-      {{- end }}
-  {{- end }}
-  {{- if .Values.sidecar.dashboards.enabled }}
-  - name: sc-dashboard-volume
-    emptyDir:
-      {{- with .Values.sidecar.dashboards.sizeLimit }}
-      sizeLimit: {{ . }}
-      {{- else }}
-      {}
-      {{- end }}
-  {{- if .Values.sidecar.dashboards.SCProvider }}
-  - name: sc-dashboard-provider
-    configMap:
-      name: {{ include "grafana.fullname" . }}-config-dashboards
-  {{- end }}
-  {{- end }}
-  {{- if .Values.sidecar.datasources.enabled }}
-  - name: sc-datasources-volume
-    emptyDir:
-      {{- with .Values.sidecar.datasources.sizeLimit }}
-      sizeLimit: {{ . }}
-      {{- else }}
-      {}
-      {{- end }}
-  {{- end }}
-  {{- if .Values.sidecar.plugins.enabled }}
-  - name: sc-plugins-volume
-    emptyDir:
-      {{- with .Values.sidecar.plugins.sizeLimit }}
-      sizeLimit: {{ . }}
-      {{- else }}
-      {}
-      {{- end }}
-  {{- end }}
-  {{- if .Values.sidecar.notifiers.enabled }}
-  - name: sc-notifiers-volume
-    emptyDir:
-      {{- with .Values.sidecar.notifiers.sizeLimit }}
-      sizeLimit: {{ . }}
-      {{- else }}
-      {}
-      {{- end }}
-  {{- end }}
-  {{- range .Values.extraSecretMounts }}
-  {{- if .secretName }}
-  - name: {{ .name }}
-    secret:
-      secretName: {{ .secretName }}
-      defaultMode: {{ .defaultMode }}
-      {{- with .items }}
-      items:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-  {{- else if .projected }}
-  - name: {{ .name }}
-    projected:
-      {{- toYaml .projected | nindent 6 }}
-  {{- else if .csi }}
-  - name: {{ .name }}
-    csi:
-      {{- toYaml .csi | nindent 6 }}
-  {{- end }}
-  {{- end }}
-  {{- range .Values.extraVolumeMounts }}
-  - name: {{ .name }}
-    {{- if .existingClaim }}
-    persistentVolumeClaim:
-      claimName: {{ .existingClaim }}
-    {{- else if .hostPath }}
-    hostPath:
-      path: {{ .hostPath }}
-    {{- else if .csi }}
-    csi:
-      {{- toYaml .data | nindent 6 }}
-    {{- else }}
-    emptyDir: {}
-    {{- end }}
-  {{- end }}
-  {{- range .Values.extraEmptyDirMounts }}
-  - name: {{ .name }}
-    emptyDir: {}
-  {{- end }}
-  {{- with .Values.extraContainerVolumes }}
-  {{- tpl (toYaml .) $root | nindent 2 }}
-  {{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/clusterrole.yaml b/charts/admin-stack/charts/grafana/templates/clusterrole.yaml
deleted file mode 100644
index 3396713..0000000
--- a/charts/admin-stack/charts/grafana/templates/clusterrole.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-{{- if and .Values.rbac.create (not .Values.rbac.namespaced) (not .Values.rbac.useExistingRole) }}
-kind: ClusterRole
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  name: {{ include "grafana.fullname" . }}-clusterrole
-{{- if or .Values.sidecar.dashboards.enabled (or .Values.rbac.extraClusterRoleRules (or .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled)) }}
-rules:
-  {{- if or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled) }}
-  - apiGroups: [""] # "" indicates the core API group
-    resources: ["configmaps", "secrets"]
-    verbs: ["get", "watch", "list"]
-  {{- end}}
-  {{- with .Values.rbac.extraClusterRoleRules }}
-  {{- toYaml . | nindent 2 }}
-  {{- end}}
-{{- else }}
-rules: []
-{{- end}}
-{{- end}}
diff --git a/charts/admin-stack/charts/grafana/templates/clusterrolebinding.yaml b/charts/admin-stack/charts/grafana/templates/clusterrolebinding.yaml
deleted file mode 100644
index 48411fe..0000000
--- a/charts/admin-stack/charts/grafana/templates/clusterrolebinding.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-{{- if and .Values.rbac.create (not .Values.rbac.namespaced) }}
-kind: ClusterRoleBinding
-apiVersion: rbac.authorization.k8s.io/v1
-metadata:
-  name: {{ include "grafana.fullname" . }}-clusterrolebinding
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-subjects:
-  - kind: ServiceAccount
-    name: {{ include "grafana.serviceAccountName" . }}
-    namespace: {{ include "grafana.namespace" . }}
-roleRef:
-  kind: ClusterRole
-  {{- if .Values.rbac.useExistingRole }}
-  name: {{ .Values.rbac.useExistingRole }}
-  {{- else }}
-  name: {{ include "grafana.fullname" . }}-clusterrole
-  {{- end }}
-  apiGroup: rbac.authorization.k8s.io
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/configmap-dashboard-provider.yaml b/charts/admin-stack/charts/grafana/templates/configmap-dashboard-provider.yaml
deleted file mode 100644
index 1f706a8..0000000
--- a/charts/admin-stack/charts/grafana/templates/configmap-dashboard-provider.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-{{- if and .Values.sidecar.dashboards.enabled .Values.sidecar.dashboards.SCProvider }}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  name: {{ include "grafana.fullname" . }}-config-dashboards
-  namespace: {{ include "grafana.namespace" . }}
-data:
-  provider.yaml: |-
-    apiVersion: 1
-    providers:
-      - name: '{{ .Values.sidecar.dashboards.provider.name }}'
-        orgId: {{ .Values.sidecar.dashboards.provider.orgid }}
-        {{- if not .Values.sidecar.dashboards.provider.foldersFromFilesStructure }}
-        folder: '{{ .Values.sidecar.dashboards.provider.folder }}'
-        {{- end }}
-        type: {{ .Values.sidecar.dashboards.provider.type }}
-        disableDeletion: {{ .Values.sidecar.dashboards.provider.disableDelete }}
-        allowUiUpdates: {{ .Values.sidecar.dashboards.provider.allowUiUpdates }}
-        updateIntervalSeconds: {{ .Values.sidecar.dashboards.provider.updateIntervalSeconds | default 30 }}
-        options:
-          foldersFromFilesStructure: {{ .Values.sidecar.dashboards.provider.foldersFromFilesStructure }}
-          path: {{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/configmap.yaml b/charts/admin-stack/charts/grafana/templates/configmap.yaml
deleted file mode 100644
index b0735a2..0000000
--- a/charts/admin-stack/charts/grafana/templates/configmap.yaml
+++ /dev/null
@@ -1,125 +0,0 @@
-{{- if .Values.createConfigmap }}
-{{- $root := . -}}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-data:
-  {{- with .Values.plugins }}
-  plugins: {{ join "," . }}
-  {{- end }}
-  grafana.ini: |
-  {{- range $elem, $elemVal := index .Values "grafana.ini" }}
-    {{- if not (kindIs "map" $elemVal) }}
-    {{- if kindIs "invalid" $elemVal }}
-    {{ $elem }} =
-    {{- else if kindIs "string" $elemVal }}
-    {{ $elem }} = {{ tpl $elemVal $ }}
-    {{- else }}
-    {{ $elem }} = {{ $elemVal }}
-    {{- end }}
-    {{- end }}
-  {{- end }}
-  {{- range $key, $value := index .Values "grafana.ini" }}
-    {{- if kindIs "map" $value }}
-    [{{ $key }}]
-    {{- range $elem, $elemVal := $value }}
-    {{- if kindIs "invalid" $elemVal }}
-    {{ $elem }} =
-    {{- else if kindIs "string" $elemVal }}
-    {{ $elem }} = {{ tpl $elemVal $ }}
-    {{- else }}
-    {{ $elem }} = {{ $elemVal }}
-    {{- end }}
-    {{- end }}
-    {{- end }}
-  {{- end }}
-
-  {{- range $key, $value := .Values.datasources }}
-  {{- $key | nindent 2 }}: |
-    {{- tpl (toYaml $value | nindent 4) $root }}
-  {{- end }}
-
-  {{- range $key, $value := .Values.notifiers }}
-  {{- $key | nindent 2 }}: |
-    {{- toYaml $value | nindent 4 }}
-  {{- end }}
-
-  {{- range $key, $value := .Values.alerting }}
-  {{- $key | nindent 2 }}: |
-    {{- tpl (toYaml $value | nindent 4) $root }}
-  {{- end }}
-
-  {{- range $key, $value := .Values.dashboardProviders }}
-  {{- $key | nindent 2 }}: |
-    {{- toYaml $value | nindent 4 }}
-  {{- end }}
-
-{{- if .Values.dashboards  }}
-  download_dashboards.sh: |
-    #!/usr/bin/env sh
-    set -euf
-    {{- if .Values.dashboardProviders }}
-      {{- range $key, $value := .Values.dashboardProviders }}
-        {{- range $value.providers }}
-    mkdir -p {{ .options.path }}
-        {{- end }}
-      {{- end }}
-    {{- end }}
-  {{ $dashboardProviders := .Values.dashboardProviders }}
-  {{- range $provider, $dashboards := .Values.dashboards }}
-    {{- range $key, $value := $dashboards }}
-      {{- if (or (hasKey $value "gnetId") (hasKey $value "url")) }}
-    curl -skf \
-    --connect-timeout 60 \
-    --max-time 60 \
-      {{- if not $value.b64content }}
-    -H "Accept: application/json" \
-        {{- if $value.token }}
-    -H "Authorization: token {{ $value.token }}" \
-        {{- end }}
-        {{- if $value.bearerToken }}
-    -H "Authorization: Bearer {{ $value.bearerToken }}" \
-        {{- end }}
-        {{- if $value.gitlabToken }}
-    -H "PRIVATE-TOKEN: {{ $value.gitlabToken }}" \
-        {{- end }}
-    -H "Content-Type: application/json;charset=UTF-8" \
-      {{- end }}
-    {{- $dpPath := "" -}}
-    {{- range $kd := (index $dashboardProviders "dashboardproviders.yaml").providers }}
-      {{- if eq $kd.name $provider }}
-      {{- $dpPath = $kd.options.path }}
-      {{- end }}
-    {{- end }}
-    {{- if $value.url }}
-      "{{ $value.url }}" \
-    {{- else }}
-      "https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download" \
-    {{- end }}
-    {{- if $value.datasource }}
-      {{- if kindIs "string" $value.datasource }}
-      | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g' \
-      {{- end }}
-      {{- if kindIs "slice" $value.datasource }}
-        {{- range $value.datasource }}
-          | sed '/-- .* --/! s/${{"{"}}{{ .name }}}/{{ .value }}/g' \
-        {{- end }}
-      {{- end }}
-    {{- end }}
-    {{- if $value.b64content }}
-      | base64 -d \
-    {{- end }}
-    > "{{- if $dpPath -}}{{ $dpPath }}{{- else -}}/var/lib/grafana/dashboards/{{ $provider }}{{- end -}}/{{ $key }}.json"
-      {{ end }}
-    {{- end }}
-  {{- end }}
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/dashboards-json-configmap.yaml b/charts/admin-stack/charts/grafana/templates/dashboards-json-configmap.yaml
deleted file mode 100644
index df0ed0d..0000000
--- a/charts/admin-stack/charts/grafana/templates/dashboards-json-configmap.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-{{- if .Values.dashboards }}
-{{ $files := .Files }}
-{{- range $provider, $dashboards := .Values.dashboards }}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ include "grafana.fullname" $ }}-dashboards-{{ $provider }}
-  namespace: {{ include "grafana.namespace" $ }}
-  labels:
-    {{- include "grafana.labels" $ | nindent 4 }}
-    dashboard-provider: {{ $provider }}
-{{- if $dashboards }}
-data:
-{{- $dashboardFound := false }}
-{{- range $key, $value := $dashboards }}
-{{- if (or (hasKey $value "json") (hasKey $value "file")) }}
-{{- $dashboardFound = true }}
-  {{- print $key | nindent 2 }}.json:
-    {{- if hasKey $value "json" }}
-    |-
-      {{- $value.json | nindent 6 }}
-    {{- end }}
-    {{- if hasKey $value "file" }}
-    {{- toYaml ( $files.Get $value.file ) | nindent 4}}
-    {{- end }}
-{{- end }}
-{{- end }}
-{{- if not $dashboardFound }}
-  {}
-{{- end }}
-{{- end }}
----
-{{- end }}
-
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/deployment.yaml b/charts/admin-stack/charts/grafana/templates/deployment.yaml
deleted file mode 100644
index 42bde46..0000000
--- a/charts/admin-stack/charts/grafana/templates/deployment.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-{{- if (and (not .Values.useStatefulSet) (or (not .Values.persistence.enabled) (eq .Values.persistence.type "pvc"))) }}
-{{- if .Values.enabled }}
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  {{- if and (not .Values.autoscaling.enabled) (.Values.replicas) }}
-  replicas: {{ .Values.replicas }}
-  {{- end }}
-  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
-  selector:
-    matchLabels:
-      {{- include "grafana.selectorLabels" . | nindent 6 }}
-  {{- with .Values.deploymentStrategy }}
-  strategy:
-      {{- toYaml . | trim | nindent 4 }}
-  {{- end }}
-  template:
-    metadata:
-      labels:
-        {{- include "grafana.selectorLabels" . | nindent 8 }}
-        {{- with .Values.podLabels }}
-        {{- toYaml . | nindent 8 }}
-        {{- end }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
-        checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }}
-        checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
-        {{- if and (or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-        checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
-        {{- end }}
-        {{- if .Values.envRenderSecret }}
-        checksum/secret-env: {{ include (print $.Template.BasePath "/secret-env.yaml") . | sha256sum }}
-        {{- end }}
-        {{- with .Values.podAnnotations }}
-        {{- toYaml . | nindent 8 }}
-        {{- end }}
-    spec:
-      {{- include "grafana.pod" . | nindent 6 }}
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/headless-service.yaml b/charts/admin-stack/charts/grafana/templates/headless-service.yaml
deleted file mode 100644
index 3028589..0000000
--- a/charts/admin-stack/charts/grafana/templates/headless-service.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-{{- $sts := list "sts" "StatefulSet" "statefulset" -}}
-{{- if or .Values.headlessService (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)) }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "grafana.fullname" . }}-headless
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  clusterIP: None
-  selector:
-    {{- include "grafana.selectorLabels" . | nindent 4 }}
-  type: ClusterIP
-  ports:
-  - name: {{ .Values.gossipPortName }}-tcp
-    port: 9094
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/ingress.yaml b/charts/admin-stack/charts/grafana/templates/ingress.yaml
deleted file mode 100644
index 063cdfa..0000000
--- a/charts/admin-stack/charts/grafana/templates/ingress.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressApiIsStable := eq (include "grafana.ingress.isStable" .) "true" -}}
-{{- $ingressSupportsIngressClassName := eq (include "grafana.ingress.supportsIngressClassName" .) "true" -}}
-{{- $ingressSupportsPathType := eq (include "grafana.ingress.supportsPathType" .) "true" -}}
-{{- $fullName := include "grafana.fullname" . -}}
-{{- $servicePort := .Values.service.port -}}
-{{- $ingressPath := .Values.ingress.path -}}
-{{- $ingressPathType := .Values.ingress.pathType -}}
-{{- $extraPaths := .Values.ingress.extraPaths -}}
-apiVersion: {{ include "grafana.ingress.apiVersion" . }}
-kind: Ingress
-metadata:
-  name: {{ $fullName }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.ingress.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.ingress.annotations }}
-  annotations:
-    {{- range $key, $value := . }}
-    {{ $key }}: {{ tpl $value $ | quote }}
-    {{- end }}
-  {{- end }}
-spec:
-  {{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }}
-  ingressClassName: {{ .Values.ingress.ingressClassName }}
-  {{- end -}}
-  {{- with .Values.ingress.tls }}
-  tls:
-    {{- tpl (toYaml .) $ | nindent 4 }}
-  {{- end }}
-  rules:
-  {{- if .Values.ingress.hosts  }}
-  {{- range .Values.ingress.hosts }}
-    - host: {{ tpl . $ }}
-      http:
-        paths:
-          {{- with $extraPaths }}
-          {{- toYaml . | nindent 10 }}
-          {{- end }}
-          - path: {{ $ingressPath }}
-            {{- if $ingressSupportsPathType }}
-            pathType: {{ $ingressPathType }}
-            {{- end }}
-            backend:
-              {{- if $ingressApiIsStable }}
-              service:
-                name: {{ $fullName }}
-                port:
-                  number: {{ $servicePort }}
-              {{- else }}
-              serviceName: {{ $fullName }}
-              servicePort: {{ $servicePort }}
-              {{- end }}
-  {{- end }}
-  {{- else }}
-    - http:
-        paths:
-          - backend:
-              {{- if $ingressApiIsStable }}
-              service:
-                name: {{ $fullName }}
-                port:
-                  number: {{ $servicePort }}
-              {{- else }}
-              serviceName: {{ $fullName }}
-              servicePort: {{ $servicePort }}
-              {{- end }}
-            {{- with $ingressPath }}
-            path: {{ . }}
-            {{- end }}
-            {{- if $ingressSupportsPathType }}
-            pathType: {{ $ingressPathType }}
-            {{- end }}
-  {{- end -}}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/networkpolicy.yaml b/charts/admin-stack/charts/grafana/templates/networkpolicy.yaml
deleted file mode 100644
index ea4578b..0000000
--- a/charts/admin-stack/charts/grafana/templates/networkpolicy.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-{{- if .Values.networkPolicy.enabled }}
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  policyTypes:
-    {{- if .Values.networkPolicy.ingress }}
-    - Ingress
-    {{- end }}
-    {{- if .Values.networkPolicy.egress.enabled }}
-    - Egress
-    {{- end }}
-  podSelector:
-    matchLabels:
-      {{- include "grafana.selectorLabels" . | nindent 6 }}
-
-  {{- if .Values.networkPolicy.egress.enabled }}
-  egress:
-    - ports:
-        {{ .Values.networkPolicy.egress.ports | toJson }}
-  {{- end }}
-  {{- if .Values.networkPolicy.ingress }}
-  ingress:
-    - ports:
-      - port: {{ .Values.service.targetPort }}
-      {{- if not .Values.networkPolicy.allowExternal }}
-      from:
-        - podSelector:
-            matchLabels:
-              {{ include "grafana.fullname" . }}-client: "true"
-        {{- with .Values.networkPolicy.explicitNamespacesSelector }}
-        - namespaceSelector:
-            {{- toYaml . | nindent 12 }}
-        {{- end }}
-        - podSelector:
-            matchLabels:
-              {{- include "grafana.labels" . | nindent 14 }}
-              role: read
-      {{- end }}
-  {{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/poddisruptionbudget.yaml b/charts/admin-stack/charts/grafana/templates/poddisruptionbudget.yaml
deleted file mode 100644
index 0525121..0000000
--- a/charts/admin-stack/charts/grafana/templates/poddisruptionbudget.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-{{- if .Values.podDisruptionBudget }}
-apiVersion: {{ include "grafana.podDisruptionBudget.apiVersion" . }}
-kind: PodDisruptionBudget
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-spec:
-  {{- with .Values.podDisruptionBudget.minAvailable }}
-  minAvailable: {{ . }}
-  {{- end }}
-  {{- with .Values.podDisruptionBudget.maxUnavailable }}
-  maxUnavailable: {{ . }}
-  {{- end }}
-  selector:
-    matchLabels:
-      {{- include "grafana.selectorLabels" . | nindent 6 }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/pvc.yaml b/charts/admin-stack/charts/grafana/templates/pvc.yaml
deleted file mode 100644
index eb8f87f..0000000
--- a/charts/admin-stack/charts/grafana/templates/pvc.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "pvc")}}
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.persistence.extraPvcLabels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.persistence.annotations  }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- with .Values.persistence.finalizers  }}
-  finalizers:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  accessModes:
-    {{- range .Values.persistence.accessModes }}
-    - {{ . | quote }}
-    {{- end }}
-  resources:
-    requests:
-      storage: {{ .Values.persistence.size | quote }}
-  {{- with .Values.persistence.storageClassName }}
-  storageClassName: {{ . }}
-  {{- end }}
-  {{- with .Values.persistence.selectorLabels }}
-  selector:
-    matchLabels:
-    {{- toYaml . | nindent 6 }}
-  {{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/role.yaml b/charts/admin-stack/charts/grafana/templates/role.yaml
deleted file mode 100644
index ffdb16f..0000000
--- a/charts/admin-stack/charts/grafana/templates/role.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}}
-apiVersion: {{ include "grafana.rbac.apiVersion" . }}
-kind: Role
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-{{- if or .Values.rbac.pspEnabled (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.rbac.extraRoleRules)) }}
-rules:
-  {{- if .Values.rbac.pspEnabled }}
-  - apiGroups:      ['extensions']
-    resources:      ['podsecuritypolicies']
-    verbs:          ['use']
-    resourceNames:  [{{ include "grafana.fullname" . }}]
-  {{- end }}
-  {{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled) }}
-  - apiGroups: [""] # "" indicates the core API group
-    resources: ["configmaps", "secrets"]
-    verbs: ["get", "watch", "list"]
-  {{- end }}
-  {{- with .Values.rbac.extraRoleRules }}
-  {{- toYaml . | nindent 2 }}
-  {{- end}}
-{{- else }}
-rules: []
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/rolebinding.yaml b/charts/admin-stack/charts/grafana/templates/rolebinding.yaml
deleted file mode 100644
index cc07bd9..0000000
--- a/charts/admin-stack/charts/grafana/templates/rolebinding.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-{{- if .Values.rbac.create }}
-apiVersion: {{ include "grafana.rbac.apiVersion" . }}
-kind: RoleBinding
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  {{- if .Values.rbac.useExistingRole }}
-  name: {{ .Values.rbac.useExistingRole }}
-  {{- else }}
-  name: {{ include "grafana.fullname" . }}
-  {{- end }}
-subjects:
-- kind: ServiceAccount
-  name: {{ include "grafana.serviceAccountName" . }}
-  namespace: {{ include "grafana.namespace" . }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/secret-env.yaml b/charts/admin-stack/charts/grafana/templates/secret-env.yaml
deleted file mode 100644
index c765567..0000000
--- a/charts/admin-stack/charts/grafana/templates/secret-env.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-{{- if .Values.envRenderSecret }}
-apiVersion: v1
-kind: Secret
-metadata:
-  name: {{ include "grafana.fullname" . }}-env
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-type: Opaque
-data:
-{{- range $key, $val := .Values.envRenderSecret }}
-  {{ $key }}: {{ $val | b64enc | quote }}
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/secret.yaml b/charts/admin-stack/charts/grafana/templates/secret.yaml
deleted file mode 100644
index 5cbd527..0000000
--- a/charts/admin-stack/charts/grafana/templates/secret.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }}
-apiVersion: v1
-kind: Secret
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-type: Opaque
-data:
-  {{- if and (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }}
-  admin-user: {{ .Values.adminUser | b64enc | quote }}
-  {{- if .Values.adminPassword }}
-  admin-password: {{ .Values.adminPassword | b64enc | quote }}
-  {{- else }}
-  admin-password: {{ include "grafana.password" . }}
-  {{- end }}
-  {{- end }}
-  {{- if not .Values.ldap.existingSecret }}
-  ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }}
-  {{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/service.yaml b/charts/admin-stack/charts/grafana/templates/service.yaml
deleted file mode 100644
index 17b2c4b..0000000
--- a/charts/admin-stack/charts/grafana/templates/service.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-{{- if .Values.service.enabled }}
-{{- $root := . }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.service.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-spec:
-  {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
-  type: ClusterIP
-  {{- with .Values.service.clusterIP }}
-  clusterIP: {{ . }}
-  {{- end }}
-  {{- else if eq .Values.service.type "LoadBalancer" }}
-  type: {{ .Values.service.type }}
-  {{- with .Values.service.loadBalancerIP }}
-  loadBalancerIP: {{ . }}
-  {{- end }}
-  {{- with .Values.service.loadBalancerSourceRanges }}
-  loadBalancerSourceRanges:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  {{- else }}
-  type: {{ .Values.service.type }}
-  {{- end }}
-  {{- with .Values.service.externalIPs }}
-  externalIPs:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-  ports:
-    - name: {{ .Values.service.portName }}
-      port: {{ .Values.service.port }}
-      protocol: TCP
-      targetPort: {{ .Values.service.targetPort }}
-      {{- with .Values.service.appProtocol }}
-      appProtocol: {{ . }}
-      {{- end }}
-      {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
-      nodePort: {{ .Values.service.nodePort }}
-      {{- end }}
-      {{- with .Values.extraExposePorts }}
-      {{- tpl (toYaml . | nindent 4) $root }}
-      {{- end }}
-  selector:
-      {{- include "grafana.selectorLabels" . | nindent 4 }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/serviceaccount.yaml b/charts/admin-stack/charts/grafana/templates/serviceaccount.yaml
deleted file mode 100644
index 784e71b..0000000
--- a/charts/admin-stack/charts/grafana/templates/serviceaccount.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-{{- if .Values.serviceAccount.create }}
-{{- $root := . -}}
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-    {{- with .Values.serviceAccount.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.serviceAccount.annotations }}
-  annotations:
-    {{- tpl (toYaml . | nindent 4) $root }}
-  {{- end }}
-  name: {{ include "grafana.serviceAccountName" . }}
-  namespace: {{ include "grafana.namespace" . }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/templates/statefulset.yaml b/charts/admin-stack/charts/grafana/templates/statefulset.yaml
deleted file mode 100644
index da2a5c4..0000000
--- a/charts/admin-stack/charts/grafana/templates/statefulset.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-{{- if .Values.enabled }}
-{{- $sts := list "sts" "StatefulSet" "statefulset" -}}
-{{- if (or (.Values.useStatefulSet) (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)))}}
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
-  name: {{ include "grafana.fullname" . }}
-  namespace: {{ include "grafana.namespace" . }}
-  labels:
-    {{- include "grafana.labels" . | nindent 4 }}
-  {{- with .Values.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  replicas: {{ .Values.replicas }}
-  selector:
-    matchLabels:
-      {{- include "grafana.selectorLabels" . | nindent 6 }}
-  serviceName: {{ include "grafana.fullname" . }}-headless
-  template:
-    metadata:
-      labels:
-        {{- include "grafana.selectorLabels" . | nindent 8 }}
-        {{- with .Values.podLabels }}
-        {{- toYaml . | nindent 8 }}
-        {{- end }}
-      annotations:
-        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
-        checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }}
-        checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
-        {{- if and (or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
-        checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
-        {{- end }}
-        {{- with .Values.podAnnotations }}
-        {{- toYaml . | nindent 8 }}
-        {{- end }}
-    spec:
-      {{- include "grafana.pod" . | nindent 6 }}
-  {{- if .Values.persistence.enabled}}
-  volumeClaimTemplates:
-  - metadata:
-      name: storage
-    spec:
-      accessModes: {{ .Values.persistence.accessModes }}
-      storageClassName: {{ .Values.persistence.storageClassName }}
-      resources:
-        requests:
-          storage: {{ .Values.persistence.size }}
-      {{- with .Values.persistence.selectorLabels }}
-      selector:
-        matchLabels:
-          {{- toYaml . | nindent 10 }}
-      {{- end }}
-  {{- end }}
-{{- end }}
-{{- end }}
diff --git a/charts/admin-stack/charts/grafana/values.yaml b/charts/admin-stack/charts/grafana/values.yaml
deleted file mode 100644
index b2b5287..0000000
--- a/charts/admin-stack/charts/grafana/values.yaml
+++ /dev/null
@@ -1,1078 +0,0 @@
-image:
-  repository: grafana/grafana
-  # Overrides the Grafana image tag whose default is the chart appVersion
-  tag: ""
-  sha: ""
-  pullPolicy: IfNotPresent
-
-  ## Optionally specify an array of imagePullSecrets.
-  ## Secrets must be manually created in the namespace.
-  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
-  ## Can be templated.
-  ##
-  pullSecrets: []
-  #   - myRegistrKeySecretName
-
-replicas: 1
-
-persistence:
-  enabled: false
-  type: pvc
-  # storageClassName: default
-  accessModes:
-    - ReadWriteOnce
-  size: 10Gi
-  # annotations: {}
-  finalizers:
-    - kubernetes.io/pvc-protection
-  # selectorLabels: {}
-  ## Sub-directory of the PV to mount. Can be templated.
-  # subPath: ""
-  ## Name of an existing PVC. Can be templated.
-  # existingClaim:
-  ## Extra labels to apply to a PVC.
-  extraPvcLabels: {}
-
-  ## If persistence is not enabled, this allows to mount the
-  ## local storage in-memory to improve performance
-  ##
-  inMemory:
-    enabled: false
-    ## The maximum usage on memory medium EmptyDir would be
-    ## the minimum value between the SizeLimit specified
-    ## here and the sum of memory limits of all containers in a pod
-    ##
-    # sizeLimit: 300Mi
-
-
-## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
-## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
-## ref: http://kubernetes.io/docs/user-guide/services/
-##
-service:
-  enabled: true
-  type: ClusterIP
-  clusterIP: ""
-  loadBalancerIP: ""
-  loadBalancerSourceRanges: ""
-  externalIPs: ""
-  nodePort: ""
-  port: 80
-  targetPort: 3000
-  # targetPort: 4181 To be used with a proxy extraContainer
-  ## Service annotations. Can be templated.
-  annotations: {}
-  labels: {}
-  portName: service
-  # Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
-  appProtocol: ""
-
-downloadDashboardsImage:
-  repository: curlimages/curl
-  tag: 7.85.0
-  sha: ""
-  pullPolicy: IfNotPresent
-
-
-downloadDashboards:
-  env: {}
-  envFromSecret: ""
-  resources: {}
-  securityContext: {}
-  envValueFrom: {}
-  #  ENV_NAME:
-  #    configMapKeyRef:
-  #      name: configmap-name
-  #      key: value_key
-
-
-## Pod Annotations
-# podAnnotations: {}
-
-
-## Pod Labels
-# podLabels: {}
-
-
-podPortName: grafana
-gossipPortName: gossip
-## Deployment annotations
-# annotations: {}
-
-
-# Enable creating the grafana configmap
-createConfigmap: true
-
-
-## See `kubectl explain poddisruptionbudget.spec` for more
-## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
-podDisruptionBudget:
-#  minAvailable: 1
-#  maxUnavailable: 1
-
-
-readinessProbe:
-  httpGet:
-    path: /api/health
-    port: 3000
-
-livenessProbe:
-  httpGet:
-    path: /api/health
-    port: 3000
-  initialDelaySeconds: 60
-  timeoutSeconds: 30
-  failureThreshold: 10
-
-
-## Use an alternate scheduler, e.g. "stork".
-## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
-##
-# schedulerName: "default-scheduler"
-
-
-## See `kubectl explain deployment.spec.strategy` for more
-## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
-deploymentStrategy:
-  type: RollingUpdate
-
-
-## Create HorizontalPodAutoscaler object for deployment type
-#
-autoscaling:
-  enabled: false
-  minReplicas: 1
-  maxReplicas: 5
-  targetCPU: "60"
-  targetMemory: ""
-  behavior: {}
-
-
-## Number of old ReplicaSets to retain
-##
-revisionHistoryLimit: 10
-
-
-rbac:
-  create: true
-  ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
-  # useExistingRole: name-of-some-(cluster)role
-  pspEnabled: true
-  pspUseAppArmor: true
-  namespaced: false
-  extraRoleRules: []
-  # - apiGroups: []
-  #   resources: []
-  #   verbs: []
-  extraClusterRoleRules: []
-  # - apiGroups: []
-  #   resources: []
-  #   verbs: []
-
-
-serviceAccount:
-  create: true
-  name:
-  nameTest:
-  ## ServiceAccount labels.
-  labels: {}
-  ## Service account annotations. Can be templated.
-  #  annotations:
-  #    eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here
-  autoMount: true
-
-
-## Create a headless service for the deployment
-headlessService: false
-
-
-# Administrator credentials when not using an existing secret (see below)
-adminUser: admin
-# adminPassword: strongpassword
-
-# Use an existing secret for the admin user.
-admin:
-  ## Name of the secret. Can be templated.
-  existingSecret: ""
-  userKey: admin-user
-  passwordKey: admin-password
-
-## Define command to be executed at startup by grafana container
-## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/)
-## Default is "run.sh" as defined in grafana's Dockerfile
-# command:
-# - "sh"
-# - "/run.sh"
-
-## Extra environment variables that will be pass onto deployment pods
-##
-## to provide grafana with access to CloudWatch on AWS EKS:
-## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later)
-## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the
-## same oidc eks provider as noted before (same as the existing line)
-## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name
-##
-##  "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana",
-##
-## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess
-## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name)
-##
-## env:
-##   AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here
-##   AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
-##   AWS_REGION: us-east-1
-##
-## 5. uncomment the EKS section in extraSecretMounts: below
-## 6. uncomment the annotation section in the serviceAccount: above
-## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn
-
-env: {}
-
-## "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
-## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
-## Renders in container spec as:
-##   env:
-##     ...
-##     - name: <key>
-##       valueFrom:
-##         <value rendered as YAML>
-envValueFrom: {}
-  #  ENV_NAME:
-  #    configMapKeyRef:
-  #      name: configmap-name
-#      key: value_key
-
-## The name of a secret in the same kubernetes namespace which contain values to be added to the environment
-## This can be useful for auth tokens, etc. Value is templated.
-envFromSecret: ""
-
-## Sensible environment variables that will be rendered as new secret object
-## This can be useful for auth tokens, etc
-envRenderSecret: {}
-
-## The names of secrets in the same kubernetes namespace which contain values to be added to the environment
-## Each entry should contain a name key, and can optionally specify whether the secret must be defined with an optional key.
-## Name is templated.
-envFromSecrets: []
-## - name: secret-name
-##   optional: true
-
-## The names of conifgmaps in the same kubernetes namespace which contain values to be added to the environment
-## Each entry should contain a name key, and can optionally specify whether the configmap must be defined with an optional key.
-## Name is templated.
-## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapenvsource-v1-core
-envFromConfigMaps: []
-## - name: configmap-name
-##   optional: true
-
-# Inject Kubernetes services as environment variables.
-# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables
-enableServiceLinks: true
-
-## Additional grafana server secret mounts
-# Defines additional mounts with secrets. Secrets must be manually created in the namespace.
-extraSecretMounts: []
-  # - name: secret-files
-  #   mountPath: /etc/secrets
-  #   secretName: grafana-secret-files
-  #   readOnly: true
-  #   subPath: ""
-  #
-  # for AWS EKS (cloudwatch) use the following (see also instruction in env: above)
-  # - name: aws-iam-token
-  #   mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
-  #   readOnly: true
-  #   projected:
-  #     defaultMode: 420
-  #     sources:
-  #       - serviceAccountToken:
-  #           audience: sts.amazonaws.com
-  #           expirationSeconds: 86400
-  #           path: token
-  #
-  # for CSI e.g. Azure Key Vault use the following
-  # - name: secrets-store-inline
-  #  mountPath: /run/secrets
-  #  readOnly: true
-  #  csi:
-  #    driver: secrets-store.csi.k8s.io
-  #    readOnly: true
-  #    volumeAttributes:
-  #      secretProviderClass: "akv-grafana-spc"
-  #    nodePublishSecretRef:                       # Only required when using service principal mode
-#       name: grafana-akv-creds                  # Only required when using service principal mode
-
-## Additional grafana server volume mounts
-# Defines additional volume mounts.
-extraVolumeMounts: []
-  # - name: extra-volume-0
-  #   mountPath: /mnt/volume0
-  #   readOnly: true
-  #   existingClaim: volume-claim
-  # - name: extra-volume-1
-  #   mountPath: /mnt/volume1
-  #   readOnly: true
-  #   hostPath: /usr/shared/
-  # - name: grafana-secrets
-  #   csi: true
-  #   data:
-  #     driver: secrets-store.csi.k8s.io
-  #     readOnly: true
-  #     volumeAttributes:
-#       secretProviderClass: "grafana-env-spc"
-
-## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request
-lifecycleHooks: {}
-  # postStart:
-  #   exec:
-#     command: []
-
-## Pass the plugins you want installed as a list.
-##
-plugins: []
-  # - digrich-bubblechart-panel
-# - grafana-clock-panel
-
-initChownData:
-  ## If false, data ownership will not be reset at startup
-  ## This allows the grafana-server to be run with an arbitrary user
-  ##
-  enabled: true
-
-
-  ## initChownData container image
-  ##
-  image:
-    repository: busybox
-    tag: "1.31.1"
-    sha: ""
-    pullPolicy: IfNotPresent
-
-  ## initChownData resource requests and limits
-  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
-  ##
-  resources: {}
-  #  limits:
-  #    cpu: 100m
-  #    memory: 128Mi
-  #  requests:
-  #    cpu: 100m
-  #    memory: 128Mi
-  securityContext:
-    runAsNonRoot: false
-    runAsUser: 0
-
-
-# Administrator credentials when not using an existing secret (see below)
-adminUser: admin
-# adminPassword: strongpassword
-
-
-## Configure grafana datasources
-## ref: http://docs.grafana.org/administration/provisioning/#datasources
-##
-datasources: {}
-#  datasources.yaml:
-#    apiVersion: 1
-#    datasources:
-#    - name: Prometheus
-#      type: prometheus
-#      url: http://prometheus-prometheus-server
-#      access: proxy
-#      isDefault: true
-#    - name: CloudWatch
-#      type: cloudwatch
-#      access: proxy
-#      uid: cloudwatch
-#      editable: false
-#      jsonData:
-#        authType: default
-#        defaultRegion: us-east-1
-
-## Configure grafana alerting (can be templated)
-## ref: http://docs.grafana.org/administration/provisioning/#alerting
-##
-alerting: {}
-  # rules.yaml:
-  #   apiVersion: 1
-  #   groups:
-  #     - orgId: 1
-  #       name: '{{ .Chart.Name }}_my_rule_group'
-  #       folder: my_first_folder
-  #       interval: 60s
-  #       rules:
-  #         - uid: my_id_1
-  #           title: my_first_rule
-  #           condition: A
-  #           data:
-  #             - refId: A
-  #               datasourceUid: '-100'
-  #               model:
-  #                 conditions:
-  #                   - evaluator:
-  #                       params:
-  #                         - 3
-  #                       type: gt
-  #                     operator:
-  #                       type: and
-  #                     query:
-  #                       params:
-  #                         - A
-  #                     reducer:
-  #                       type: last
-  #                     type: query
-  #                 datasource:
-  #                   type: __expr__
-  #                   uid: '-100'
-  #                 expression: 1==0
-  #                 intervalMs: 1000
-  #                 maxDataPoints: 43200
-  #                 refId: A
-  #                 type: math
-  #           dashboardUid: my_dashboard
-  #           panelId: 123
-  #           noDataState: Alerting
-  #           for: 60s
-  #           annotations:
-  #             some_key: some_value
-  #           labels:
-  #             team: sre_team_1
-  # contactpoints.yaml:
-  #   apiVersion: 1
-  #   contactPoints:
-  #     - orgId: 1
-  #       name: cp_1
-  #       receivers:
-  #         - uid: first_uid
-  #           type: pagerduty
-  #           settings:
-  #             integrationKey: XXX
-  #             severity: critical
-  #             class: ping failure
-  #             component: Grafana
-  #             group: app-stack
-  #             summary: |
-#               {{ `{{ include "default.message" . }}` }}
-
-## Configure notifiers
-## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels
-##
-notifiers: {}
-#  notifiers.yaml:
-#    notifiers:
-#    - name: email-notifier
-#      type: email
-#      uid: email1
-#      # either:
-#      org_id: 1
-#      # or
-#      org_name: Main Org.
-#      is_default: true
-#      settings:
-#        addresses: an_email_address@example.com
-#    delete_notifiers:
-
-## Configure grafana dashboard providers
-## ref: http://docs.grafana.org/administration/provisioning/#dashboards
-##
-## `path` must be /var/lib/grafana/dashboards/<provider_name>
-##
-dashboardProviders: {}
-#  dashboardproviders.yaml:
-#    apiVersion: 1
-#    providers:
-#    - name: 'default'
-#      orgId: 1
-#      folder: ''
-#      type: file
-#      disableDeletion: false
-#      editable: true
-#      options:
-#        path: /var/lib/grafana/dashboards/default
-
-## Configure grafana dashboard to import
-## NOTE: To use dashboards you must also enable/configure dashboardProviders
-## ref: https://grafana.com/dashboards
-##
-## dashboards per provider, use provider name as key.
-##
-dashboards: {}
-  # default:
-  #   some-dashboard:
-  #     json: |
-  #       $RAW_JSON
-  #   custom-dashboard:
-  #     file: dashboards/custom-dashboard.json
-  #   prometheus-stats:
-  #     gnetId: 2
-  #     revision: 2
-  #     datasource: Prometheus
-  #   local-dashboard:
-  #     url: https://example.com/repository/test.json
-  #     token: ''
-  #   local-dashboard-base64:
-  #     url: https://example.com/repository/test-b64.json
-  #     token: ''
-  #     b64content: true
-  #   local-dashboard-gitlab:
-  #     url: https://example.com/repository/test-gitlab.json
-  #     gitlabToken: ''
-  #   local-dashboard-bitbucket:
-  #     url: https://example.com/repository/test-bitbucket.json
-#     bearerToken: ''
-
-## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value.
-## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both.
-## ConfigMap data example:
-##
-## data:
-##   example-dashboard.json: |
-##     RAW_JSON
-##
-dashboardsConfigMaps: {}
-#  default: ""
-
-## Grafana's primary configuration
-## NOTE: values in map will be converted to ini format
-## ref: http://docs.grafana.org/installation/configuration/
-##
-grafana.ini:
-  paths:
-    data: /var/lib/grafana/
-    logs: /var/log/grafana
-    plugins: /var/lib/grafana/plugins
-    provisioning: /etc/grafana/provisioning
-  analytics:
-    check_for_updates: true
-  log:
-    mode: console
-  grafana_net:
-    url: https://grafana.net
-  server:
-    domain: "{{ if (and .Values.ingress.enabled .Values.ingress.hosts) }}{{ .Values.ingress.hosts | first }}{{ else }}''{{ end }}"
-      ## grafana Authentication can be enabled with the following values on grafana.ini
-      # server:
-    # The full public facing url you use in browser, used for redirects and emails
-  #    root_url:
-  # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana
-  # auth.github:
-  #    enabled: false
-  #    allow_sign_up: false
-  #    scopes: user:email,read:org
-  #    auth_url: https://github.com/login/oauth/authorize
-  #    token_url: https://github.com/login/oauth/access_token
-  #    api_url: https://api.github.com/user
-  #    team_ids:
-  #    allowed_organizations:
-  #    client_id:
-  #    client_secret:
-  ## LDAP Authentication can be enabled with the following values on grafana.ini
-  ## NOTE: Grafana will fail to start if the value for ldap.toml is invalid
-  # auth.ldap:
-  #   enabled: true
-  #   allow_sign_up: true
-  #   config_file: /etc/grafana/ldap.toml
-
-## Grafana's LDAP configuration
-## Templated by the template in _helpers.tpl
-## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled
-## ref: http://docs.grafana.org/installation/configuration/#auth-ldap
-## ref: http://docs.grafana.org/installation/ldap/#configuration
-ldap:
-  enabled: false
-  # `existingSecret` is a reference to an existing secret containing the ldap configuration
-  # for Grafana in a key `ldap-toml`.
-  existingSecret: ""
-  # `config` is the content of `ldap.toml` that will be stored in the created secret
-  config: ""
-  # config: |-
-  #   verbose_logging = true
-
-  #   [[servers]]
-  #   host = "my-ldap-server"
-  #   port = 636
-  #   use_ssl = true
-  #   start_tls = false
-  #   ssl_skip_verify = false
-  #   bind_dn = "uid=%s,ou=users,dc=myorg,dc=com"
-
-## Grafana's SMTP configuration
-## NOTE: To enable, grafana.ini must be configured with smtp.enabled
-## ref: http://docs.grafana.org/installation/configuration/#smtp
-smtp:
-  # `existingSecret` is a reference to an existing secret containing the smtp configuration
-  # for Grafana.
-  existingSecret: ""
-  userKey: "user"
-  passwordKey: "password"
-
-## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders
-## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
-sidecar:
-  image:
-    repository: quay.io/kiwigrid/k8s-sidecar
-    tag: 1.22.0
-    sha: ""
-  imagePullPolicy: IfNotPresent
-  resources: {}
-  #   limits:
-  #     cpu: 100m
-  #     memory: 100Mi
-  #   requests:
-  #     cpu: 50m
-  #     memory: 50Mi
-  securityContext: {}
-  # skipTlsVerify Set to true to skip tls verification for kube api calls
-  # skipTlsVerify: true
-  enableUniqueFilenames: false
-  readinessProbe: {}
-  livenessProbe: {}
-  # Log level default for all sidecars. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. Defaults to INFO
-  # logLevel: INFO
-  alerts:
-    enabled: false
-    # Additional environment variables for the alerts sidecar
-    env: {}
-    # Do not reprocess already processed unchanged resources on k8s API reconnect.
-    # ignoreAlreadyProcessed: true
-    # label that the configmaps with alert are marked with
-    label: grafana_alert
-    # value of label that the configmaps with alert are set to
-    labelValue: ""
-    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
-    # logLevel: INFO
-    # If specified, the sidecar will search for alert config-maps inside this namespace.
-    # Otherwise the namespace in which the sidecar is running will be used.
-    # It's also possible to specify ALL to search in all namespaces
-    searchNamespace: null
-    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
-    watchMethod: WATCH
-    # search in configmap, secret or both
-    resource: both
-    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
-    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
-    # watchServerTimeout: 3600
-    #
-    # watchClientTimeout: is a client-side timeout, configuring your local socket.
-    # If you have a network outage dropping all packets with no RST/FIN,
-    # this is how long your client waits before realizing & dropping the connection.
-    # defaults to 66sec (sic!)
-    # watchClientTimeout: 60
-    #
-    # Endpoint to send request to reload alerts
-    reloadURL: "http://localhost:3000/api/admin/provisioning/alerting/reload"
-    # Absolute path to shell script to execute after a alert got reloaded
-    script: null
-    skipReload: false
-    # Deploy the alert sidecar as an initContainer in addition to a container.
-    # Sets the size limit of the alert sidecar emptyDir volume
-    sizeLimit: {}
-  dashboards:
-    enabled: false
-    # Additional environment variables for the dashboards sidecar
-    env: {}
-    # Do not reprocess already processed unchanged resources on k8s API reconnect.
-    # ignoreAlreadyProcessed: true
-    SCProvider: true
-    # label that the configmaps with dashboards are marked with
-    label: grafana_dashboard
-    # value of label that the configmaps with dashboards are set to
-    labelValue: ""
-    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
-    # logLevel: INFO
-    # folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set)
-    folder: /tmp/dashboards
-    # The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead
-    defaultFolderName: null
-    # Namespaces list. If specified, the sidecar will search for config-maps/secrets inside these namespaces.
-    # Otherwise the namespace in which the sidecar is running will be used.
-    # It's also possible to specify ALL to search in all namespaces.
-    searchNamespace: null
-    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
-    watchMethod: WATCH
-    # search in configmap, secret or both
-    resource: both
-    # If specified, the sidecar will look for annotation with this name to create folder and put graph here.
-    # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure.
-    folderAnnotation: null
-    # Endpoint to send request to reload alerts
-    reloadURL: "http://localhost:3000/api/admin/provisioning/dashboards/reload"
-    # Absolute path to shell script to execute after a configmap got reloaded
-    script: null
-    skipReload: false
-    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
-    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
-    # watchServerTimeout: 3600
-    #
-    # watchClientTimeout: is a client-side timeout, configuring your local socket.
-    # If you have a network outage dropping all packets with no RST/FIN,
-    # this is how long your client waits before realizing & dropping the connection.
-    # defaults to 66sec (sic!)
-    # watchClientTimeout: 60
-    #
-    # provider configuration that lets grafana manage the dashboards
-    provider:
-      # name of the provider, should be unique
-      name: sidecarProvider
-      # orgid as configured in grafana
-      orgid: 1
-      # folder in which the dashboards should be imported in grafana
-      folder: ''
-      # type of the provider
-      type: file
-      # disableDelete to activate a import-only behaviour
-      disableDelete: false
-      # allow updating provisioned dashboards from the UI
-      allowUiUpdates: false
-      # allow Grafana to replicate dashboard structure from filesystem
-      foldersFromFilesStructure: false
-    # Additional dashboard sidecar volume mounts
-    extraMounts: []
-    # Sets the size limit of the dashboard sidecar emptyDir volume
-    sizeLimit: {}
-  datasources:
-    enabled: false
-    # Additional environment variables for the datasourcessidecar
-    env: {}
-    # Do not reprocess already processed unchanged resources on k8s API reconnect.
-    # ignoreAlreadyProcessed: true
-    # label that the configmaps with datasources are marked with
-    label: grafana_datasource
-    # value of label that the configmaps with datasources are set to
-    labelValue: ""
-    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
-    # logLevel: INFO
-    # If specified, the sidecar will search for datasource config-maps inside this namespace.
-    # Otherwise the namespace in which the sidecar is running will be used.
-    # It's also possible to specify ALL to search in all namespaces
-    searchNamespace: null
-    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
-    watchMethod: WATCH
-    # search in configmap, secret or both
-    resource: both
-    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
-    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
-    # watchServerTimeout: 3600
-    #
-    # watchClientTimeout: is a client-side timeout, configuring your local socket.
-    # If you have a network outage dropping all packets with no RST/FIN,
-    # this is how long your client waits before realizing & dropping the connection.
-    # defaults to 66sec (sic!)
-    # watchClientTimeout: 60
-    #
-    # Endpoint to send request to reload datasources
-    reloadURL: "http://localhost:3000/api/admin/provisioning/datasources/reload"
-    # Absolute path to shell script to execute after a datasource got reloaded
-    script: null
-    skipReload: false
-    # Deploy the datasource sidecar as an initContainer in addition to a container.
-    # This is needed if skipReload is true, to load any datasources defined at startup time.
-    initDatasources: false
-    # Sets the size limit of the datasource sidecar emptyDir volume
-    sizeLimit: {}
-  plugins:
-    enabled: false
-    # Additional environment variables for the plugins sidecar
-    env: {}
-    # Do not reprocess already processed unchanged resources on k8s API reconnect.
-    # ignoreAlreadyProcessed: true
-    # label that the configmaps with plugins are marked with
-    label: grafana_plugin
-    # value of label that the configmaps with plugins are set to
-    labelValue: ""
-    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
-    # logLevel: INFO
-    # If specified, the sidecar will search for plugin config-maps inside this namespace.
-    # Otherwise the namespace in which the sidecar is running will be used.
-    # It's also possible to specify ALL to search in all namespaces
-    searchNamespace: null
-    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
-    watchMethod: WATCH
-    # search in configmap, secret or both
-    resource: both
-    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
-    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
-    # watchServerTimeout: 3600
-    #
-    # watchClientTimeout: is a client-side timeout, configuring your local socket.
-    # If you have a network outage dropping all packets with no RST/FIN,
-    # this is how long your client waits before realizing & dropping the connection.
-    # defaults to 66sec (sic!)
-    # watchClientTimeout: 60
-    #
-    # Endpoint to send request to reload plugins
-    reloadURL: "http://localhost:3000/api/admin/provisioning/plugins/reload"
-    # Absolute path to shell script to execute after a plugin got reloaded
-    script: null
-    skipReload: false
-    # Deploy the datasource sidecar as an initContainer in addition to a container.
-    # This is needed if skipReload is true, to load any plugins defined at startup time.
-    initPlugins: false
-    # Sets the size limit of the plugin sidecar emptyDir volume
-    sizeLimit: {}
-  notifiers:
-    enabled: false
-    # Additional environment variables for the notifierssidecar
-    env: {}
-    # Do not reprocess already processed unchanged resources on k8s API reconnect.
-    # ignoreAlreadyProcessed: true
-    # label that the configmaps with notifiers are marked with
-    label: grafana_notifier
-    # value of label that the configmaps with notifiers are set to
-    labelValue: ""
-    # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL.
-    # logLevel: INFO
-    # If specified, the sidecar will search for notifier config-maps inside this namespace.
-    # Otherwise the namespace in which the sidecar is running will be used.
-    # It's also possible to specify ALL to search in all namespaces
-    searchNamespace: null
-    # Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds.
-    watchMethod: WATCH
-    # search in configmap, secret or both
-    resource: both
-    # watchServerTimeout: request to the server, asking it to cleanly close the connection after that.
-    # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S
-    # watchServerTimeout: 3600
-    #
-    # watchClientTimeout: is a client-side timeout, configuring your local socket.
-    # If you have a network outage dropping all packets with no RST/FIN,
-    # this is how long your client waits before realizing & dropping the connection.
-    # defaults to 66sec (sic!)
-    # watchClientTimeout: 60
-    #
-    # Endpoint to send request to reload notifiers
-    reloadURL: "http://localhost:3000/api/admin/provisioning/notifications/reload"
-    # Absolute path to shell script to execute after a notifier got reloaded
-    script: null
-    skipReload: false
-    # Deploy the notifier sidecar as an initContainer in addition to a container.
-    # This is needed if skipReload is true, to load any notifiers defined at startup time.
-    initNotifiers: false
-    # Sets the size limit of the notifier sidecar emptyDir volume
-    sizeLimit: {}
-
-## Override the deployment namespace
-##
-namespaceOverride: ""
-
-
-## Add a seperate remote image renderer deployment/service
-imageRenderer:
-  deploymentStrategy: {}
-  # Enable the image-renderer deployment & service
-  enabled: false
-  replicas: 1
-  autoscaling:
-    enabled: false
-    minReplicas: 1
-    maxReplicas: 5
-    targetCPU: "60"
-    targetMemory: ""
-    behavior: {}
-  image:
-    # image-renderer Image repository
-    repository: grafana/grafana-image-renderer
-    # image-renderer Image tag
-    tag: latest
-    # image-renderer Image sha (optional)
-    sha: ""
-    # image-renderer ImagePullPolicy
-    pullPolicy: Always
-  # extra environment variables
-  env:
-    HTTP_HOST: "0.0.0.0"
-    # RENDERING_ARGS: --no-sandbox,--disable-gpu,--window-size=1280x758
-    # RENDERING_MODE: clustered
-    # IGNORE_HTTPS_ERRORS: true
-  # image-renderer deployment serviceAccount
-  serviceAccountName: ""
-  # image-renderer deployment securityContext
-  securityContext: {}
-  # image-renderer deployment container securityContext
-  containerSecurityContext:
-    capabilities:
-      drop: ['ALL']
-    allowPrivilegeEscalation: false
-    readOnlyRootFilesystem: true
-  # image-renderer deployment Host Aliases
-  hostAliases: []
-  # image-renderer deployment priority class
-  priorityClassName: ''
-  service:
-    # Enable the image-renderer service
-    enabled: true
-    # image-renderer service port name
-    portName: 'http'
-    # image-renderer service port used by both service and deployment
-    port: 8081
-    targetPort: 8081
-    # Adds the appProtocol field to the image-renderer service. This allows to work with istio protocol selection. Ex: "http" or "tcp"
-    appProtocol: ""
-  serviceMonitor:
-    ## If true, a ServiceMonitor CRD is created for a prometheus operator
-    ## https://github.com/coreos/prometheus-operator
-    ##
-    enabled: false
-    path: /metrics
-    #  namespace: monitoring  (defaults to use the namespace this chart is deployed to)
-    labels: {}
-    interval: 1m
-    scheme: http
-    tlsConfig: {}
-    scrapeTimeout: 30s
-    relabelings: []
-    # See: https://doc.crds.dev/github.com/prometheus-operator/kube-prometheus/monitoring.coreos.com/ServiceMonitor/v1@v0.11.0#spec-targetLabels
-    targetLabels: []
-      # - targetLabel1
-    # - targetLabel2
-  # If https is enabled in Grafana, this needs to be set as 'https' to correctly configure the callback used in Grafana
-  grafanaProtocol: http
-  # In case a sub_path is used this needs to be added to the image renderer callback
-  grafanaSubPath: ""
-  # name of the image-renderer port on the pod
-  podPortName: http
-  # number of image-renderer replica sets to keep
-  revisionHistoryLimit: 10
-  networkPolicy:
-    # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods
-    limitIngress: true
-    # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods
-    limitEgress: false
-    # Allow additional services to access image-renderer (eg. Prometheus operator when ServiceMonitor is enabled)
-    extraIngressSelectors: []
-  resources: {}
-  #   limits:
-  #     cpu: 100m
-  #     memory: 100Mi
-  #   requests:
-  #     cpu: 50m
-  #     memory: 50Mi
-  ## Node labels for pod assignment
-  ## ref: https://kubernetes.io/docs/user-guide/node-selection/
-  #
-  nodeSelector: {}
-
-  ## Tolerations for pod assignment
-  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
-  ##
-  tolerations: []
-
-  ## Affinity for pod assignment (evaluated as template)
-  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
-  ##
-  affinity: {}
-
-  ## Use an alternate scheduler, e.g. "stork".
-  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
-  ##
-  # schedulerName: "default-scheduler"
-
-
-# Enable backward compatibility of kubernetes where version below 1.13 doesn't have the enableServiceLinks option
-enableKubeBackwardCompatibility: false
-useStatefulSet: false
-# Create a dynamic manifests via values:
-extraObjects: []
-  # - apiVersion: "kubernetes-client.io/v1"
-  #   kind: ExternalSecret
-  #   metadata:
-  #     name: grafana-secrets
-  #   spec:
-  #     backendType: gcpSecretsManager
-  #     data:
-  #       - key: grafana-admin-password
-  #         name: adminPassword
-
-
-ingress:
-  enabled: false
-  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
-  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
-  # ingressClassName: nginx
-  # Values can be templated
-  annotations: {}
-    # kubernetes.io/ingress.class: nginx
-  # kubernetes.io/tls-acme: "true"
-  labels: {}
-  path: /
-
-  # pathType is only for k8s >= 1.1=
-  pathType: Prefix
-
-  hosts:
-    - chart-example.local
-  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
-  extraPaths: []
-  # - path: /*
-  #   backend:
-  #     serviceName: ssl-redirect
-  #     servicePort: use-annotation
-  ## Or for k8s > 1.19
-  # - path: /*
-  #   pathType: Prefix
-  #   backend:
-  #     service:
-  #       name: ssl-redirect
-  #       port:
-  #         name: use-annotation
-
-
-  tls: []
-  #  - secretName: chart-example-tls
-  #    hosts:
-  #      - chart-example.local
-
-
-networkPolicy:
-  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
-  ##
-  enabled: false
-  ## @param networkPolicy.allowExternal Don't require client label for connections
-  ## The Policy model to apply. When set to false, only pods with the correct
-  ## client label will have network access to  grafana port defined.
-  ## When true, grafana will accept connections from any source
-  ## (with the correct destination port).
-  ##
-  ingress: true
-  ## @param networkPolicy.ingress When true enables the creation
-  ## an ingress network policy
-  ##
-  allowExternal: true
-  ## @param networkPolicy.explicitNamespacesSelector A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed
-  ## If explicitNamespacesSelector is missing or set to {}, only client Pods that are in the networkPolicy's namespace
-  ## and that match other criteria, the ones that have the good label, can reach the grafana.
-  ## But sometimes, we want the grafana to be accessible to clients from other namespaces, in this case, we can use this
-  ## LabelSelector to select these namespaces, note that the networkPolicy's namespace should also be explicitly added.
-  ##
-  ## Example:
-  ## explicitNamespacesSelector:
-  ##   matchLabels:
-  ##     role: frontend
-  ##   matchExpressions:
-  ##    - {key: role, operator: In, values: [frontend]}
-  ##
-  explicitNamespacesSelector: {}
-  ##
-  ##
-  ##
-  ##
-  ##
-  ##
-  egress:
-    ## @param networkPolicy.egress.enabled When enabled, an egress network policy will be
-    ## created allowing grafana to connect to external data sources from kubernetes cluster.
-    enabled: false
-    ##
-    ## @param networkPolicy.egress.ports Add individual ports to be allowed by the egress
-    ports: []
-      ## Add ports to the egress by specifying - port: <port number>
-      ## E.X.
-      ## ports:
-      ## - port: 80
-    ## - port: 443
-  ##
-  ##
-  ##
-  ##
-  ##
-  ##
diff --git a/charts/admin-stack/charts/nacos/.helmignore b/charts/admin-stack/charts/nacos/.helmignore
deleted file mode 100644
index 50af031..0000000
--- a/charts/admin-stack/charts/nacos/.helmignore
+++ /dev/null
@@ -1,22 +0,0 @@
-# Patterns to ignore when building packages.
-# This supports shell glob matching, relative path matching, and
-# negation (prefixed with !). Only one pattern per line.
-.DS_Store
-# Common VCS dirs
-.git/
-.gitignore
-.bzr/
-.bzrignore
-.hg/
-.hgignore
-.svn/
-# Common backup files
-*.swp
-*.bak
-*.tmp
-*~
-# Various IDEs
-.project
-.idea/
-*.tmproj
-.vscode/
diff --git a/charts/admin-stack/charts/nacos/Chart.yaml b/charts/admin-stack/charts/nacos/Chart.yaml
deleted file mode 100644
index 54abb3f..0000000
--- a/charts/admin-stack/charts/nacos/Chart.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v2
-appVersion: "1.0"
-name: nacos
-description: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
-home: https://nacos.io
-kubeVersion: '>=1.20.0-0'
-maintainers:
-  - email: dev@dubbo.apache.org
-    name: dubbo
-sources:
-  - https://github.com/alibaba/nacos
-type: application
-version: 0.1.5
diff --git a/charts/admin-stack/charts/nacos/templates/NOTES.txt b/charts/admin-stack/charts/nacos/templates/NOTES.txt
deleted file mode 100644
index e69de29..0000000
--- a/charts/admin-stack/charts/nacos/templates/NOTES.txt
+++ /dev/null
diff --git a/charts/admin-stack/charts/nacos/templates/_helpers.tpl b/charts/admin-stack/charts/nacos/templates/_helpers.tpl
deleted file mode 100644
index fd703f0..0000000
--- a/charts/admin-stack/charts/nacos/templates/_helpers.tpl
+++ /dev/null
@@ -1,61 +0,0 @@
-
-{{/*
-Create chart name and version as used by the chart label.
-*/}}
-{{- define "nacos.chart" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-
-
-{{/* vim: set filetype=mustache: */}}
-{{/*
-Expand the name of the chart.
-*/}}
-{{- define "nacos.name" -}}
-{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-
-{{/*
-Create a default fully qualified app name.
-We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
-If release name contains chart name it will be used as a full name.
-*/}}
-{{- define "nacos.fullname" -}}
-{{- if .Values.fullnameOverride -}}
-{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
-{{- else -}}
-{{- $name := default .Chart.Name .Values.nameOverride -}}
-{{- if contains $name .Release.Name -}}
-{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
-{{- else -}}
-{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Nacos Namespace to use
-*/}}
-{{- define "nacos.namespace" -}}
-{{- if .Values.namespaceOverride -}}
-    {{- .Values.namespaceOverride -}}
-{{- else -}}
-    {{- .Release.Namespace -}}
-{{- end -}}
-{{- end -}}
-
-{{- define "nacos.labels" -}}
-app.kubernetes.io/name: {{ include "nacos.name" . }}
-helm.sh/chart: {{ include "nacos.chart" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end -}}
-
-
-{{/*
-Labels to use on sts.spec.selector.matchLabels and svc.spec.selector
-*/}}
-{{- define "nacos.matchLabels" -}}
-app.kubernetes.io/name: {{ include "nacos.name" . }}
-{{- end -}}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/nacos/templates/configmap.yaml b/charts/admin-stack/charts/nacos/templates/configmap.yaml
deleted file mode 100644
index f2243bf..0000000
--- a/charts/admin-stack/charts/nacos/templates/configmap.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-{{- if .Values.enabled }}
-{{- if eq .Values.storage.type "mysql"}}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ template "nacos.fullname" . }}-configmap
-  namespace: {{ template "nacos.namespace" . }}
-data:
-  {{- with .Values.storage.db }}
-  mysql.db.host: {{ .host }}
-  mysql.db.name: {{ .name }}
-  mysql.port: "{{ .port | default 3306 }}"
-  mysql.user: {{ .username }}
-  mysql.password: {{ .password }}
-  mysql.param: {{ .param | default "characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false" }}
-  {{- end }}
-  {{- end }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/nacos/templates/networkpolicy.yaml b/charts/admin-stack/charts/nacos/templates/networkpolicy.yaml
deleted file mode 100644
index 195b068..0000000
--- a/charts/admin-stack/charts/nacos/templates/networkpolicy.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-{{- if .Values.networkPolicy.enabled }}
-kind: NetworkPolicy
-apiVersion: networking.k8s.io/v1 {{ include "nacos.networkPolicy.apiVersion" . }}
-metadata:
-  name: {{ include "nacos.fullname" . }}
-  namespace: {{ template "nacos.namespace" . }}
-  labels: {{- include "nacos.labels" . | nindent 4 }}
-spec:
-  podSelector:
-    matchLabels: {{- include "nacos.matchLabels" . | nindent 6 }}
-  policyTypes:
-    - Ingress
-  ingress:
-    - ports:
-        - port: {{ .Values.service.port }}
-      from:
-        - podSelector:
-            matchLabels:
-              {{ include "nacos.fullname" . }}-client: "true"
-        - podSelector:
-            matchLabels: {{- include "nacos.matchLabels" . | nindent 14 }}
-    - ports:
-        - port: {{ .Values.service.port }}
-      from:
-        - podSelector:
-            matchLabels: {{- include "nacos.matchLabels" . | nindent 14 }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/nacos/templates/pdb.yaml b/charts/admin-stack/charts/nacos/templates/pdb.yaml
deleted file mode 100644
index 869906b..0000000
--- a/charts/admin-stack/charts/nacos/templates/pdb.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-{{- $replica := int .Values.replicas }}
-{{- if and .Values.podDisruptionBudget.enabled (gt $replica 1) }}
-apiVersion: {{ include "nacos.policy.apiVersion" . }}
-kind: PodDisruptionBudget
-metadata:
-  name: {{ template "nacos.fullname" . }}
-  namespace: {{ template "nacos.namespace" . }}
-  labels: {{- include "nacos.labels" . | nindent 4 }}
-spec:
-  {{- if .Values.podDisruptionBudget.minAvailable }}
-  minAvailable: {{ .Values.podDisruptionBudget.minAvailable }}
-  {{- end  }}
-  {{- if .Values.podDisruptionBudget.maxUnavailable }}
-  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }}
-  {{- end  }}
-  selector:
-    matchLabels: {{- include "nacos.matchLabels" . | nindent 6 }}
-{{- end }}
diff --git a/charts/admin-stack/charts/nacos/templates/statefulset.yaml b/charts/admin-stack/charts/nacos/templates/statefulset.yaml
deleted file mode 100644
index 563fc2e..0000000
--- a/charts/admin-stack/charts/nacos/templates/statefulset.yaml
+++ /dev/null
@@ -1,167 +0,0 @@
-{{- if .Values.enabled }}
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
-  name: {{ template "nacos.fullname" . }}
-  namespace: {{ template "nacos.namespace" . }}
-spec:
-  replicas: {{ .Values.replicas }}
-  {{- if eq .Values.global.mode "cluster" }}
-  serviceName: nacos-headless
-  {{- else }}
-  serviceName: nacos
-  {{- end }}
-  selector:
-    matchLabels: {{- include "nacos.matchLabels" . | nindent 6 }}
-  template:
-    metadata:
-      labels:
-        app.kubernetes.io/name: nacos
-    spec:
-      {{- with .Values.nodeSelector }}
-      nodeSelector:
-      {{- toYaml . | nindent 8 }}
-      {{- end }}
-      {{- with .Values.affinity }}
-      affinity:
-      {{- toYaml . | nindent 8 }}
-      {{- end }}
-      {{- with .Values.tolerations }}
-      tolerations:
-      {{- toYaml . | nindent 8 }}
-      {{- end }}
-      {{- if and (eq .Values.global.mode "cluster") (.Values.plugin.enable) }}
-      initContainers:
-        - name: peer-finder-plugin-install
-          image: {{.Values.plugin.image.repository }}:{{.Values.plugin.image.tag }}
-          imagePullPolicy: {{ .Values.plugin.image.pullPolicy }}
-          volumeMounts:
-            - mountPath: /home/nacos/plugins/peer-finder
-              name: data
-              subPath: peer-finder
-      {{- end }}
-      containers:
-        - name: nacos
-          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
-          imagePullPolicy: {{ .Values.image.pullPolicy }}
-          startupProbe:
-            initialDelaySeconds: 180
-            periodSeconds: 5
-            timeoutSeconds: 10
-            httpGet:
-              scheme: HTTP
-              port: {{ .Values.nacos.service.port }}
-              path: /nacos/v1/console/health/readiness
-          livenessProbe:
-            initialDelaySeconds: 10
-            periodSeconds: 5
-            timeoutSeconds: 10
-            httpGet:
-              scheme: HTTP
-              port: {{ .Values.service.port }}
-              path: /nacos/v1/console/health/liveness
-          ports:
-            - name: http
-              containerPort: {{ .Values.service.port }}
-              protocol: TCP
-            - containerPort: {{ add .Values.service.port 1000 }}
-              name: client-rpc
-            - containerPort: {{ add .Values.service.port 1001 }}
-              name: raft-rpc
-            - containerPort: 7848
-              name: old-raft-rpc
-          resources:
-          {{- toYaml .Values.resources | nindent 12 }}
-          env:
-            - name: NACOS_SERVER_PORT
-              value: {{ .Values.service.port | quote }}
-            - name: NACOS_APPLICATION_PORT
-              value: {{ .Values.service.port | quote }}
-            - name: PREFER_HOST_MODE
-              value: {{ .Values.service.port | quote }}
-            {{- if eq .Values.nacos.mode "standalone" }}
-            - name: MODE
-              value: "standalone"
-
-            {{- else if eq .Values.global.mode "cluster" }}
-            - name: SERVICE_NAME
-              value: "nacos-hs"
-            - name: DOMAIN_NAME
-              value: {{ .Values.nacos.domainName | quote }}
-            - name: POD_NAMESPACE
-              valueFrom:
-                fieldRef:
-                  apiVersion: v1
-                  fieldPath: metadata.namespace
-            {{- end }}
-            {{- if eq .Values.storage.type "mysql" }}
-            - name: SPRING_DATASOURCE_PLATFORM
-              value: "mysql"
-            - name: MYSQL_SERVICE_HOST
-              valueFrom:
-                configMapKeyRef:
-                  name: nacos-cm
-                  key: mysql.db.host
-            - name: MYSQL_SERVICE_DB_NAME
-              valueFrom:
-                configMapKeyRef:
-                  name: nacos-cm
-                  key: mysql.db.name
-            - name: MYSQL_SERVICE_PORT
-              valueFrom:
-                configMapKeyRef:
-                  name: nacos-cm
-                  key: mysql.port
-            - name: MYSQL_SERVICE_USER
-              valueFrom:
-                configMapKeyRef:
-                  name: nacos-cm
-                  key: mysql.user
-            - name: MYSQL_SERVICE_PASSWORD
-              valueFrom:
-                configMapKeyRef:
-                  name: nacos-cm
-                  key: mysql.password
-            - name: MYSQL_SERVICE_DB_PARAM
-              valueFrom:
-                configMapKeyRef:
-                  name: nacos-cm
-                  key: mysql.param
-            {{- else }}
-            - name: EMBEDDED_STORAGE
-              value: embedded
-          {{- end }}
-          volumeMounts:
-            - name: data
-              mountPath: /home/nacos/plugins/peer-finder
-              subPath: peer-finder
-            - name: data
-              mountPath: /home/nacos/data
-              subPath: data
-            - name: data
-              mountPath: /home/nacos/logs
-              subPath: logs
-      {{- if not .Values.persistence.enabled  }}
-      volumes:
-        - name: data
-          emptyDir: {}
-  {{- end }}
-  {{- if .Values.persistence.enabled }}
-  volumeClaimTemplates:
-    - metadata:
-        name: data
-      spec:
-        accessModes:
-        {{- range .Values.persistence.accessModes }}
-          - {{ . | quote }}
-        {{- end }}
-        resources:
-          requests:
-            storage: {{ .Values.persistence.size }}
-        {{ if .Values.persistence.ClaimName }}
-            claimName: {{ .Values.persistence.ClaimName }}
-        {{- else -}}
-            emptyDir: {{ .Values.persistence.emptyDir }}
-  {{- end }}
-  {{- end }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/nacos/templates/svc-headless.yaml b/charts/admin-stack/charts/nacos/templates/svc-headless.yaml
deleted file mode 100644
index 4ac1bff..0000000
--- a/charts/admin-stack/charts/nacos/templates/svc-headless.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-{{- if .Values.enabled }}
-{{- if and (eq .Values.global.mode "cluster") }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ template "nacos.name" . }}-headless
-  namespace: {{ template "nacos.namespace" }}
-  labels: {{- include "nacos.labels" . | nindent 4 }}
-spec:
-  clusterIP: None
-  ports:
-    - port: {{ .Values.service.port }}
-      targetPort: {{ .Values.service.port }}
-      protocol: TCP
-      name: http
-    - port: {{ add .Values.service.port 1000 }}
-      name: client-rpc
-      targetPort: {{ add .Values.service.port 1000 }}
-    - port: {{ add .Values.service.port 1001 }}
-      name: raft-rpc
-      targetPort: {{ add .Values.service.port 1001 }}
-    - port: 7848
-      name: old-raft-rpc
-      targetPort: 7848
-      protocol: TCP
-  selector: {{- include "nacos.matchLabels" . | nindent 4 }}
-  {{- end }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/nacos/templates/svc.yaml b/charts/admin-stack/charts/nacos/templates/svc.yaml
deleted file mode 100644
index bbcbb55..0000000
--- a/charts/admin-stack/charts/nacos/templates/svc.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-{{- if .Values.enabled }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ template "nacos.name" . }}
-  namespace: {{ template "nacos.namespace" . }}
-  labels: {{- include "nacos.labels" . | nindent 4 }}
-spec:
-  type: {{ .Values.service.type }}
-  ports:
-    - port: {{ .Values.service.port }}
-      targetPort: {{ .Values.service.port }}
-      protocol: TCP
-      name: http
-    - port: {{ add .Values.service.port 1000 }}
-      name: client-rpc
-      targetPort: {{add .Values.service.port 1000 }}
-    - port: {{add .Values.service.port 1001 }}
-      name: raft-rpc
-      targetPort: {{add .Values.service.port 1001 }}
-    - port: 7848
-      name: old-raft-rpc
-      targetPort: 7848
-      protocol: TCP
-      {{- if eq .Values.service.type "NodePort" }}
-      nodePort: {{ .Values.service.nodePort }}
-  {{- end }}
-  selector: {{- include "nacos.matchLabels" . | nindent 4 }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/nacos/values.yaml b/charts/admin-stack/charts/nacos/values.yaml
deleted file mode 100644
index 8bd3e6d..0000000
--- a/charts/admin-stack/charts/nacos/values.yaml
+++ /dev/null
@@ -1,162 +0,0 @@
-global:
-  mode: standalone
-  # mode: cluster
-
-
-image:
-  registry: docker.io
-  ##  e.g registry.k8s.io
-  repository: nacos/nacos-server
-  tag: latest
-  pullPolicy: IfNotPresent
-
-
-plugin:
-  enable: true
-  image:
-    repository: nacos/nacos-peer-finder-plugin
-    tag: 1.1
-    pullPolicy: IfNotPresent
-
-
-replicas: 1
-
-
-domainName: cluster.local
-
-
-storage:
-  type: ""
-#    type: mysql
-#    db:
-#      host: localhost
-#      name: nacos
-#      port: 3306
-#      username: usernmae
-#      password: password
-#      param: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
-
-
-service:
-  name: http
-  ##
-  ## Service name.
-  ##
-  type: NodePort
-  ##
-  ## Service type.
-  ##
-  port: 8848
-  ##
-  ## Service port.
-  ##
-  nodePort: 30000
-  ##
-  ## Service nodePort.
-  ##
-  clusterIP: ""
-  ##
-  ## Service clusterIP.
-  ##
-  loadBalancerIP: ""
-  ##
-  ## Service loadBalancerIP.
-  ##
-  loadBalancerSourceRanges: ""
-  ##
-  ## Service loadBalancerSourceRanges.
-  ##
-  externalIPs: ""
-  ##
-  ## Service externalIPs.
-
-
-persistence:
-  enabled: false
-  accessModes:
-    - ReadWriteOnce
-  storageClassName: ""
-  size: 5Gi
-  ClaimName: {}
-  ## persistence emptyDir
-  emptyDir: {}
-
-
-## See `kubectl explain poddisruptionbudget.spec` for more
-## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
-podDisruptionBudget:
-  enabled: false
-  minAvailable: 1
-  # maxUnavailable: 1
-
-
-ingress:
-  enabled: false
-  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
-  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
-  # ingressClassName: nginx
-  # Values can be templated
-  annotations: {}
-  # kubernetes.io/ingress.class: nginx
-  # kubernetes.io/tls-acme: "true"
-  labels: {}
-  path: /
-  ##
-  ##
-  # pathType is only for k8s >= 1.1=
-  pathType: Prefix
-  ##
-  ##
-  hosts:
-    - chart-example.local
-  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
-  extraPaths: []
-  # - path: /*
-  #   backend:
-  #     serviceName: ssl-redirect
-  #     servicePort: use-annotation
-  ## Or for k8s > 1.19
-  # - path: /*
-  #   pathType: Prefix
-  #   backend:
-  #     service:
-  #       name: ssl-redirect
-  #       port:
-  #         name: use-annotation
-  ##
-  ##
-  tls: []
-  #  - secretName: chart-example-tls
-  #    hosts:
-  #      - chart-example.local
-
-
-networkPolicy:
-  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
-  ##
-  enabled: false
-  ## @param networkPolicy.allowExternal Don't require client label for connections
-  ## The Policy model to apply. When set to false, only pods with the correct
-  ## client label will have network access to  dubbo-admin port defined.
-  ## When true, dubbo-admin will accept connections from any source
-  ## (with the correct destination port).
-  ##
-  ingress: true
-  ## @param networkPolicy.ingress When true enables the creation
-  ## an ingress network policy
-  ##
-  ##
-  ##
-  ##
-  egress:
-    ## @param networkPolicy.egress.enabled When enabled, an egress network policy will be
-    ## created allowing dubbo-admin to connect to external data sources from kubernetes cluster.
-    enabled: false
-    ##
-    ## @param networkPolicy.egress.ports Add individual ports to be allowed by the egress
-    ports: []
-      ## Add ports to the egress by specifying - port: <port number>
-      ## E.X.
-      ## ports:
-      ## - port: 80
-    ## - port: 443
\ No newline at end of file
diff --git a/charts/admin-stack/charts/zookeeper/.helmignore b/charts/admin-stack/charts/zookeeper/.helmignore
deleted file mode 100644
index 0e8a0eb..0000000
--- a/charts/admin-stack/charts/zookeeper/.helmignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Patterns to ignore when building packages.
-# This supports shell glob matching, relative path matching, and
-# negation (prefixed with !). Only one pattern per line.
-.DS_Store
-# Common VCS dirs
-.git/
-.gitignore
-.bzr/
-.bzrignore
-.hg/
-.hgignore
-.svn/
-# Common backup files
-*.swp
-*.bak
-*.tmp
-*.orig
-*~
-# Various IDEs
-.project
-.idea/
-*.tmproj
-.vscode/
diff --git a/charts/admin-stack/charts/zookeeper/Chart.yaml b/charts/admin-stack/charts/zookeeper/Chart.yaml
deleted file mode 100644
index 1cea2e7..0000000
--- a/charts/admin-stack/charts/zookeeper/Chart.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: v2
-appVersion: 3.8.1
-description: Apache ZooKeeper provides a reliable, centralized register of configuration
-  data and services for distributed applications.
-home: https://github.com/bitnami/charts/tree/main/bitnami/zookeeper
-maintainers:
-  - name: Bitnami
-    url: https://github.com/bitnami/charts
-name: zookeeper
-sources:
-  - https://zookeeper.apache.org/
-version: 11.1.2
diff --git a/charts/admin-stack/charts/zookeeper/templates/NOTES.txt b/charts/admin-stack/charts/zookeeper/templates/NOTES.txt
deleted file mode 100644
index e69de29..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/NOTES.txt
+++ /dev/null
diff --git a/charts/admin-stack/charts/zookeeper/templates/_helpers.tpl b/charts/admin-stack/charts/zookeeper/templates/_helpers.tpl
deleted file mode 100644
index 210ffd3..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/_helpers.tpl
+++ /dev/null
@@ -1,62 +0,0 @@
-{{/*
-Create chart name and version as used by the chart label.
-*/}}
-{{- define "zookeeper.chart" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-
-
-{{/* vim: set filetype=mustache: */}}
-{{/*
-Expand the name of the chart.
-*/}}
-{{- define "zookeeper.name" -}}
-{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-
-
-{{/*
-Create a default fully qualified app name.
-We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
-If release name contains chart name it will be used as a full name.
-*/}}
-{{- define "zookeeper.fullname" -}}
-{{- if .Values.fullnameOverride -}}
-{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
-{{- else -}}
-{{- $name := default .Chart.Name .Values.nameOverride -}}
-{{- if contains $name .Release.Name -}}
-{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
-{{- else -}}
-{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
-{{- end -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Return ZooKeeper Namespace to use
-*/}}
-{{- define "zookeeper.namespace" -}}
-{{- if .Values.namespaceOverride -}}
-    {{- .Values.namespaceOverride -}}
-{{- else -}}
-    {{- .Release.Namespace -}}
-{{- end -}}
-{{- end -}}
-
-{{- define "zookeeper.labels" -}}
-app.kubernetes.io/name: {{ include "zookeeper.name" . }}
-helm.sh/chart: {{ include "zookeeper.chart" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end -}}
-
-
-
-{{/*
-Labels to use on sts.spec.selector.matchLabels and svc.spec.selector
-*/}}
-{{- define "zookeeper.matchLabels" -}}
-app.kubernetes.io/name: {{ include "zookeeper.name" . }}
-{{- end -}}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/zookeeper/templates/configmap.yaml b/charts/admin-stack/charts/zookeeper/templates/configmap.yaml
deleted file mode 100644
index 8532f0d..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/configmap.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-{{- if .Values.enabled }}
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ printf "%s-scripts" (include "zookeeper.fullname" .) }}
-  namespace: {{ template "zookeeper.namespace" . }}
-data:
-  setup.sh: |-
-    #!/bin/bash
-
-    # Execute entrypoint as usual after obtaining ZOO_SERVER_ID
-    # check ZOO_SERVER_ID in persistent volume via myid
-    # if not present, set based on POD hostname
-    if [[ -f "/bitnami/zookeeper/data/myid" ]]; then
-        export ZOO_SERVER_ID="$(cat /bitnami/zookeeper/data/myid)"
-    else
-        HOSTNAME="$(hostname -s)"
-        if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then
-            ORD=${BASH_REMATCH[2]}
-            export ZOO_SERVER_ID="$((ORD + {{ .Values.minServerId }} ))"
-        else
-            echo "Failed to get index from hostname $HOST"
-            exit 1
-        fi
-    fi
-    exec /entrypoint.sh /run.sh
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/zookeeper/templates/networkpolicy.yaml b/charts/admin-stack/charts/zookeeper/templates/networkpolicy.yaml
deleted file mode 100644
index 7b48c66..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/networkpolicy.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-{{- if .Values.networkPolicy.enabled }}
-kind: NetworkPolicy
-apiVersion: {{ include "zookeeper.networkPolicy.apiVersion" . }}
-metadata:
-  name: {{ include "zookeeper.fullname" . }}
-  namespace: {{ template "zookeeper.namespace" . }}
-  labels: {{- include "zookeeper.labels" . | nindent 4 }}
-    {{- if .Values.Labels }}
-    {{- include "zookeeper.tplvalues" ( dict "value" .Values.Labels "context" $ ) | nindent 4 }}
-    {{- end }}
-  {{- if .Values.Annotations }}
-  annotations: {{- include "zookeeper.tplvalues" ( dict "value" .Values.Annotations "context" $ ) | nindent 4 }}
-  {{- end }}
-spec:
-  podSelector:
-    matchLabels: {{- include "zookeeper.matchLabels" . | nindent 6 }}
-  policyTypes:
-    - Ingress
-  ingress:
-    # Allow inbound connections to ZooKeeper
-    - ports:
-        - port: {{ .Values.containerPorts.client }}
-      {{- if not .Values.networkPolicy.allowExternal }}
-      from:
-        - podSelector:
-            matchLabels:
-              {{ include "zookeeper.fullname" . }}-client: "true"
-        - podSelector:
-            matchLabels: {{- include "zookeeper.matchLabels" . | nindent 14 }}
-      {{- end }}
-    # Allow internal communications between nodes
-    - ports:
-        - port: {{ .Values.containerPorts.follower }}
-        - port: {{ .Values.containerPorts.election }}
-      from:
-        - podSelector:
-            matchLabels: {{- include "zookeeper.matchLabels" . | nindent 14 }}
-{{- end }}
diff --git a/charts/admin-stack/charts/zookeeper/templates/pdb.yaml b/charts/admin-stack/charts/zookeeper/templates/pdb.yaml
deleted file mode 100644
index c3d799e..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/pdb.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-{{- $replica := int .Values.replicas }}
-{{- if and .Values.podDisruptionBudget.enabled (gt $replica 1) }}
-apiVersion: {{ include "zookeeper.policy.apiVersion" . }}
-kind: PodDisruptionBudget
-metadata:
-  name: {{ template "zookeeper.fullname" . }}
-  namespace: {{ template "zookeeper.namespace" . }}
-  labels: {{- include "zookeeper.labels" . | nindent 4 }}
-    app.kubernetes.io/component: zookeeper
-    {{- if .Values.Labels }}
-    {{- include "zookeeper.tplvalues" ( dict "value" .Values.Labels "context" $ ) | nindent 4 }}
-    {{- end }}
-  {{- if .Values.Annotations }}
-  annotations: {{- include "zookeeper.tplvalues" ( dict "value" .Values.Annotations "context" $ ) | nindent 4 }}
-  {{- end }}
-spec:
-  {{- if .Values.podDisruptionBudget.minAvailable }}
-  minAvailable: {{ .Values.podDisruptionBudget.minAvailable }}
-  {{- end  }}
-  {{- if .Values.podDisruptionBudget.maxUnavailable }}
-  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }}
-  {{- end  }}
-  selector:
-    matchLabels: {{- include "zookeeper.matchLabels" . | nindent 6 }}
-      app.kubernetes.io/component: zookeeper
-{{- end }}
diff --git a/charts/admin-stack/charts/zookeeper/templates/statefulset.yaml b/charts/admin-stack/charts/zookeeper/templates/statefulset.yaml
deleted file mode 100644
index 4d07bdf..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/statefulset.yaml
+++ /dev/null
@@ -1,168 +0,0 @@
-{{- if .Values.enabled }}
-apiVersion: {{ include "zookeeper.statefulset.apiVersion" . }}
-kind: StatefulSet
-metadata:
-  name: {{ template "zookeeper.fullname" . }}
-  namespace: {{ template "zookeeper.namespace" . }}
-spec:
-  replicas: {{ .Values.replicas }}
-  selector:
-    matchLabels: {{- include "zookeeper.matchLabels" . | nindent 6 }}
-  serviceName: {{ printf "%s-%s" (include "zookeeper.fullname" .) (default "headless" .Values.service.headless.servicenameOverride) | trunc 63 | trimSuffix "-" }}
-  template:
-    metadata:
-      labels:
-        app.kubernetes.io/name: zookeeper
-    spec:
-      containers:
-        - name: zookeeper
-          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
-          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
-          {{- if .Values.containerSecurityContext.enabled }}
-          securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
-          {{- end }}
-          {{- if .Values.resources }}
-          resources: {{- toYaml .Values.extraresources | nindent 12 }}
-          {{- end }}
-          env:
-            - name: BITNAMI_DEBUG
-              value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
-            - name: ZOO_DATA_LOG_DIR
-              value: {{ .Values.dataLogDir | quote }}
-            - name: ZOO_PORT_NUMBER
-              value: {{ .Values.containerPorts.client | quote }}
-            - name: ZOO_TICK_TIME
-              value: {{ .Values.tickTime | quote }}
-            - name: ZOO_INIT_LIMIT
-              value: {{ .Values.initLimit | quote }}
-            - name: ZOO_SYNC_LIMIT
-              value: {{ .Values.syncLimit | quote }}
-            - name: ZOO_PRE_ALLOC_SIZE
-              value: {{ .Values.preAllocSize | quote }}
-            - name: ZOO_SNAPCOUNT
-              value: {{ .Values.snapCount | quote }}
-            - name: ZOO_MAX_CLIENT_CNXNS
-              value: {{ .Values.maxClientCnxns | quote }}
-            - name: ZOO_4LW_COMMANDS_WHITELIST
-              value: {{ .Values.fourlwCommandsWhitelist | quote }}
-            - name: ZOO_LISTEN_ALLIPS_ENABLED
-              value: {{ ternary "yes" "no" .Values.listenOnAllIPs | quote }}
-            - name: ZOO_AUTOPURGE_INTERVAL
-              value: {{ .Values.autopurge.purgeInterval | quote }}
-            - name: ZOO_AUTOPURGE_RETAIN_COUNT
-              value: {{ .Values.autopurge.snapRetainCount | quote }}
-            - name: ZOO_MAX_SESSION_TIMEOUT
-              value: {{ .Values.maxSessionTimeout | quote }}
-            - name: ZOO_ENABLE_AUTH
-              value: {{ ternary "yes" "no" .Values.auth.client.enabled | quote }}
-            - name: ZOO_SERVERS
-              {{- $replicaCount := int .Values.replicas }}
-              {{- $minServerId := int .Values.minServerId }}
-              {{- $followerPort := int .Values.containerPorts.follower }}
-              {{- $electionPort := int .Values.containerPorts.election }}
-              {{- $releaseNamespace := include "zookeeper.namespace" . }}
-              {{- $zookeeperFullname := include "zookeeper.fullname" . }}
-              {{- $zookeeperHeadlessServiceName := printf "%s-%s" $zookeeperFullname "headless" | trunc 63  }}
-              {{- $clusterDomain := .Values.clusterDomain }}
-              value: {{ range $i, $e := until $replicaCount }}{{ $zookeeperFullname }}-{{ $e }}.{{ $zookeeperHeadlessServiceName }}.{{ $releaseNamespace }}.svc.{{ $clusterDomain }}:{{ $followerPort }}:{{ $electionPort }}::{{ add $e $minServerId }} {{ end }}
-            - name: ZOO_HEAP_SIZE
-              value: {{ .Values.heapSize | quote }}
-            - name: ZOO_LOG_LEVEL
-              value: {{ .Values.logLevel | quote }}
-            - name: ALLOW_ANONYMOUS_LOGIN
-              value: {{ ternary "no" "yes" .Values.auth.client.enabled | quote }}
-          ports:
-            {{- if not .Values.service.disableBaseClientPort }}
-            - name: client
-              containerPort: {{ .Values.containerPorts.client }}
-            {{- end }}
-            - name: follower
-              containerPort: {{ .Values.containerPorts.follower }}
-            - name: election
-              containerPort: {{ .Values.containerPorts.election }}
-          volumeMounts:
-            - name: scripts
-              mountPath: /scripts/setup.sh
-              subPath: setup.sh
-            - name: data
-              mountPath: /bitnami/zookeeper
-            {{- if .Values.dataLogDir }}
-            - name: data-log
-              mountPath: {{ .Values.dataLogDir }}
-            {{- end }}
-            {{- if or .Values.configuration .Values.existingConfigmap }}
-            - name: config
-              mountPath: /opt/bitnami/zookeeper/conf/zoo.cfg
-              subPath: zoo.cfg
-            {{- end }}
-      volumes:
-        - name: scripts
-          configMap:
-            name: {{ printf "%s-scripts" (include "zookeeper.fullname" .) }}
-            defaultMode: 0755
-        {{- if or .Values.configuration .Values.existingConfigmap }}
-        - name: config
-          configMap:
-            name: {{ include "zookeeper.configmapName" . }}
-        {{- end }}
-        {{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
-        - name: data
-          persistentVolumeClaim:
-            claimName: {{ printf "%s" (tpl .Values.persistence.existingClaim .) }}
-        {{- else if not .Values.persistence.enabled }}
-        - name: data
-          emptyDir: {}
-        {{- end }}
-        {{- if and .Values.persistence.enabled .Values.persistence.dataLogDir.existingClaim }}
-        - name: data-log
-          persistentVolumeClaim:
-            claimName: {{ printf "%s" (tpl .Values.persistence.dataLogDir.existingClaim .) }}
-        {{- else if and ( not .Values.persistence.enabled ) .Values.dataLogDir }}
-        - name: data-log
-          emptyDir: {}
-        {{- end }}
-        {{- if .Values.extraVolumes }}
-        {{- include "zookeeper.tplvalues" (dict "value" .Values.extraVolumes "context" $) | nindent 8 }}
-        {{- end }}
-  {{- if and .Values.persistence.enabled (not (and .Values.persistence.existingClaim .Values.persistence.dataLogDir.existingClaim) ) }}
-  volumeClaimTemplates:
-    {{- if not .Values.persistence.existingClaim }}
-    - metadata:
-        name: data
-        {{- if .Values.persistence.annotations }}
-        annotations: {{- include "zookeeper.tplvalues" (dict "value" .Values.persistence.annotations "context" $) | nindent 10 }}
-        {{- end }}
-        {{- if .Values.persistence.labels }}
-        labels: {{- include "zookeeper.tplvalues" (dict "value" .Values.persistence.labels "context" $) | nindent 10 }}
-        {{- end }}
-      spec:
-        accessModes:
-        {{- range .Values.persistence.accessModes }}
-          - {{ . | quote }}
-        {{- end }}
-        resources:
-          requests:
-            storage: {{ .Values.persistence.size | quote }}
-        {{- include "zookeeper.storage.class" (dict "persistence" .Values.persistence "global" .Values.global) | nindent 8 }}
-        {{- if .Values.persistence.selector }}
-        selector: {{- include "zookeeper.tplvalues" (dict "value" .Values.persistence.selector "context" $) | nindent 10 }}
-        {{- end }}
-    {{- end }}
-    {{- if and (not .Values.persistence.dataLogDir.existingClaim) .Values.dataLogDir }}
-    - metadata:
-        name: data-log
-      spec:
-        accessModes:
-        {{- range .Values.persistence.accessModes }}
-          - {{ . | quote }}
-        {{- end }}
-        resources:
-          requests:
-            storage: {{ .Values.persistence.dataLogDir.size | quote }}
-        {{- include "zookeeper.storage.class" (dict "persistence" .Values.persistence "global" .Values.global) | nindent 8 }}
-        {{- if .Values.persistence.dataLogDir.selector }}
-        selector: {{- include "zookeeper.tplvalues" (dict "value" .Values.persistence.dataLogDir.selector "context" $) | nindent 10 }}
-        {{- end }}
-    {{- end }}
-  {{- end }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/zookeeper/templates/svc-headless.yaml b/charts/admin-stack/charts/zookeeper/templates/svc-headless.yaml
deleted file mode 100644
index 008a04b..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/svc-headless.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-{{- if .Values.enabled }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ template "zookeeper.name" . }}-headless
-  namespace: {{ template "zookeeper.namespace" . }}
-  labels: {{- include "zookeeper.labels" . | nindent 4 }}
-spec:
-  type: {{ .Values.service.type }}
-  clusterIP: None
-  ports:
-    - name: tcp-client
-      port: {{ .Values.service.ports.client }}
-      targetPort: client
-    - name: tcp-follower
-      port: {{ .Values.service.ports.follower }}
-      targetPort: follower
-    - name: tcp-election
-      port: {{ .Values.service.ports.election }}
-      targetPort: election
-  selector: {{- include "zookeeper.matchLabels" . | nindent 4 }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/zookeeper/templates/svc.yaml b/charts/admin-stack/charts/zookeeper/templates/svc.yaml
deleted file mode 100644
index a08c07b..0000000
--- a/charts/admin-stack/charts/zookeeper/templates/svc.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-{{- if .Values.enabled }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ template "zookeeper.name" . }}
-  namespace: {{ template "zookeeper.namespace" . }}
-  labels: {{- include "zookeeper.labels" . | nindent 4 }}
-spec:
-  type: {{ .Values.service.type }}
-  {{- if and .Values.service.clusterIP (eq .Values.service.type "ClusterIP") }}
-  clusterIP: {{ .Values.service.clusterIP }}
-  {{- end }}
-  {{- if or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort") }}
-  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}
-  {{- end }}
-  {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerSourceRanges)) }}
-  loadBalancerSourceRanges: {{ .Values.service.loadBalancerSourceRanges }}
-  {{- end }}
-  {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP)) }}
-  loadBalancerIP: {{ .Values.service.loadBalancerIP }}
-  {{- end }}
-  {{- if .Values.service.sessionAffinity }}
-  sessionAffinity: {{ .Values.service.sessionAffinity }}
-  {{- end }}
-  {{- if .Values.service.sessionAffinityConfig }}
-  sessionAffinityConfig: {{- include "zookeeper.tplvalues" (dict "value" .Values.service.sessionAffinityConfig "context" $) | nindent 4 }}
-  {{- end }}
-  ports:
-    {{- if not .Values.service.disableBaseClientPort }}
-    - name: tcp-client
-      port: {{ .Values.service.ports.client }}
-      targetPort: client
-      {{- if and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePorts.client)) }}
-      nodePort: {{ .Values.service.nodePorts.client }}
-      {{- else if eq .Values.service.type "ClusterIP" }}
-      {{- end }}
-    {{- end }}
-    - name: tcp-follower
-      port: {{ .Values.service.ports.follower }}
-      targetPort: follower
-    - name: tcp-election
-      port: {{ .Values.service.ports.election }}
-      targetPort: election
-    {{- if .Values.service.extraPorts }}
-    {{- include "zookeeper.tplvalues" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }}
-    {{- end }}
-  selector: {{- include "zookeeper.matchLabels" . | nindent 4 }}
-  {{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/zookeeper/values.yaml b/charts/admin-stack/charts/zookeeper/values.yaml
deleted file mode 100644
index 670779e..0000000
--- a/charts/admin-stack/charts/zookeeper/values.yaml
+++ /dev/null
@@ -1,499 +0,0 @@
-image:
-  repository: bitnami/zookeeper
-  tag: 3.8.1-debian-11-r0
-  digest: ""
-  debug: false
-  pullPolicy: IfNotPresent
-
-replicas: 1
-
-persistence:
-  ## @param persistence.enabled Enable ZooKeeper data persistence using PVC. If false, use emptyDir
-  ##
-  enabled: false
-  ## @param persistence.existingClaim Name of an existing PVC to use (only when deploying a single replica)
-  ##
-  existingClaim: ""
-  ## @param persistence.storageClass PVC Storage Class for ZooKeeper data volume
-  ## If defined, storageClassName: <storageClass>
-  ## If set to "-", storageClassName: "", which disables dynamic provisioning
-  ## If undefined (the default) or set to null, no storageClassName spec is
-  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
-  ##   GKE, AWS & OpenStack)
-  ##
-  storageClass: ""
-  ## @param persistence.accessModes PVC Access modes
-  ##
-  accessModes:
-    - ReadWriteOnce
-  ## @param persistence.size PVC Storage Request for ZooKeeper data volume
-  ##
-  size: 8Gi
-  ## @param persistence.labels Labels for the PVC
-  ##
-  labels: {}
-  ## @param persistence.selector Selector to match an existing Persistent Volume for ZooKeeper's data PVC
-  ## If set, the PVC can't have a PV dynamically provisioned for it
-  ## E.g.
-  ## selector:
-  ##   matchLabels:
-  ##     app: my-app
-  ##
-  selector: {}
-  ## Persistence for a dedicated data log directory
-  ##
-  dataLogDir:
-    ## @param persistence.dataLogDir.size PVC Storage Request for ZooKeeper's dedicated data log directory
-    ##
-    size: 8Gi
-    ## @param persistence.dataLogDir.existingClaim Provide an existing `PersistentVolumeClaim` for ZooKeeper's data log directory
-    ## If defined, PVC must be created manually before volume will be bound
-    ## The value is evaluated as a template
-    ##
-    existingClaim: ""
-    ## @param persistence.dataLogDir.selector Selector to match an existing Persistent Volume for ZooKeeper's data log PVC
-    ## If set, the PVC can't have a PV dynamically provisioned for it
-    ## E.g.
-    ## selector:
-    ##   matchLabels:
-    ##     app: my-app
-    ##
-    selector: {}
-
-
-## Create HorizontalPodAutoscaler object for deployment type
-autoscaling:
-  enabled: false
-  minReplicas: 1
-  maxReplicas: 5
-  targetCPU: "60"
-  targetMemory: ""
-  behavior: {}
-
-
-service:
-  type: ClusterIP
-  ports:
-    client: 2181
-    follower: 2888
-    election: 3888
-  ## Node ports to expose
-  ## NOTE: choose port between <30000-32767>
-  ## @param service.nodePorts.client Node port for clients
-  ## @param service.nodePorts.tls Node port for TLS
-  ##
-  nodePorts:
-    client: ""
-    tls: ""
-  ## @param service.disableBaseClientPort Remove client port from service definitions.
-  ##
-  disableBaseClientPort: false
-  ## @param service.sessionAffinity Control where client requests go, to the same pod or round-robin
-  ## Values: ClientIP or None
-  ## ref: https://kubernetes.io/docs/user-guide/services/
-  ##
-  sessionAffinity: None
-  ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
-  ## sessionAffinityConfig:
-  ##   clientIP:
-  ##     timeoutSeconds: 300
-  ##
-  sessionAffinityConfig: {}
-  ## @param service.clusterIP ZooKeeper service Cluster IP
-  ## e.g.:
-  ## clusterIP: None
-  ##
-  clusterIP: ""
-  ## @param service.loadBalancerIP ZooKeeper service Load Balancer IP
-  ## ref: https://kubernetes.io/docs/user-guide/services/#type-loadbalancer
-  ##
-  loadBalancerIP: ""
-  ## @param service.loadBalancerSourceRanges ZooKeeper service Load Balancer sources
-  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
-  ## e.g:
-  ## loadBalancerSourceRanges:
-  ##   - 10.10.10.0/24
-  ##
-  loadBalancerSourceRanges: []
-  ## @param service.externalTrafficPolicy ZooKeeper service external traffic policy
-  ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
-  ##
-  externalTrafficPolicy: Cluster
-  ## @param service.annotations Additional custom annotations for ZooKeeper service
-  ##
-  annotations: {}
-  ## @param service.extraPorts Extra ports to expose in the ZooKeeper service (normally used with the `sidecar` value)
-  ##
-  extraPorts: []
-  ## @param service.headless.annotations Annotations for the Headless Service
-  ## @param service.headless.publishNotReadyAddresses If the ZooKeeper headless service should publish DNS records for not ready pods
-  ## @param service.headless.servicenameOverride String to partially override headless service name
-  ##
-  headless:
-    publishNotReadyAddresses: true
-    annotations: {}
-    servicenameOverride: ""
-
-
-## @param containerPorts.client ZooKeeper client container port
-## @param containerPorts.tls ZooKeeper TLS container port
-## @param containerPorts.follower ZooKeeper follower container port
-## @param containerPorts.election ZooKeeper election container port
-##
-containerPorts:
-  client: 2181
-  tls: 3181
-  follower: 2888
-  election: 3888
-## Configure extra options for ZooKeeper containers' liveness, readiness and startup probes
-## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes
-## @param livenessProbe.enabled Enable livenessProbe on ZooKeeper containers
-## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
-## @param livenessProbe.periodSeconds Period seconds for livenessProbe
-## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
-## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
-## @param livenessProbe.successThreshold Success threshold for livenessProbe
-## @param livenessProbe.probeCommandTimeout Probe command timeout for livenessProbe
-##
-livenessProbe:
-  enabled: true
-  initialDelaySeconds: 30
-  periodSeconds: 10
-  timeoutSeconds: 5
-  failureThreshold: 6
-  successThreshold: 1
-  probeCommandTimeout: 2
-## @param readinessProbe.enabled Enable readinessProbe on ZooKeeper containers
-## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
-## @param readinessProbe.periodSeconds Period seconds for readinessProbe
-## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
-## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
-## @param readinessProbe.successThreshold Success threshold for readinessProbe
-## @param readinessProbe.probeCommandTimeout Probe command timeout for readinessProbe
-##
-readinessProbe:
-  enabled: true
-  initialDelaySeconds: 5
-  periodSeconds: 10
-  timeoutSeconds: 5
-  failureThreshold: 6
-  successThreshold: 1
-  probeCommandTimeout: 2
-## @param startupProbe.enabled Enable startupProbe on ZooKeeper containers
-## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
-## @param startupProbe.periodSeconds Period seconds for startupProbe
-## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
-## @param startupProbe.failureThreshold Failure threshold for startupProbe
-## @param startupProbe.successThreshold Success threshold for startupProbe
-##
-startupProbe:
-  enabled: false
-  initialDelaySeconds: 30
-  periodSeconds: 10
-  timeoutSeconds: 1
-  failureThreshold: 15
-  successThreshold: 1
-## @param customLivenessProbe Custom livenessProbe that overrides the default one
-##
-customLivenessProbe: {}
-## @param customReadinessProbe Custom readinessProbe that overrides the default one
-##
-customReadinessProbe: {}
-## @param customStartupProbe Custom startupProbe that overrides the default one
-##
-customStartupProbe: {}
-## @param lifecycleHooks for the ZooKeeper container(s) to automate configuration before or after startup
-##
-lifecycleHooks: {}
-## ZooKeeper resource requests and limits
-## ref: https://kubernetes.io/docs/user-guide/compute-resources/
-## @param resources.limits The resources limits for the ZooKeeper containers
-## @param resources.requests.memory The requested memory for the ZooKeeper containers
-## @param resources.requests.cpu The requested cpu for the ZooKeeper containers
-##
-resources:
-  limits: {}
-  requests:
-    memory: 256Mi
-    cpu: 250m
-## Configure Pods Security Context
-## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
-## @param podSecurityContext.enabled Enabled ZooKeeper pods' Security Context
-## @param podSecurityContext.fsGroup Set ZooKeeper pod's Security Context fsGroup
-##
-podSecurityContext:
-  enabled: true
-  fsGroup: 1001
-## Configure Container Security Context
-## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
-## @param containerSecurityContext.enabled Enabled ZooKeeper containers' Security Context
-## @param containerSecurityContext.runAsUser Set ZooKeeper containers' Security Context runAsUser
-## @param containerSecurityContext.runAsNonRoot Set ZooKeeper containers' Security Context runAsNonRoot
-## @param containerSecurityContext.allowPrivilegeEscalation Force the child process to be run as nonprivilege
-##
-containerSecurityContext:
-  enabled: true
-  runAsUser: 1001
-  runAsNonRoot: true
-  allowPrivilegeEscalation: false
-## @param hostAliases ZooKeeper pods host aliases
-## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
-##
-hostAliases: []
-## @param podLabels Extra labels for ZooKeeper pods
-## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
-##
-
-
-extraVolumes: []
-## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for the ZooKeeper container(s)
-## Example Use Case: mount certificates to enable TLS
-## e.g:
-## extraVolumeMounts:
-## - name: zookeeper-keystore
-##   mountPath: /certs/keystore
-##   readOnly: true
-## - name: zookeeper-truststore
-##   mountPath: /certs/truststore
-##   readOnly: true
-##
-extraVolumeMounts: []
-## @param sidecars Add additional sidecar containers to the ZooKeeper pod(s)
-## e.g:
-## sidecars:
-##   - name: your-image-name
-##     image: your-image
-##     imagePullPolicy: Always
-##     ports:
-##       - name: portname
-##         containerPort: 1234
-##
-## @param tickTime Basic time unit (in milliseconds) used by ZooKeeper for heartbeats
-##
-##
-
-
-auth:
-  client:
-    ## @param auth.client.enabled Enable ZooKeeper client-server authentication. It uses SASL/Digest-MD5
-    ##
-    enabled: false
-    ## @param auth.client.clientUser User that will use ZooKeeper clients to auth
-    ##
-    clientUser: ""
-    ## @param auth.client.clientPassword Password that will use ZooKeeper clients to auth
-    ##
-    clientPassword: ""
-    ## @param auth.client.serverUsers Comma, semicolon or whitespace separated list of user to be created
-    ## Specify them as a string, for example: "user1,user2,admin"
-    ##
-    serverUsers: ""
-    ## @param auth.client.serverPasswords Comma, semicolon or whitespace separated list of passwords to assign to users when created
-    ## Specify them as a string, for example: "pass4user1, pass4user2, pass4admin"
-    ##
-    serverPasswords: ""
-    ## @param auth.client.existingSecret Use existing secret (ignores previous passwords)
-    ##
-    existingSecret: ""
-  quorum:
-    ## @param auth.quorum.enabled Enable ZooKeeper server-server authentication. It uses SASL/Digest-MD5
-    ##
-    enabled: false
-    ## @param auth.quorum.learnerUser User that the ZooKeeper quorumLearner will use to authenticate to quorumServers.
-    ## Note: Make sure the user is included in auth.quorum.serverUsers
-    ##
-    learnerUser: ""
-    ## @param auth.quorum.learnerPassword Password that the ZooKeeper quorumLearner will use to authenticate to quorumServers.
-    ##
-    learnerPassword: ""
-    ## @param auth.quorum.serverUsers Comma, semicolon or whitespace separated list of users for the quorumServers.
-    ## Specify them as a string, for example: "user1,user2,admin"
-    ##
-    serverUsers: ""
-    ## @param auth.quorum.serverPasswords Comma, semicolon or whitespace separated list of passwords to assign to users when created
-    ## Specify them as a string, for example: "pass4user1, pass4user2, pass4admin"
-    ##
-    serverPasswords: ""
-    ## @param auth.quorum.existingSecret Use existing secret (ignores previous passwords)
-    ##
-    existingSecret: ""
-## @param tickTime Basic time unit (in milliseconds) used by ZooKeeper for heartbeats
-##
-tickTime: 2000
-## @param initLimit ZooKeeper uses to limit the length of time the ZooKeeper servers in quorum have to connect to a leader
-##
-initLimit: 10
-## @param syncLimit How far out of date a server can be from a leader
-##
-syncLimit: 5
-## @param preAllocSize Block size for transaction log file
-##
-preAllocSize: 65536
-## @param snapCount The number of transactions recorded in the transaction log before a snapshot can be taken (and the transaction log rolled)
-##
-snapCount: 100000
-## @param maxClientCnxns Limits the number of concurrent connections that a single client may make to a single member of the ZooKeeper ensemble
-##
-maxClientCnxns: 60
-## @param maxSessionTimeout Maximum session timeout (in milliseconds) that the server will allow the client to negotiate
-## Defaults to 20 times the tickTime
-##
-maxSessionTimeout: 40000
-## @param heapSize Size (in MB) for the Java Heap options (Xmx and Xms)
-## This env var is ignored if Xmx an Xms are configured via `jvmFlags`
-##
-heapSize: 1024
-## @param fourlwCommandsWhitelist A list of comma separated Four Letter Words commands that can be executed
-##
-fourlwCommandsWhitelist: srvr, mntr, ruok
-## @param minServerId Minimal SERVER_ID value, nodes increment their IDs respectively
-## Servers increment their ID starting at this minimal value.
-## E.g., with `minServerId=10` and 3 replicas, server IDs will be 10, 11, 12 for z-0, z-1 and z-2 respectively.
-##
-minServerId: 1
-## @param listenOnAllIPs Allow ZooKeeper to listen for connections from its peers on all available IP addresses
-##
-listenOnAllIPs: false
-## Ongoing data directory cleanup configuration
-##
-autopurge:
-  ## @param autopurge.snapRetainCount The most recent snapshots amount (and corresponding transaction logs) to retain
-  ##
-  snapRetainCount: 3
-  ## @param autopurge.purgeInterval The time interval (in hours) for which the purge task has to be triggered
-  ## Set to a positive integer to enable the auto purging
-  ##
-  purgeInterval: 0
-## @param logLevel Log level for the ZooKeeper server. ERROR by default
-## Have in mind if you set it to INFO or WARN the ReadinessProve will produce a lot of logs
-##
-logLevel: ERROR
-## @param jvmFlags Default JVM flags for the ZooKeeper process
-##
-jvmFlags: ""
-## @param dataLogDir Dedicated data log directory
-## This allows a dedicated log device to be used, and helps avoid competition between logging and snapshots.
-## E.g.
-## dataLogDir: /bitnami/zookeeper/dataLog
-##
-dataLogDir: ""
-##
-##
-configuration: ""
-## @param existingConfigmap The name of an existing ConfigMap with your custom configuration for ZooKeeper
-## NOTE: When it's set the `configuration` parameter is ignored
-##
-existingConfigmap: ""
-## @param extraEnvVars Array with extra environment variables to add to ZooKeeper nodes
-## e.g:
-## extraEnvVars:
-##   - name: FOO
-##     value: "bar"
-##
-##
-## @param clusterDomain Kubernetes Cluster Domain
-##
-clusterDomain: cluster.local
-## @param extraDeploy Extra objects to deploy (evaluated as a template)
-##
-extraDeploy: []
-## @param commonLabels Add labels to all the deployed resources
-##
-Labels: {}
-## @param commonAnnotations Add annotations to all the deployed resources
-##
-Annotations: {}
-## @param namespaceOverride Override namespace for ZooKeeper resources
-## Useful when including ZooKeeper as a chart dependency, so it can be released into a different namespace than the parent
-##
-diagnosticMode:
-  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
-  ##
-  enabled: false
-  ## @param diagnosticMode.command Command to override all containers in the statefulset
-  ##
-  command:
-    - sleep
-  ## @param diagnosticMode.args Args to override all containers in the statefulset
-  ##
-  args:
-    - infinity
-
-## See `kubectl explain poddisruptionbudget.spec` for more
-## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
-podDisruptionBudget:
-  enabled: false
-  minAvailable: 1
-    # maxUnavailable: 1
-
-
-ingress:
-  enabled: false
-  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
-  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
-  # ingressClassName: nginx
-  # Values can be templated
-  annotations: {}
-  # kubernetes.io/ingress.class: nginx
-  # kubernetes.io/tls-acme: "true"
-  labels: {}
-  path: /
-  ##
-  ##
-  # pathType is only for k8s >= 1.1=
-  pathType: Prefix
-  ##
-  ##
-  hosts:
-    - chart-example.local
-  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
-  extraPaths: []
-  # - path: /*
-  #   backend:
-  #     serviceName: ssl-redirect
-  #     servicePort: use-annotation
-  ## Or for k8s > 1.19
-  # - path: /*
-  #   pathType: Prefix
-  #   backend:
-  #     service:
-  #       name: ssl-redirect
-  #       port:
-  #         name: use-annotation
-  ##
-  ##
-  tls: []
-  #  - secretName: chart-example-tls
-  #    hosts:
-  #      - chart-example.local
-
-
-networkPolicy:
-  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
-  ##
-  enabled: false
-  ## @param networkPolicy.allowExternal Don't require client label for connections
-  ## The Policy model to apply. When set to false, only pods with the correct
-  ## client label will have network access to  dubbo-admin port defined.
-  ## When true, dubbo-admin will accept connections from any source
-  ## (with the correct destination port).
-  ##
-  ingress: true
-  ## @param networkPolicy.ingress When true enables the creation
-  ## an ingress network policy
-  ##
-  ##
-  ##
-  ##
-  egress:
-    ## @param networkPolicy.egress.enabled When enabled, an egress network policy will be
-    ## created allowing dubbo-admin to connect to external data sources from kubernetes cluster.
-    enabled: false
-    ##
-    ## @param networkPolicy.egress.ports Add individual ports to be allowed by the egress
-    ports: []
-      ## Add ports to the egress by specifying - port: <port number>
-      ## E.X.
-      ## ports:
-    ## - port: 80
-    ## - port: 443
\ No newline at end of file
diff --git a/charts/admin-stack/templates/tpl/_helpers.tpl b/charts/admin-stack/templates/tpl/_helpers.tpl
deleted file mode 100644
index 9f30c93..0000000
--- a/charts/admin-stack/templates/tpl/_helpers.tpl
+++ /dev/null
@@ -1,27 +0,0 @@
-{{/*
-Formats imagePullSecrets. Input is (dict "root" . "imagePullSecrets" .{specific imagePullSecrets})
-*/}}
-{{- define "dubbo-admin.imagePullSecrets" -}}
-{{- $root := .root }}
-{{- range (concat .root.Values.global.imagePullSecrets .imagePullSecrets) }}
-{{- if eq (typeOf .) "map[string]interface {}" }}
-- {{ toYaml (dict "name" (tpl .name $root)) | trim }}
-{{- else }}
-- name: {{ tpl . $root }}
-{{- end }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the ZooKeeper configuration ConfigMap name
-*/}}
-{{- define "zookeeper.configmapName" -}}
-{{- if .Values.existingConfigmap -}}
-    {{- printf "%s" (tpl .Values.existingConfigmap $) -}}
-{{- else -}}
-    {{- printf "%s" (include "zookeeper.fullname" .) -}}
-{{- end -}}
-{{- end -}}
-
-
diff --git a/charts/admin-stack/templates/tpl/_ingress.tpl b/charts/admin-stack/templates/tpl/_ingress.tpl
deleted file mode 100644
index 0e63964..0000000
--- a/charts/admin-stack/templates/tpl/_ingress.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-{{/*
-Return if ingress is stable.
-*/}}
-{{- define "dubbo-admin.ingress.isStable" -}}
-{{- eq (include "dubbo-admin.ingress.apiVersion" .) "networking.k8s.io/v1" }}
-{{- end }}
-
-
-{{/*
-Return if ingress supports ingressClassName.
-*/}}
-{{- define "dubbo-admin.ingress.supportsIngressClassName" -}}
-{{- or (eq (include "dubbo-admin.ingress.isStable" .) "true") (and (eq (include "dubbo-admin.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
-{{- end }}
-
-
-{{/*
-Return if ingress supports pathType.
-*/}}
-{{- define "dubbo-admin.ingress.supportsPathType" -}}
-{{- or (eq (include "dubbo-admin.ingress.isStable" .) "true") (and (eq (include "dubbo-admin.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
-{{- end }}
\ No newline at end of file
diff --git a/charts/admin-stack/templates/tpl/_kubeversions.tpl b/charts/admin-stack/templates/tpl/_kubeversions.tpl
deleted file mode 100644
index f403a0c..0000000
--- a/charts/admin-stack/templates/tpl/_kubeversions.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-{{/*
-Return the target Kubernetes version
-*/}}
-{{- define "zookeeper.kubeVersion" -}}
-{{- if .Values.global }}
-    {{- if .Values.global.kubeVersion }}
-    {{- .Values.global.kubeVersion -}}
-    {{- else }}
-    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}
-    {{- end -}}
-{{- else }}
-{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Return the target Kubernetes version
-*/}}
-{{- define "nacos.kubeVersion" -}}
-{{- if .Values.global }}
-    {{- if .Values.global.kubeVersion }}
-    {{- .Values.global.kubeVersion -}}
-    {{- else }}
-    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}
-    {{- end -}}
-{{- else }}
-{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}
-{{- end -}}
-{{- end -}}
-{{/*
-Return the appropriate apiVersion for statefulset.
-*/}}
\ No newline at end of file
diff --git a/charts/admin-stack/templates/tpl/_storages.tpl b/charts/admin-stack/templates/tpl/_storages.tpl
deleted file mode 100644
index b92c9ca..0000000
--- a/charts/admin-stack/templates/tpl/_storages.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
-{{/* vim: set filetype=mustache: */}}
-{{/*
-Return  the proper Storage Class
-{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }}
-*/}}
-{{- define "zookeeper.storage.class" -}}
-
-{{- $storageClass := .persistence.storageClass -}}
-{{- if .global -}}
-    {{- if .global.storageClass -}}
-        {{- $storageClass = .global.storageClass -}}
-    {{- end -}}
-{{- end -}}
-
-{{- if $storageClass -}}
-  {{- if (eq "-" $storageClass) -}}
-      {{- printf "storageClassName: \"\"" -}}
-  {{- else }}
-      {{- printf "storageClassName: %s" $storageClass -}}
-  {{- end -}}
-{{- end -}}
-
-{{- end -}}
\ No newline at end of file
diff --git a/charts/admin-stack/templates/tpl/_tplvalues.tpl b/charts/admin-stack/templates/tpl/_tplvalues.tpl
deleted file mode 100644
index 2fec362..0000000
--- a/charts/admin-stack/templates/tpl/_tplvalues.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{{/* vim: set filetype=mustache: */}}
-{{/*
-Renders a value that contains template.
-Usage:
-{{ include "zookeeper.tplvalues" ( dict "value" .Values.path.to.the.Value "context" $) }}
-*/}}
-{{- define "zookeeper.tplvalues" -}}
-    {{- if typeIs "string" .value }}
-        {{- tpl .value .context }}
-    {{- else }}
-        {{- tpl (.value | toYaml) .context }}
-    {{- end }}
-{{- end -}}
\ No newline at end of file
diff --git a/charts/admin-stack/templates/tpl/_versions.tpl b/charts/admin-stack/templates/tpl/_versions.tpl
deleted file mode 100644
index 82611a4..0000000
--- a/charts/admin-stack/templates/tpl/_versions.tpl
+++ /dev/null
@@ -1,96 +0,0 @@
-{{/*
-Return the appropriate apiVersion for rbac.
-*/}}
-{{- define "dubbo-admin.rbac.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
-{{- print "rbac.authorization.k8s.io/v1" }}
-{{- else }}
-{{- print "rbac.authorization.k8s.io/v1beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the appropriate apiVersion for ingress.
-*/}}
-{{- define "dubbo-admin.ingress.apiVersion" -}}
-{{- if and ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) }}
-{{- print "networking.k8s.io/v1" }}
-{{- else if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
-{{- print "networking.k8s.io/v1beta1" }}
-{{- else }}
-{{- print "extensions/v1beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-Return the appropriate apiVersion for podDisruptionBudget.
-*/}}
-{{- define "dubbo-admin.podDisruptionBudget.apiVersion" -}}
-{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
-{{- print "policy/v1" }}
-{{- else }}
-{{- print "policy/v1beta1" }}
-{{- end }}
-{{- end }}
-
-
-{{- define "zookeeper.statefulset.apiVersion" -}}
-{{- if semverCompare "<1.14-0" (include "zookeeper.kubeVersion" .) -}}
-{{- print "apps/v1beta1" -}}
-{{- else -}}
-{{- print "apps/v1" -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Return the appropriate apiVersion for networkpolicy.
-*/}}
-{{- define "zookeeper.networkPolicy.apiVersion" -}}
-{{- if semverCompare "<1.7-0" (include "zookeeper.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else -}}
-{{- print "networking.k8s.io/v1" -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Return the appropriate apiVersion for networkpolicy.
-*/}}
-{{- define "nacos.networkPolicy.apiVersion" -}}
-{{- if semverCompare "<1.7-0" (include "nacos.kubeVersion" .) -}}
-{{- print "extensions/v1beta1" -}}
-{{- else -}}
-{{- print "networking.k8s.io/v1" -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Return the appropriate apiVersion for poddisruptionbudget.
-*/}}
-{{- define "zookeeper.policy.apiVersion" -}}
-{{- if semverCompare "<1.21-0" (include "zookeeper.kubeVersion" .) -}}
-{{- print "policy/v1beta1" -}}
-{{- else -}}
-{{- print "policy/v1" -}}
-{{- end -}}
-{{- end -}}
-
-
-{{/*
-Return the appropriate apiVersion for poddisruptionbudget.
-*/}}
-{{- define "nacos.policy.apiVersion" -}}
-{{- if semverCompare "<1.21-0" (include "nacos.kubeVersion" .) -}}
-{{- print "policy/v1beta1" -}}
-{{- else -}}
-{{- print "policy/v1" -}}
-{{- end -}}
-{{- end -}}
-
-
-
diff --git a/charts/admin-stack/values.yaml b/charts/admin-stack/values.yaml
deleted file mode 100644
index f26689c..0000000
--- a/charts/admin-stack/values.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-nacos:
-  enabled: false
-  default: false
-
-
-zookeeper:
-  enabled: true
-  default: true
-
-
-grafana:
-  enabled: false
-  default: false
-
-
-dubbo-admin:
-  enabled: true
-  default: true
-  properties:
-    admin.registry.address: zookeeper://zookeeper:2181
-    admin.config-center: zookeeper://zookeeper:2181
-    admin.metadata-report.address: zookeeper://zookeeper:2181
-    admin.root.user.name: root
-    admin.root.user.password: root
-    admin.check.sessionTimeoutMilli: 3600000
-    server.compression.enabled: true
-    server.compression.mime-types: text/css,text/javascript,application/javascript
-    server.compression.min-response-size: 10240
-    admin.check.tokenTimeoutMilli: 3600000
-    admin.check.signSecret: 86295dd0c4ef69a1036b0b0c15158d77
-    dubbo.application.name: dubbo-admin
-    dubbo.registry.address: ${admin.registry.address}
-    spring.datasource.url: jdbc:h2:mem:~/dubbo-admin;MODE=MYSQL;
-    spring.datasource.username: sa
-    spring.datasource.password:
-    mybatis-plus.global-config.db-config.id-type: none
-    dubbo.application.logger: slf4j
-
-    # nacos config, add parameters to url like username=nacos&password=nacos
-    # admin.registry.address: nacos://nacos:8848?group=DEFAULT_GROUP&namespace=public
-    # admin.config-center: nacos://nacos:8848?group=dubbo
-    # admin.metadata-report.address: nacos://nacos:8848?group=dubbo
-
-
-    # group (Deprecated it is recommended to use URL to add parameters,will be removed in the future)
-    # admin.registry.group: dubbo
-    # admin.config-center.group: dubbo
-    # admin.metadata-report.group: dubbo
-
-    # namespace used by nacos.(Deprecated it is recommended to use URL to add parameters,will be removed in the future)
-    # admin.registry.namespace: public
-    # admin.config-center.namespace: public
-    # admin.metadata-report.namespace: public
-
-    # apollo config
-    # admin.config-center: apollo://localhost:8070?token=e16e5cd903fd0c97a116c873b448544b9d086de9&app.id=test&env=dev&cluster=default&namespace=dubbo
-    # admin.apollo.token: e16e5cd903fd0c97a116c873b448544b9d086de9
-    # admin.apollo.appId: test
-    # admin.apollo.env: dev
-    # admin.apollo.cluster: default
-
-    # mysql
-    # spring.datasource.driver-class-name: com.mysql.jdbc.Driver
-    # spring.datasource.url: jdbc:mysql://localhost:3306/dubbo-admin?characterEncoding=utf8&connectTimeout=1000&socketTimeout=10000&autoReconnect=true
-    # spring.datasource.username: root
-    # spring.datasource.password: mysql
\ No newline at end of file
diff --git a/charts/admin-stack/.helmignore b/charts/dubbo-admin/.helmignore
similarity index 100%
rename from charts/admin-stack/.helmignore
rename to charts/dubbo-admin/.helmignore
diff --git a/charts/admin-stack/Chart.yaml b/charts/dubbo-admin/Chart.yaml
similarity index 100%
rename from charts/admin-stack/Chart.yaml
rename to charts/dubbo-admin/Chart.yaml
diff --git a/charts/dubbo-admin/README.md b/charts/dubbo-admin/README.md
new file mode 100644
index 0000000..070f9b3
--- /dev/null
+++ b/charts/dubbo-admin/README.md
@@ -0,0 +1,14 @@
+## 1. Project download to local
+```
+git clone https://github.com/apache/dubbo-admin.git
+```
+
+## 2. Switch project directory
+```
+cd dubbo-admin/deploy/charts/dubbo-admin
+```
+
+## 3. Install dubbo-admin
+```
+helm install dubbo-admin -f values.yaml .
+```
diff --git a/charts/dubbo-admin/templates/_helpers.tpl b/charts/dubbo-admin/templates/_helpers.tpl
new file mode 100644
index 0000000..91eab01
--- /dev/null
+++ b/charts/dubbo-admin/templates/_helpers.tpl
@@ -0,0 +1,41 @@
+{{/*
+*/}}
+{{- define "dubbo-admin.name" -}}
+{{- if .Values.nameOverride }}
+{{- else }}
+{{- printf "dubbo-admin" -}}
+{{- end -}}
+{{- end -}}
+
+{{- define "dubbo-admin.namespace" -}}
+{{- if .Values.namespaceOverride }}
+{{- else }}
+{{- printf "default" }}
+{{- end -}}
+{{- end -}}
+
+{{/*
+*/}}
+{{- define "dubbo-admin.labels" -}}
+app.kubernetes.io/name: {{ template "dubbo-admin.name" . }}
+helm.sh/chart: {{ include "dubbo-admin.name" . }}-{{ .Values.image.tag }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+*/}}
+{{- define "dubbo-admin.matchLabels" -}}
+app.kubernetes.io/name: {{ template "dubbo-admin.name" . }}
+helm.sh/chart: {{ include "dubbo-admin.name" . }}-{{ .Values.image.tag }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{- define "dubbo-admin.podDisruptionBudget.apiVersion" -}}
+{{- if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
+{{- print "policy/v1" }}
+{{- else }}
+{{- print "policy/v1beta1" }}
+{{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/charts/dubbo-admin/templates/cm.yaml b/charts/dubbo-admin/templates/cm.yaml
new file mode 100644
index 0000000..410ecc4
--- /dev/null
+++ b/charts/dubbo-admin/templates/cm.yaml
@@ -0,0 +1,47 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "dubbo-admin.name" . }}-cm
+  namespace: {{ include "dubbo-admin.namespace" . }}
+data:
+  application.properties: |-
+    {{- if .Values.zookeeper.enabled }}
+    admin.registry.address: {{ .Values.zookeeper.address }}
+    admin.config-center: {{ .Values.zookeeper.address }}
+    admin.metadata-report.address: {{ .Values.zookeeper.address }}
+    {{- end }}
+    {{- if .Values.nacos.enabled }}
+    admin.registry.address: {{ .Values.nacos.address }}?group=DEFAULT_GROUP&namespace={{ .Values.nacos.namespace }}
+    admin.config-center: {{ .Values.nacos.address }}?group={{ .Values.nacos.group }}
+    admin.metadata-report.address: {{.Values.nacos.address }}?group={{ .Values.nacos.group }}
+    {{- end }}
+    admin.root.user.name: {{ .Values.user.name }}
+    admin.root.user.password: {{ .Values.user.password }}
+    admin.check.tokenTimeoutMilli: {{ .Values.check.tokenTimeoutMilli | int64 }}
+    admin.check.sessionTimeoutMilli: {{ .Values.check.sessionTimeoutMilli | int64 }}
+    admin.check.signSecret: {{ .Values.check.signSecret }}
+    {{- if .Values.apollo.enabled }}
+    admin.config-center: {{ .Values.apollo.address }}?token={{ .Values.apollo.token }}&app.id={{ .Values.apollo.appId }}&env={{ .Values.apollo.env }}&cluster={{ .Values.apollo.cluster }}&namespace={{ .Values.apollo.namespace }}
+    admin.apollo.token: {{ .Values.apollo.token }}
+    admin.apollo.appId: {{ .Values.apollo.appId }}
+    admin.apollo.env: {{ .Values.apollo.env }}
+    admin.apollo.cluster: {{ .Values.apollo.cluster }}
+    {{- end }}
+    server.compression.enabled: {{ .Values.serverCompression.enabled }}
+    server.compression.mime-types: {{ .Values.serverCompression.mimeTypes }}
+    server.compression.min-response-size: {{ .Values.serverCompression.minResponseSize }}
+    dubbo.application.name: {{ .Values.dubbo.name }}
+    dubbo.application.logger: {{ .Values.dubbo.logger }}
+    dubbo.registry.address: ${admin.registry.address}
+    {{- if .Values.mysql.enabled }}
+    spring.datasource.driver-class-name: {{ .Values.mysql.driverClassName }}
+    spring.datasource.url: jdbc:{{ .Values.mysql.address }}?characterEncoding={{ .Values.mysql.encode }}&connectTimeout={{ .Values.mysql.connectTimeout }}&socketTimeout={{ .Values.mysql.socketTimeout }}&autoReconnect={{ .Values.mysql.autoReconnect }}
+    spring.datasource.username: {{ .Values.mysql.username }}
+    spring.datasource.password: {{ .Values.mysql.password }}
+    {{- end }}
+    {{- if .Values.h2.enabled }}
+    spring.datasource.url: jdbc:h2:mem:{{ .Values.h2.mem }};MODE={{ .Values.h2.mode }};
+    spring.datasource.username: {{ .Values.mysql.username }}
+    spring.datasource.password: {{ .Values.mysql.password }}
+    {{- end }}
+    mybatis-plus.global-config.db-config.id-type: {{ .Values.mybatisPlus.global.db.idType }}
\ No newline at end of file
diff --git a/charts/admin-stack/charts/dubbo-admin/templates/deployment.yaml b/charts/dubbo-admin/templates/deploy.yaml
similarity index 64%
rename from charts/admin-stack/charts/dubbo-admin/templates/deployment.yaml
rename to charts/dubbo-admin/templates/deploy.yaml
index d7f1615..ffa0157 100644
--- a/charts/admin-stack/charts/dubbo-admin/templates/deployment.yaml
+++ b/charts/dubbo-admin/templates/deploy.yaml
@@ -1,54 +1,31 @@
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  name: {{ include "dubbo-admin.fullname" . }}
+  name: {{ include "dubbo-admin.name" . }}
   namespace: {{ include "dubbo-admin.namespace" . }}
-  labels:
-    {{- include "dubbo-admin.labels" . | nindent 4 }}
-    {{- with .Values.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-    {{- with .Values.annotations }}
-    annotations:
-        {{- toYaml . | nindent 4 }}
-    {{- end }}
 spec:
-  {{- if and (not .Values.autoscaling.enabled) (.Values.replicas) }}
   replicas: {{ .Values.replicas }}
-  {{- end }}
   selector:
     matchLabels:
-      {{- include "dubbo-admin.selectorLabels" . | nindent 6 }}
-  {{- with .Values.deploymentStrategy }}
-  strategy:
-      {{- toYaml . | trim | nindent 4 }}
-  {{- end }}
+      {{ include "dubbo-admin.matchLabels" . | nindent 6 }}
   template:
     metadata:
       labels:
-        {{- include "dubbo-admin.selectorLabels" . | nindent 8 }}
+        {{ include "dubbo-admin.labels" . | nindent 8 }}
     spec:
-    {{- if .Values.imagePullSecrets }}
       imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 8 }}
-    {{- end }}
-    {{- if .Values.nodeSelector }}
       nodeSelector: {{- toYaml .Values.nodeSelector | nindent 8 }}
-    {{- end }}
-    {{- if .Values.affinity }}
       affinity: {{- toYaml .Values.affinity | nindent 8 }}
-    {{- end }}
-    {{- if .Values.tolerations }}
       tolerations: {{- toYaml .Values.tolerations | nindent 8 }}
-    {{- end }}
-      serviceAccountName: {{ include "dubbo-admin.serviceAccountName" . }}
+      {{- if .Values.rbac.enabled }}
+      serviceAccountName: {{ include "dubbo-admin.name" . }}
+      {{- end }}
       containers:
         - name: {{ .Chart.Name }}
-          securityContext:
-            {{- toYaml .Values.securityContext | nindent 12 }}
           image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.Version }}"
           imagePullPolicy: {{ .Values.image.pullPolicy }}
           ports:
-            - name: {{ .Values.service.name }}
+            - name: http
               containerPort: {{ .Values.service.containerPort }}
           volumeMounts:
             - mountPath: /config
@@ -87,15 +64,15 @@
           resources:
             {{- toYaml .Values.resources | nindent 12 }}
       volumes:
-        - name: application-properties
-          secret:
-            secretName: {{ include "dubbo-admin.fullname" . }}-secret
-        - name: storage
-             {{- if .Values.persistence.enabled }}
-          persistentVolumeClaim:
-            {{ if .Values.persistence.ClaimName }}
-            claimName: {{ .Values.persistence.ClaimName }}
-            {{- else -}}
-          emptyDir: {{ .Values.persistence.emptyDir }}
-              {{- end -}}
-              {{- end -}}
+      - name: application-properties
+        configMap:
+          name: {{ include "dubbo-admin.name" . }}-cm
+      - name: storage
+           {{- if .Values.persistence.enabled }}
+        persistentVolumeClaim:
+          {{ if .Values.persistence.ClaimName }}
+          claimName: {{ .Values.persistence.ClaimName }}
+          {{- else }}
+        emptyDir: {{ .Values.persistence.emptyDir }}
+            {{- end -}}
+            {{- end -}}
diff --git a/charts/dubbo-admin/templates/netpol.yaml b/charts/dubbo-admin/templates/netpol.yaml
new file mode 100644
index 0000000..3cfd20c
--- /dev/null
+++ b/charts/dubbo-admin/templates/netpol.yaml
@@ -0,0 +1,11 @@
+{{- if .Values.networkPolicy.enabled }}
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+spec:
+  policyTypes:
+    - Ingress
+    - Egress
+{{- end }}
\ No newline at end of file
diff --git a/charts/dubbo-admin/templates/pdb.yaml b/charts/dubbo-admin/templates/pdb.yaml
new file mode 100644
index 0000000..14efdd1
--- /dev/null
+++ b/charts/dubbo-admin/templates/pdb.yaml
@@ -0,0 +1,17 @@
+{{- if .Values.pdb.enabled }}
+apiVersion: {{ include "dubbo-admin.podDisruptionBudget.apiVersion" . }}
+kind: PodDisruptionBudget
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+spec:
+  {{- with .Values.pdb.minAvailable }}
+  minAvailable: {{ . }}
+  {{- end }}
+  {{- with .Values.pdb.maxUnavailable }}
+  maxUnavailable: {{ . }}
+  {{- end }}
+  selector:
+    matchLabels:
+      {{- include "dubbo-admin.matchLabels" . | nindent 6 }}
+{{- end -}}
diff --git a/charts/dubbo-admin/templates/psp.yaml b/charts/dubbo-admin/templates/psp.yaml
new file mode 100644
index 0000000..1130df9
--- /dev/null
+++ b/charts/dubbo-admin/templates/psp.yaml
@@ -0,0 +1,32 @@
+{{- if .Values.psp.enabled }}
+apiVersion: policy/v1beta1
+kind: PodSecurityPolicy
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+spec:
+  privileged: false
+  allowPrivilegeEscalation: false
+  requiredDropCapabilities:
+    - ALL
+  volumes:
+    - ALL
+  hostNetwork: false
+  hostIPC: false
+  hostPID: false
+  runAsUser:
+    rule: 'RunAsAny'
+  seLinux:
+    rule: 'RunAsAny'
+  supplementalGroups:
+    rule: 'MustRunAs'
+    ranges:
+      - min: 1
+        max: 65535
+  fsGroup:
+    rule: 'MustRunAs'
+    ranges:
+      - min: 1
+        max: 65535
+  readOnlyRootFilesystem: false
+{{- end -}}
\ No newline at end of file
diff --git a/charts/dubbo-admin/templates/pvc.yaml b/charts/dubbo-admin/templates/pvc.yaml
new file mode 100644
index 0000000..88dd9bd
--- /dev/null
+++ b/charts/dubbo-admin/templates/pvc.yaml
@@ -0,0 +1,15 @@
+{{- if .Values.persistence.enabled }}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+spec:
+  accessModes: {{ .Values.persistence.accessModes }}
+  resources:
+    requests:
+      storage: {{ .Values.persistence.size | quote }}
+  {{- with .Values.persistence.storageClass }}
+  storageClassName: {{ . }}
+  {{- end }}
+{{- end -}}
diff --git a/charts/dubbo-admin/templates/rbac.yaml b/charts/dubbo-admin/templates/rbac.yaml
new file mode 100644
index 0000000..65f1ff3
--- /dev/null
+++ b/charts/dubbo-admin/templates/rbac.yaml
@@ -0,0 +1,67 @@
+{{- if .Values.serviceAccount.enabled }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+{{- end }}
+---
+{{- if and .Values.rbac.enabled -}}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+rules:
+  - apiGroups:
+    - ""
+    resources:
+    - pods
+    - deployments
+    verbs:
+    - get
+    - watch
+    - list
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: default
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: Role
+  name: {{ include "dubbo-admin.name" . }}
+subjects:
+  - kind: ServiceAccount
+    name: {{ include "dubbo-admin.name" . }}
+    namespace: default
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: {{ include "dubbo-admin.name" . }}-clusterrole
+rules:
+  - apiGroups:
+      - ""
+    resources:
+      - pods
+      - deployments
+    verbs:
+      - get
+      - watch
+      - list
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: {{ include "dubbo-admin.name" . }}-clusterrolebinding
+subjects:
+  - kind: ServiceAccount
+    name: dubbo-admin
+    namespace: default
+roleRef:
+  kind: ClusterRole
+  name: {{ include "dubbo-admin.name" . }}-clusterrole
+  apiGroup: rbac.authorization.k8s.io
+{{- end -}}
\ No newline at end of file
diff --git a/charts/dubbo-admin/templates/svc.yaml b/charts/dubbo-admin/templates/svc.yaml
new file mode 100644
index 0000000..348fac6
--- /dev/null
+++ b/charts/dubbo-admin/templates/svc.yaml
@@ -0,0 +1,73 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "dubbo-admin.name" . }}
+  namespace: {{ include "dubbo-admin.namespace" . }}
+spec:
+  {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
+  type: {{ .Values.service.type }}
+  {{- with .Values.service.clusterIP }}
+  clusterIP: {{ . }}
+  {{- end }}
+  {{- else if eq .Values.service.type "LoadBalancer" }}
+  type: {{ .Values.service.type }}
+  {{- with .Values.service.loadBalancerIP }}
+  loadBalancerIP: {{ . }}
+  {{- end }}
+  {{- with .Values.service.loadBalancerSourceRanges }}
+  loadBalancerSourceRanges:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  {{- else }}
+  type: {{ .Values.service.type }}
+  {{- end }}
+  {{- with .Values.service.externalIPs }}
+  externalIPs:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  ports:
+  - name: http
+    port: {{ .Values.service.port }}
+    protocol: {{ .Values.service.protocol }}
+    targetPort: {{ .Values.service.targetPort }}
+      {{- with .Values.service.appProtocol }}
+    appProtocol: {{ . }}
+      {{- end }}
+      {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
+    nodePort: {{ .Values.service.nodePort }}
+      {{- end }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "dubbo-admin.name" . }}-headless
+  namespace: {{ include "dubbo-admin.namespace" . }}
+spec:
+  {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
+  type: {{ .Values.service.type }}
+  clusterIP: None
+  {{- else if eq .Values.service.type "LoadBalancer" }}
+  type: {{ .Values.service.type }}
+  {{- with .Values.service.loadBalancerIP }}
+  loadBalancerIP: {{ . }}
+  {{- end }}
+  {{- with .Values.service.loadBalancerSourceRanges }}
+  loadBalancerSourceRanges:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  {{- else }}
+  type: {{ .Values.service.type }}
+  {{- end }}
+  {{- with .Values.service.externalIPs }}
+  externalIPs:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  ports:
+  - name: http
+    port: {{ .Values.service.port }}
+    protocol: {{ .Values.service.protocol }}
+    targetPort: {{ .Values.service.targetPort }}
+    appProtocol: {{ .Values.service.appProtocol }}
+      {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
+    nodePort: {{ .Values.service.nodePort }}
+      {{- end }}
diff --git a/charts/dubbo-admin/values.yaml b/charts/dubbo-admin/values.yaml
new file mode 100644
index 0000000..21ad230
--- /dev/null
+++ b/charts/dubbo-admin/values.yaml
@@ -0,0 +1,168 @@
+nameOverride: ~
+
+namespaceOverride: ~
+
+nodeSelector: ~
+
+affinity: ~
+
+tolerations: ~
+
+replicas: 1
+
+imagePullSecrets: ~
+
+image:
+  registry: docker.io
+  repository: apache/dubbo-admin
+  tag: 0.5.0
+  pullPolicy: IfNotPresent
+
+serviceAccount:
+  enabled: false
+  labels: {}
+  annotations: {}
+
+rbac:
+  enabled: false
+
+psp:
+  enabled: false
+  labels: {}
+  annotations: {}
+
+pdb:
+  enabled: false
+  labels: {}
+  annotations: {}
+  minAvailable: 1
+  maxUnavailable: 1
+
+networkPolicy:
+  enabled: false
+
+readinessProbe:
+  httpGet:
+    path: /
+    port: 8080
+  initialDelaySeconds: 60
+  timeoutSeconds: 30
+  periodSeconds: 10
+  successThreshold: 1
+  failureThreshold: 3
+  probeCommandTimeout: 1
+
+livenessProbe:
+  httpGet:
+    path: /
+    port: 8080
+  initialDelaySeconds: 60
+  timeoutSeconds: 30
+  periodSeconds: 10
+  successThreshold: 1
+  failureThreshold: 3
+  probeCommandTimeout: 1
+
+startupProbe:
+  httpGet:
+    path: /
+    port: 8080
+  initialDelaySeconds: 60
+  timeoutSeconds: 30
+  periodSeconds: 10
+  successThreshold: 1
+  failureThreshold: 3
+
+resources: {}
+#  limits:
+#    cpu: 100m
+#    memory: 128Mi
+#  requests:
+#    cpu: 100m
+#    memory: 128Mi
+
+service:
+  labels: {}
+  annotations: {}
+  type: ClusterIP
+  clusterIP: ""
+  externalIPs: ""
+  loadBalancerIP: ""
+  loadBalancerSourceRanges: ""
+  nodePort: ""
+  port: 38080
+  targetPort: http
+  containerPort: 8080
+  protocol: TCP
+  appProtocol: ""
+
+persistence:
+  enabled: false
+  labels: {}
+  annotations: {}
+  storageClass: ""
+  accessModes: ReadWriteOnce
+  size: 10Gi
+  ClaimName: {}
+  emptyDir: {}
+
+user:
+  name: root
+  password: root
+
+dubbo:
+  name: dubbo-admin
+  logger: slf4j
+
+check:
+  sessionTimeoutMilli: 3600000
+  tokenTimeoutMilli: 3600000
+  signSecret: ~
+
+serverCompression:
+  enabled: true
+  mimeTypes: text/css,text/javascript,application/javascript
+  minResponseSize: 10240
+
+zookeeper:
+  enabled: false
+  address: zookeeper://zookeeper:2181
+
+nacos:
+  enabled: true
+  address: nacos://nacos:8848
+  group: DEFAULT_GROUP
+  namespace: public
+
+apollo:
+  enabled: false
+  address: apollo://apollo:8070
+  token: ~
+  appId: test
+  env: dev
+  cluster: default
+  namespace: dubbo
+
+mysql:
+  enabled: false
+  driverClassName: com.mysql.jdbc.Driver
+  address: mysql://mysql:3306/dubbo-admin
+  encode: utf8
+  connectTimeout: 1000
+  socketTimeout: 10000
+  autoReconnect: true
+  username: sa
+  password: ~
+
+h2:
+  enabled: true
+  mode: MYSQL
+  mem: ~/dubbo-admin
+  username: sa
+  password:
+
+mybatisPlus:
+  global:
+    db:
+      idType: none
+