diff --git a/addons/cloudbeaver/23/chart/cloudbeaver/templates/deployment.yaml b/addons/cloudbeaver/23/chart/cloudbeaver/templates/deployment.yaml
index 2b1fe314..be9271b3 100644
--- a/addons/cloudbeaver/23/chart/cloudbeaver/templates/deployment.yaml
+++ b/addons/cloudbeaver/23/chart/cloudbeaver/templates/deployment.yaml
@@ -105,34 +105,11 @@ spec:
             - name: data
               mountPath: {{ .Values.persistence.mountPath | quote }}
       volumes:
-{{- if not .Values.persistence.enabled }}
         - name: data
+       {{- if .Values.persistence.enabled }}
+          persistentVolumeClaim:
+            claimName: {{ .Values.persistence.existingClaim | default (include "common.names.fullname" .) }}
+        {{- else }}
           emptyDir: {}
-{{- end }}
-{{- if .Values.persistence.enabled }}
-  volumeClaimTemplates:
-    - metadata:
-        name: data
-        annotations:
-        {{- if .Values.persistence.annotations }}
-{{ toYaml .Values.persistence.annotations | indent 8 }}
         {{- end }}
-        labels:
-          application: {{ include "common.names.fullname" . }}
-          release: {{ .Release.Name }}
-          heritage: {{ .Release.Service }}
-      spec:
-        accessModes:
-{{ toYaml .Values.persistence.accessModes | indent 8 }}
-        resources:
-          requests:
-            storage: "{{ .Values.persistence.size }}"
-      {{- if .Values.persistence.storageClass }}
-      {{- if (eq "-" .Values.persistence.storageClass) }}
-        storageClassName: ""
-      {{- else }}
-        storageClassName: "{{ .Values.persistence.storageClass }}"
-      {{- end }}
-      {{- end }}
-  {{- end }}
 
diff --git a/addons/cloudbeaver/23/chart/cloudbeaver/templates/pvc.yaml b/addons/cloudbeaver/23/chart/cloudbeaver/templates/pvc.yaml
index 7a36a217..ee8ed038 100644
--- a/addons/cloudbeaver/23/chart/cloudbeaver/templates/pvc.yaml
+++ b/addons/cloudbeaver/23/chart/cloudbeaver/templates/pvc.yaml
@@ -2,7 +2,7 @@
 kind: PersistentVolumeClaim
 apiVersion: v1
 metadata:
-  name: {{ printf "%s-binding" (include "common.names.fullname" .) }}
+  name: {{ include "common.names.fullname" . }}
   namespace: {{ include "common.names.namespace" . | quote }}
   labels: {{- include "common.labels.standard" . | nindent 4 }}
     {{- if .Values.commonLabels }}
diff --git a/addons/grafana/10/chart/grafana/templates/_helpers.tpl b/addons/grafana/10/chart/grafana/templates/_helpers.tpl
index 011ba817..ba7f9a04 100644
--- a/addons/grafana/10/chart/grafana/templates/_helpers.tpl
+++ b/addons/grafana/10/chart/grafana/templates/_helpers.tpl
@@ -57,6 +57,14 @@ Return the Grafana admin password key
 {{- end -}}
 {{- end -}}
 
+{{- define "admin.passwordValue" -}}
+{{- if .Values.admin.password }}
+    {{- .Values.admin.password -}}
+{{- else -}}
+  {{- include "getValueFromSecret" (dict "Namespace" .Release.Namespace "Name" (include "common.names.fullname" .) "Length" 10 "Key" "GF_SECURITY_ADMIN_PASSWORD")  -}}
+{{- end -}}
+{{- end }}
+
 {{/*
 Return true if a secret object should be created
 */}}
@@ -67,6 +75,20 @@ Return true if a secret object should be created
 {{- end -}}
 {{- end -}}
 
+{{/*
+Returns the available value for certain key in an existing secret (if it exists),
+otherwise it generates a random value.
+*/}}
+{{- define "getValueFromSecret" }}
+{{- $len := (default 16 .Length) | int -}}
+{{- $obj := (lookup "v1" "Secret" .Namespace .Name).data -}}
+{{- if $obj }}
+{{- index $obj .Key | b64dec -}}
+{{- else -}}
+{{- randAlphaNum $len -}}
+{{- end -}}
+{{- end }}
+
 {{/*
 Return the Grafana SMTP credentials secret
 */}}
diff --git a/addons/grafana/10/chart/grafana/templates/secret.yaml b/addons/grafana/10/chart/grafana/templates/secret.yaml
index bbe05846..645ebb05 100644
--- a/addons/grafana/10/chart/grafana/templates/secret.yaml
+++ b/addons/grafana/10/chart/grafana/templates/secret.yaml
@@ -11,6 +11,6 @@ metadata:
     app.kubernetes.io/component: grafana
 type: Opaque
 data:
-  GF_SECURITY_ADMIN_PASSWORD: {{ ternary (randAlphaNum 10) .Values.admin.password (empty .Values.admin.password) | b64enc | quote }}
+  GF_SECURITY_ADMIN_PASSWORD:  {{ include "admin.passwordValue" . | b64enc | quote }}
   GF_SECURITY_ADMIN_USER: {{ .Values.admin.user | b64enc |quote }}
 {{- end }}
diff --git a/addons/grafana/10/chart/grafana/values.yaml b/addons/grafana/10/chart/grafana/values.yaml
index f18c0343..9b029425 100644
--- a/addons/grafana/10/chart/grafana/values.yaml
+++ b/addons/grafana/10/chart/grafana/values.yaml
@@ -575,7 +575,7 @@ serviceAccount:
 service:
   ## @param service.type Kubernetes Service type
   ##
-  type: ClusterIP
+  type: LoadBalancer
   ## @param service.clusterIP Grafana service Cluster IP
   ## e.g.:
   ## clusterIP: None
diff --git a/addons/grafana/10/meta.yaml b/addons/grafana/10/meta.yaml
index 224ca287..53031a14 100644
--- a/addons/grafana/10/meta.yaml
+++ b/addons/grafana/10/meta.yaml
@@ -1,5 +1,5 @@
-name: Grafana
-version: 7.0
+name: grafana
+version: "10"
 id: fff5b6c7-ed85-429b-8265-493e40cc53c7
 description: "grafana"
 displayName: "grafana"
@@ -9,12 +9,14 @@ metadata:
     name: drycc
     supportURL: http://grafana.io/
   documentationURL: https://github.com/drycc-addons/
-tags: cloudbeaver
+tags: grafana
 bindable: true
 instances_retrievable: true
 bindings_retrievable: true
-plan_updateable: false
+plan_updateable: true
 allow_parameters:
+- name: "networkPolicy.allowNamespaces"
+  description: "networkPolicy allowNamespaces config for values.yaml"
 - name: "service.type"
   description: "service type config for values.yaml"
 archive: false
diff --git a/addons/grafana/10/plans/standard-5/bind.yaml b/addons/grafana/10/plans/standard-5/bind.yaml
index a41ae66e..ba4641b9 100644
--- a/addons/grafana/10/plans/standard-5/bind.yaml
+++ b/addons/grafana/10/plans/standard-5/bind.yaml
@@ -1,30 +1,29 @@
 credential:
-  {{- if (eq .Values.router.service.type "LoadBalancer") }}
-  - name: HOST
+  {{- if (eq .Values.service.type "LoadBalancer") }}
+  - name: EXTRANET_HOST
     valueFrom:
       serviceRef:
-        name: {{ printf "%s-router" (include "common.names.fullname" .) }}
+        name: {{ include "common.names.fullname" . }}
         jsonpath: '{ .status.loadBalancer.ingress[*].ip }'
-  {{- else if (eq .Values.service.type "ClusterIP") }}
+   {{- end }}
   - name: HOST
     valueFrom:
       serviceRef:
         name: {{ include "common.names.fullname" . }}
         jsonpath: '{ .spec.clusterIP }'
-  {{- end }}
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
-        name: {{ template "common.names.fullname" . }}-admin
+        name: {{ include "common.names.fullname" . }}-admin
         jsonpath: '{ .data.GF_SECURITY_ADMIN_PASSWORD }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
-        name: {{ template "common.names.fullname" . }}-admin
+        name: {{ include "common.names.fullname" . }}-admin
         jsonpath: '{ .data.GF_SECURITY_ADMIN_USER }' 
   - name: PORT
     valueFrom:  
       serviceRef:
-        name: {{ template "common.names.fullname" . }}
+        name: {{ include "common.names.fullname" . }}
         jsonpath: '{ .spec.ports[?(@.name=="http")].port }'
 
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/Chart.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/Chart.yaml
index 375ae4fe..da518fb1 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/Chart.yaml
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/Chart.yaml
@@ -25,4 +25,4 @@ name: postgresql
 sources:
   - https://github.com/drycc-addons/
   - https://www.postgresql.org/
-version: 15.3.1
+version: 15.4.1
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/README.md b/addons/postgresql-cluster/15/chart/postgresql-cluster/README.md
index 5fe50e3b..4dd6522d 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/README.md
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/README.md
@@ -71,13 +71,23 @@ backup:
 
 - Login database web with admin user & password
 
+- Change administrator initial password 
+```
+ALTER USER  administrator WITH ENCRYPTED PASSWORD 'newpassword';
+```
+- View total connections number in postgresql cluster;
+```
+show max_connections ;
+```
 - CREATE APP USER
 ```
-CREATE USER `my_user` WITH CONNECTION LIMIT `conn_limit` LOGIN ENCRYPTED PASSWORD 'password';
+CREATE USER `myuser` WITH CONNECTION LIMIT `conn limit` LOGIN ENCRYPTED PASSWORD 'password';
+GRANT `myuser` to administrator ;
 ```
 - CREATE APP DATABASE
 ```
-CREATE DATABASE `my_db` OWNER `my_user`;
+CREATE DATABASE `mydb` OWNER `myuser`;
+
 ```
 - CREATE EXTENSIONS
 ```
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/_helpers.tpl b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/_helpers.tpl
index e3bedca5..bb67a496 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/_helpers.tpl
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/_helpers.tpl
@@ -189,7 +189,7 @@ Get the administrator password ;
 {{- if .Values.adminRole.password }}
     {{- .Values.adminRole.password -}}
 {{- else -}}
-  {{- include "getValueFromSecret" (dict "Namespace" .Release.Namespace "Name" (include "common.names.fullname" .) "Length" 10 "Key" "password-replication")  -}}
+  {{- include "getValueFromSecret" (dict "Namespace" .Release.Namespace "Name" (include "common.names.fullname" .) "Length" 10 "Key" "admin-password")  -}}
 {{- end -}}
 {{- end }}
 
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/cm-backup.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/cm-backup.yaml
index b7eb7331..62cb7596 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/cm-backup.yaml
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/cm-backup.yaml
@@ -1,4 +1,3 @@
-{{- if (include "backup.createConfigmap" .) }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
@@ -15,8 +14,4 @@ metadata:
 data:
   backup.env: |-
     {{- include "common.tplvalues.render" ( dict "value" .Values.backupEnv "context" $ ) | nindent 4 }}
-  # archive_command.sh: | -
-  #   #/bin/bash
-  #   source backup.env 
-  #   [ $USE_WALG ] ? sh /opt/drycc/postgresql/walbackup.sh %p : /bin/true
-{{- end -}}
\ No newline at end of file
+
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/networkpolicy.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/networkpolicy.yaml
index dfad66c3..92fdc9a7 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/networkpolicy.yaml
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/networkpolicy.yaml
@@ -21,6 +21,7 @@ spec:
     # Allow inbound connections
     - ports:
       - port: 5432
+      - port: 9000
       {{- if and .Values.metrics.enabled }}
       - port: {{ .Values.metrics.containerPort }}
       {{ end }} 
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/sec.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/sec.yaml
index 8c94ae26..c2e13055 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/sec.yaml
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/sec.yaml
@@ -14,5 +14,5 @@ data:
   password-superuser: {{ include "credentials.superuserValue" . | b64enc | quote }}
   password-rewind: {{ include "credentials.rewindValue" . | b64enc | quote }}
   password-replication: {{ include "credentials.replicationValue" . | b64enc | quote  }} 
-  admin-user: {{ .Values.adminRole.username | b64enc }}
-  admin-password: {{ .Values.adminRole.password | b64enc }}
+  admin-user: {{ .Values.adminRole.username | b64enc | quote }}
+  admin-password: {{ include "adminRole.passwordValue" . | b64enc | quote }}
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/statefulset.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/statefulset.yaml
index 3aa16bdb..0dad1437 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/statefulset.yaml
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/templates/statefulset.yaml
@@ -161,7 +161,6 @@ spec:
         resources: {{- toYaml .Values.metrics.resources | nindent 12 }}
         {{- end }}
       {{- end }}
-       {{- if .Values.backup.enabled }}
       - name: {{ .Chart.Name }}-backup
         image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
         imagePullPolicy: {{ .Values.image.pullPolicy }}
@@ -195,7 +194,9 @@ spec:
         volumeMounts:
         - name: storage-volume
           mountPath: "{{ .Values.persistentVolume.mountPath }}" 
-      {{- end }}
+        - mountPath: "/opt/drycc/postgresql/backup/"
+          name: backup-config
+      
      {{- with .Values.nodeSelector }} 
       nodeSelector:
 {{ toYaml . | indent 8 }}
diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml
index deb83746..d15aa52a 100644
--- a/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml
+++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml
@@ -112,7 +112,7 @@ preInitScript: |
         password: '${PATRONI_REPLICATION_PASSWORD}'
       rewind:  # Has no effect on postgres 10 and lower
         username: rewinder
-        password: '${PATRONI_REWIND_USERNAME}'
+        password: '${PATRONI_REWIND_PASSWORD}'
   watchdog:
     mode: off
   __EOF__
@@ -124,8 +124,10 @@ postInitScript: |
   psql -w -c  "CREATE USER tea_mon WITH ROLE pg_monitor;create extension pg_stat_statements;create extension pg_buffercache ;"
   # Create admin  user 
   if [[( -n "$ADMIN_USER") &&  ( -n "$ADMIN_PASSWORD")]]; then
-     echo "Creating user ${ADMIN_USER}"
-    # psql -w -c "CREATE USER ${ADMIN_USER} WITH NOSUPERUSER CREATEDB CREATEROLE REPLICATION CONNECTION LIMIT 10 LOGIN ENCRYPTED PASSWORD '${ADMIN_PASSWORD}'"
+
+    echo "Creating user ${ADMIN_USER}"
+    psql -w -c "CREATE USER ${ADMIN_USER} WITH SUPERUSER CREATEDB CREATEROLE CONNECTION LIMIT 10 LOGIN ENCRYPTED PASSWORD '${ADMIN_PASSWORD}'"
+
   else
     echo "Skipping create admin user"
   fi
diff --git a/addons/postgresql-cluster/15/meta.yaml b/addons/postgresql-cluster/15/meta.yaml
index 5185d109..cded881f 100644
--- a/addons/postgresql-cluster/15/meta.yaml
+++ b/addons/postgresql-cluster/15/meta.yaml
@@ -19,8 +19,6 @@ allow_parameters:
   description: "networkPolicy allowNamespaces config for values.yaml"
 - name: "service.type"
   description: "service type config for values.yaml"
-- name: "metrics.enabled"
-  description: "Whether to enable metrics. default true"
 - name: "backup"
   description: "Whether to use S3 for backup your data. default false . ps: Make sure there is a available S3 "
 archive: false
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-10/bind.yaml b/addons/postgresql-cluster/15/plans/standard-10/bind.yaml
index 12acc0c6..e41b7b31 100644
--- a/addons/postgresql-cluster/15/plans/standard-10/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-10/bind.yaml
@@ -21,20 +21,18 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
+
diff --git a/addons/postgresql-cluster/15/plans/standard-10/values.yaml b/addons/postgresql-cluster/15/plans/standard-10/values.yaml
index 94917aff..fd8fd98f 100644
--- a/addons/postgresql-cluster/15/plans/standard-10/values.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-10/values.yaml
@@ -72,5 +72,5 @@ resources:
 
 persistentVolume:
   enabled: true
-  size: 10G
+  size: 10Gi
 
diff --git a/addons/postgresql-cluster/15/plans/standard-100/bind.yaml b/addons/postgresql-cluster/15/plans/standard-100/bind.yaml
index 12acc0c6..0283dff3 100644
--- a/addons/postgresql-cluster/15/plans/standard-100/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-100/bind.yaml
@@ -21,20 +21,17 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-100/values.yaml b/addons/postgresql-cluster/15/plans/standard-100/values.yaml
index 2f4c4841..90625a5d 100644
--- a/addons/postgresql-cluster/15/plans/standard-100/values.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-100/values.yaml
@@ -72,4 +72,4 @@ resources:
 
 persistentVolume:
   enabled: true
-  size: 100G
+  size: 100Gi
diff --git a/addons/postgresql-cluster/15/plans/standard-20/bind.yaml b/addons/postgresql-cluster/15/plans/standard-20/bind.yaml
index 12acc0c6..0283dff3 100644
--- a/addons/postgresql-cluster/15/plans/standard-20/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-20/bind.yaml
@@ -21,20 +21,17 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-20/values.yaml b/addons/postgresql-cluster/15/plans/standard-20/values.yaml
index 3ef08abf..fed1e2da 100644
--- a/addons/postgresql-cluster/15/plans/standard-20/values.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-20/values.yaml
@@ -74,4 +74,4 @@ resources:
 
 persistentVolume:
   enabled: true
-  size: 20G
+  size: 20Gi
diff --git a/addons/postgresql-cluster/15/plans/standard-200/bind.yaml b/addons/postgresql-cluster/15/plans/standard-200/bind.yaml
index 12acc0c6..0283dff3 100644
--- a/addons/postgresql-cluster/15/plans/standard-200/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-200/bind.yaml
@@ -21,20 +21,17 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-200/values.yaml b/addons/postgresql-cluster/15/plans/standard-200/values.yaml
index 5e9d641b..a0427d92 100644
--- a/addons/postgresql-cluster/15/plans/standard-200/values.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-200/values.yaml
@@ -71,4 +71,4 @@ resources:
 
 persistentVolume:
   enabled: true
-  size: 200G
+  size: 200Gi
diff --git a/addons/postgresql-cluster/15/plans/standard-400/bind.yaml b/addons/postgresql-cluster/15/plans/standard-400/bind.yaml
index 12acc0c6..0283dff3 100644
--- a/addons/postgresql-cluster/15/plans/standard-400/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-400/bind.yaml
@@ -21,20 +21,17 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-400/values.yaml b/addons/postgresql-cluster/15/plans/standard-400/values.yaml
index b1afad1d..062ee7cb 100644
--- a/addons/postgresql-cluster/15/plans/standard-400/values.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-400/values.yaml
@@ -72,4 +72,4 @@ resources:
 
 persistentVolume:
   enabled: true
-  size: 400G
+  size: 400Gi
diff --git a/addons/postgresql-cluster/15/plans/standard-50/bind.yaml b/addons/postgresql-cluster/15/plans/standard-50/bind.yaml
index 12acc0c6..0283dff3 100644
--- a/addons/postgresql-cluster/15/plans/standard-50/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-50/bind.yaml
@@ -21,20 +21,17 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-50/meta.yaml b/addons/postgresql-cluster/15/plans/standard-50/meta.yaml
index 29e67ad5..a194f7ef 100644
--- a/addons/postgresql-cluster/15/plans/standard-50/meta.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-50/meta.yaml
@@ -1,6 +1,6 @@
 name: "standard-50"
 id: 0542f411-4e7b-46af-966c-c9989e54873c
-description: "PostgreSQL standard-50 plan: Disk 50Gi ,vCPUs 2 , RAM 8G , DB MAX Connection 2000"
+description: "PostgreSQL Cluster standard-50 plan: Disk 50Gi ,vCPUs 2 , RAM 8G , DB MAX Connection 2000"
 displayName: "standard-50"
 bindable: true
 maximum_polling_duration: 1800
diff --git a/addons/postgresql-cluster/15/plans/standard-800/bind.yaml b/addons/postgresql-cluster/15/plans/standard-800/bind.yaml
index 12acc0c6..0283dff3 100644
--- a/addons/postgresql-cluster/15/plans/standard-800/bind.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-800/bind.yaml
@@ -21,20 +21,17 @@ credential:
       serviceRef:
         name: {{ include "common.names.fullname" . }}-repl
         jsonpath: '{ .spec.clusterIP }'
-  - name: DADABASE
-    valueFrom:
-      secretKeyRef:
-        name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-name }' 
   - name: PASSWORD
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-password }' 
+        jsonpath: '{ .data.admin-password }' 
   - name: USERNAME
     valueFrom:
       secretKeyRef:
         name: {{ template "common.names.fullname" . }}
-        jsonpath: '{ .data.data-user }' 
+        jsonpath: '{ .data.admin-user }' 
   - name: PORT
-    value: 5432
\ No newline at end of file
+    value: 5432
+  - name: DADABASE
+    value: postgres
\ No newline at end of file
diff --git a/addons/postgresql-cluster/15/plans/standard-800/values.yaml b/addons/postgresql-cluster/15/plans/standard-800/values.yaml
index 3e88193a..c6efbfa0 100644
--- a/addons/postgresql-cluster/15/plans/standard-800/values.yaml
+++ b/addons/postgresql-cluster/15/plans/standard-800/values.yaml
@@ -72,4 +72,4 @@ resources:
 
 persistentVolume:
   enabled: true
-  size: 800G
+  size: 800Gi
diff --git a/addons/prometheus/2/chart/prometheus/templates/_helpers.tpl b/addons/prometheus/2/chart/prometheus/templates/_helpers.tpl
index 80fa45ab..376d4b33 100644
--- a/addons/prometheus/2/chart/prometheus/templates/_helpers.tpl
+++ b/addons/prometheus/2/chart/prometheus/templates/_helpers.tpl
@@ -161,4 +161,26 @@ Get the Alertmanager configuration configmap.
 {{- else }}
     {{- include "prometheus.alertmanager.fullname" . -}}
 {{- end -}}
-{{- end -}}
\ No newline at end of file
+{{- end -}}
+
+{{- define "server.passwordValue" -}}
+{{- if .Values.server.password }}
+    {{- .Values.server.password -}}
+{{- else -}}
+  {{- include "getValueFromSecret" (dict "Namespace" .Release.Namespace "Name" (include "common.names.fullname" .) "Length" 10 "Key" "PASSWORD")  -}}
+{{- end -}}
+{{- end }}
+
+{{/*
+Returns the available value for certain key in an existing secret (if it exists),
+otherwise it generates a random value.
+*/}}
+{{- define "getValueFromSecret" }}
+{{- $len := (default 16 .Length) | int -}}
+{{- $obj := (lookup "v1" "Secret" .Namespace .Name).data -}}
+{{- if $obj }}
+{{- index $obj .Key | b64dec -}}
+{{- else -}}
+{{- randAlphaNum $len -}}
+{{- end -}}
+{{- end }}
\ No newline at end of file
diff --git a/addons/prometheus/2/chart/prometheus/templates/server/configmap.yaml b/addons/prometheus/2/chart/prometheus/templates/server/configmap.yaml
index d59c6029..8297025d 100644
--- a/addons/prometheus/2/chart/prometheus/templates/server/configmap.yaml
+++ b/addons/prometheus/2/chart/prometheus/templates/server/configmap.yaml
@@ -20,6 +20,7 @@ data:
   {{- include "common.tplvalues.render" (dict "value" .Values.server.configuration "context" $) | toYaml | nindent 4 }}
   {{ include "prometheus.serever.web.configmapKey" .}}:
   {{- include "common.tplvalues.render" (dict "value" .Values.server.webconfig "context" $) | toYaml | nindent 4 }}
-  rules.yaml:
-    {{- include "common.tplvalues.render" (dict "value" .Values.server.alertingRules "context" $) | toYaml | nindent 4 }}
+  rules.yaml: 
+    {{- include "common.tplvalues.render" (dict "value" .Values.server.rules "context" $) | toYaml | nindent 4 }}
+  
 {{- end }}
diff --git a/addons/prometheus/2/chart/prometheus/templates/server/deployment.yaml b/addons/prometheus/2/chart/prometheus/templates/server/deployment.yaml
index 9c123471..12480ad1 100644
--- a/addons/prometheus/2/chart/prometheus/templates/server/deployment.yaml
+++ b/addons/prometheus/2/chart/prometheus/templates/server/deployment.yaml
@@ -114,6 +114,7 @@ spec:
           args:
             - "--config.file=/opt/drycc/prometheus/conf/{{ include "prometheus.server.configmapKey" . }}"
             - "--storage.tsdb.path={{ .Values.server.persistence.mountPath }}"
+            - "--storage.tsdb.retention.time={{ .Values.server.retentionDays }}"
             - "--storage.tsdb.retention.size={{ .Values.server.retentionSize }}"
             - "--log.level={{ .Values.server.logLevel }}"
             - "--log.format={{ .Values.server.logFormat }}"
diff --git a/addons/prometheus/2/chart/prometheus/templates/server/sec.yaml b/addons/prometheus/2/chart/prometheus/templates/server/sec.yaml
index fd0b368c..c538a98a 100644
--- a/addons/prometheus/2/chart/prometheus/templates/server/sec.yaml
+++ b/addons/prometheus/2/chart/prometheus/templates/server/sec.yaml
@@ -11,4 +11,4 @@ metadata:
     cluster-name: {{ template "prometheus.server.fullname" . }}
 type: Opaque
 data:
-  PASSWORD: {{ if .Values.password | default "" | ne "" }} {{ .Values.service.password | b64enc }}{{ else }}{{ randAlphaNum 32 | b64enc }}{{ end }}
+  PASSWORD: {{ include "server.passwordValue" . | b64enc | quote }}
diff --git a/addons/prometheus/2/chart/prometheus/values.yaml b/addons/prometheus/2/chart/prometheus/values.yaml
index d5c84081..807a45d1 100644
--- a/addons/prometheus/2/chart/prometheus/values.yaml
+++ b/addons/prometheus/2/chart/prometheus/values.yaml
@@ -360,7 +360,7 @@ alertmanager:
   ingress:
     ## @param alertmanager.ingress.enabled Enable ingress record generation for Alertmanager
     ##
-    enabled: true
+    enabled: false
     ## @param alertmanager.ingress.pathType Ingress path type
     ##
     pathType: ImplementationSpecific
@@ -479,7 +479,7 @@ alertmanager:
   service:
     ## @param alertmanager.service.type Alertmanager service type
     ##
-    type: LoadBalancer
+    type: ClusterIP
     ## @param alertmanager.service.ports.http Alertmanager service HTTP port
     ## @param alertmanager.service.ports.cluster Alertmanager cluster HA port
     ##
@@ -578,7 +578,7 @@ alertmanager:
 ##
 server:
   username: admin
-  password: admin
+  password: To6EJBHPUo
   image:
     registry: registry.drycc.cc
     repository: drycc-addons/prometheus
@@ -626,6 +626,9 @@ server:
     {{- end }}
     scrape_configs:
       - job_name: prometheus
+        basic_auth:
+          username: {{ .Values.server.username }}
+          password: {{ .Values.server.password }}
       {{- include "prometheus.scrape_config" (dict "component" "server" "context" $) | nindent 4 }}
     {{- if .Values.alertmanager.enabled }}
       - job_name: alertmanager
@@ -650,15 +653,29 @@ server:
         - scheme: HTTP
           static_configs:
             - targets: [ "{{ printf "%s.%s.svc.%s:%d" (include "prometheus.alertmanager.fullname" .) (include "common.names.namespace" .) .Values.clusterDomain (int .Values.alertmanager.service.ports.http) }}" ]
+    {{- end }}
     rule_files:
       - rules.yaml
-    {{- end }}
-
-
+    
   ## @param server.alertingRules Prometheus alerting rules. This content will be stored in the the rules.yaml file and the content can be a template.
   ## ref: <https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/>
-  ##
-  alertingRules: {}
+  ## 
+  rules: |
+    {{`
+    groups:
+    - name: PG数据库-监控告警
+      rules:
+      - alert: PostgresqlDown
+        expr: pg_up == 0
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql down (instance {{ $labels.instance }})
+          description: "Postgresql instance is down\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+     `}}
+
   ## @param server.extraScrapeConfigs Promethus configuration, useful to declare new scrape_configs. This content will be merged with the 'server.configuration' value and stored in the the prometheus.yaml file.
   ## ref: <https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config>
   ##
@@ -932,7 +949,7 @@ server:
   logFormat: logfmt
   ## @param server.retention Metrics retention days
   ##
-  retention: 10d
+  retentionDays: 15d
   ## @param server.retentionSize Maximum size of metrics
   ##
   retentionSize: "0"
@@ -1239,7 +1256,7 @@ server:
   ingress:
     ## @param server.ingress.enabled Enable ingress record generation for Prometheus
     ##
-    enabled: true
+    enabled: false
     ## @param server.ingress.pathType Ingress path type
     ##
     pathType: ImplementationSpecific
@@ -1357,7 +1374,7 @@ server:
   service:
     ## @param server.service.type Prometheus service type
     ##
-    type: LoadBalancer
+    type: ClusterIP
     ## @param server.service.ports.http Prometheus service HTTP port
     ##
     ports:
@@ -1412,6 +1429,7 @@ server:
   ## Enable persistence using Persistent Volume Claims
   ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
   ##
+
   persistence:
     ## @param server.persistence.enabled Enable persistence using Persistent Volume Claims. If you have multiple instances (server.repicacount > 1), please considere using an external storage service like Thanos or Grafana Mimir
     ##
diff --git a/addons/prometheus/2/meta.yaml b/addons/prometheus/2/meta.yaml
index 7ac5e2af..4f7d7ef2 100644
--- a/addons/prometheus/2/meta.yaml
+++ b/addons/prometheus/2/meta.yaml
@@ -13,12 +13,18 @@ tags: prometheus
 bindable: true
 instances_retrievable: true
 bindings_retrievable: true
-plan_updateable: false
+plan_updateable: true
 allow_parameters:
 - name: "networkPolicy.allowNamespaces"
   description: "networkPolicy allowNamespaces config for values.yaml"
-- name: "server.username"
-  description: "set username . default amdin"
-- name: "server.username"
-  description: "set passsword . default amdin"
+- name: "server.service.type"
+  description: "service type config for values.yaml"
+- name: "alertmanager.enabled"
+  description: "alertmanager config for values.yaml"
+- name: "server.retentionDays"
+  description: "retentionDays config for values.yaml default 15d"
+- name: "server.retentionSize"
+  description: "retentionSize config for values.yaml default 0, unit  MB, GB, TB"
+- name: "server.rules"
+  description: "rules config for values.yaml"
 archive: false
diff --git a/addons/prometheus/2/plans/standard-10/bind.yaml b/addons/prometheus/2/plans/standard-10/bind.yaml
index e453fade..dd543b83 100644
--- a/addons/prometheus/2/plans/standard-10/bind.yaml
+++ b/addons/prometheus/2/plans/standard-10/bind.yaml
@@ -1,24 +1,23 @@
 credential:
 {{- if (eq .Values.server.service.type "LoadBalancer") }}
-  - name: HOST
+  - name: EXTRANET_HOST
     valueFrom:
-      serviceRef:
-        name: {{ include "common.names.fullname" . }}
+      serviceRef: 
+        name: {{ template "prometheus.server.fullname" . }}
         jsonpath: '{ .status.loadBalancer.ingress[*].ip }'
-{{- else if (eq .Values.service.type "ClusterIP") }}
+{{- end }}
   - name: HOST
     valueFrom:
       serviceRef:
-        name: {{ include "common.names.fullname" . }}
+        name: {{ template "prometheus.server.fullname" . }}
         jsonpath: '{ .spec.clusterIP }'
-{{- end }}
   - name: PORT
     valueFrom:
       serviceRef:
-        name: {{ template "common.names.fullname" . }}
+        name: {{ template "prometheus.server.fullname" . }}
         jsonpath: ' { .spec.ports[?(@.name=="http")].port }' 
   - name: USER
-    valule: {{ .Values.server.username }} 
+    value: {{ .Values.server.username }}
   - name: PASSWORD
-    valule: {{ .Values.server.password }} 
-  {{- end }}
+    value: {{ .Values.server.password }} 
+
diff --git a/addons/prometheus/2/plans/standard-10/values.yaml b/addons/prometheus/2/plans/standard-10/values.yaml
index 796ae97e..06e89f6a 100644
--- a/addons/prometheus/2/plans/standard-10/values.yaml
+++ b/addons/prometheus/2/plans/standard-10/values.yaml
@@ -5,4 +5,4 @@ fullnameOverride: hb-prometheus-standard-10
 server:
   persistence:
     size: 10Gi
-  retentionSize: 8Gi
\ No newline at end of file
+  # retentionSize: 8GBi
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-100/bind.yaml b/addons/prometheus/2/plans/standard-100/bind.yaml
new file mode 100644
index 00000000..668c5cdf
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-100/bind.yaml
@@ -0,0 +1,23 @@
+credential:
+{{- if (eq .Values.server.service.type "LoadBalancer") }}
+  - name: EXTRANET_HOST
+    valueFrom:
+      serviceRef: 
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: '{ .status.loadBalancer.ingress[*].ip }'
+{{- end }}
+  - name: HOST
+    valueFrom:
+      serviceRef:
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: '{ .spec.clusterIP }'
+  - name: PORT
+    valueFrom:
+      serviceRef:
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: ' { .spec.ports[?(@.name=="http")].port }' 
+  - name: USER
+    value: {{ .Values.server.username }} 
+  - name: PASSWORD
+    value: {{ .Values.server.password }} 
+
diff --git a/addons/prometheus/2/plans/standard-100/create-instance-schema.json b/addons/prometheus/2/plans/standard-100/create-instance-schema.json
new file mode 100644
index 00000000..66ebbaa0
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-100/create-instance-schema.json
@@ -0,0 +1,12 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "properties": {
+    "imagePullPolicy": {
+      "type": "string",
+      "enum": ["Always", "IfNotPresent", "Never"],
+      "default": "IfNotPresent",
+      "title": "Image pull policy"
+    }
+  }
+}
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-100/meta.yaml b/addons/prometheus/2/plans/standard-100/meta.yaml
new file mode 100644
index 00000000..fdc3185e
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-100/meta.yaml
@@ -0,0 +1,6 @@
+name: "standard-100"
+id: 118aada0-4826-4dba-83d8-989fbf47c55a
+description: "Prometheus Cluster standard-100 plan persistence size 100Gi."
+displayName: "100Gi"
+bindable: true
+maximum_polling_duration: 1800
diff --git a/addons/prometheus/2/plans/standard-100/values.yaml b/addons/prometheus/2/plans/standard-100/values.yaml
new file mode 100644
index 00000000..7e8b3d46
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-100/values.yaml
@@ -0,0 +1,8 @@
+## @param fullnameOverride String to fully override common.names.fullname template
+##
+fullnameOverride: hb-prometheus-standard-100
+
+server:
+  persistence:
+    size: 100Gi
+  # retentionSize: 48GBi
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-200/bind.yaml b/addons/prometheus/2/plans/standard-200/bind.yaml
new file mode 100644
index 00000000..668c5cdf
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-200/bind.yaml
@@ -0,0 +1,23 @@
+credential:
+{{- if (eq .Values.server.service.type "LoadBalancer") }}
+  - name: EXTRANET_HOST
+    valueFrom:
+      serviceRef: 
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: '{ .status.loadBalancer.ingress[*].ip }'
+{{- end }}
+  - name: HOST
+    valueFrom:
+      serviceRef:
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: '{ .spec.clusterIP }'
+  - name: PORT
+    valueFrom:
+      serviceRef:
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: ' { .spec.ports[?(@.name=="http")].port }' 
+  - name: USER
+    value: {{ .Values.server.username }} 
+  - name: PASSWORD
+    value: {{ .Values.server.password }} 
+
diff --git a/addons/prometheus/2/plans/standard-200/create-instance-schema.json b/addons/prometheus/2/plans/standard-200/create-instance-schema.json
new file mode 100644
index 00000000..66ebbaa0
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-200/create-instance-schema.json
@@ -0,0 +1,12 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "properties": {
+    "imagePullPolicy": {
+      "type": "string",
+      "enum": ["Always", "IfNotPresent", "Never"],
+      "default": "IfNotPresent",
+      "title": "Image pull policy"
+    }
+  }
+}
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-200/meta.yaml b/addons/prometheus/2/plans/standard-200/meta.yaml
new file mode 100644
index 00000000..ddc6523c
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-200/meta.yaml
@@ -0,0 +1,6 @@
+name: "standard-200"
+id: be99a35d-dbb4-4e17-8b27-1f00c5bca057
+description: "Prometheus Cluster standard-200 plan persistence size 200Gi."
+displayName: "200Gi"
+bindable: true
+maximum_polling_duration: 1800
diff --git a/addons/prometheus/2/plans/standard-200/values.yaml b/addons/prometheus/2/plans/standard-200/values.yaml
new file mode 100644
index 00000000..c5f2a7e5
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-200/values.yaml
@@ -0,0 +1,8 @@
+## @param fullnameOverride String to fully override common.names.fullname template
+##
+fullnameOverride: hb-prometheus-standard-200
+
+server:
+  persistence:
+    size: 200Gi
+  # retentionSize: 48GBi
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-50/bind.yaml b/addons/prometheus/2/plans/standard-50/bind.yaml
index e453fade..668c5cdf 100644
--- a/addons/prometheus/2/plans/standard-50/bind.yaml
+++ b/addons/prometheus/2/plans/standard-50/bind.yaml
@@ -1,24 +1,23 @@
 credential:
 {{- if (eq .Values.server.service.type "LoadBalancer") }}
-  - name: HOST
+  - name: EXTRANET_HOST
     valueFrom:
-      serviceRef:
-        name: {{ include "common.names.fullname" . }}
+      serviceRef: 
+        name: {{ template "prometheus.server.fullname" . }}
         jsonpath: '{ .status.loadBalancer.ingress[*].ip }'
-{{- else if (eq .Values.service.type "ClusterIP") }}
+{{- end }}
   - name: HOST
     valueFrom:
       serviceRef:
-        name: {{ include "common.names.fullname" . }}
+        name: {{ template "prometheus.server.fullname" . }}
         jsonpath: '{ .spec.clusterIP }'
-{{- end }}
   - name: PORT
     valueFrom:
       serviceRef:
-        name: {{ template "common.names.fullname" . }}
+        name: {{ template "prometheus.server.fullname" . }}
         jsonpath: ' { .spec.ports[?(@.name=="http")].port }' 
   - name: USER
-    valule: {{ .Values.server.username }} 
+    value: {{ .Values.server.username }} 
   - name: PASSWORD
-    valule: {{ .Values.server.password }} 
-  {{- end }}
+    value: {{ .Values.server.password }} 
+
diff --git a/addons/prometheus/2/plans/standard-50/values.yaml b/addons/prometheus/2/plans/standard-50/values.yaml
index 69caeefa..b59af0aa 100644
--- a/addons/prometheus/2/plans/standard-50/values.yaml
+++ b/addons/prometheus/2/plans/standard-50/values.yaml
@@ -5,4 +5,4 @@ fullnameOverride: hb-prometheus-standard-50
 server:
   persistence:
     size: 50Gi
-  retentionSize: 48Gi
\ No newline at end of file
+  # retentionSize: 48GBi
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-500/bind.yaml b/addons/prometheus/2/plans/standard-500/bind.yaml
new file mode 100644
index 00000000..668c5cdf
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-500/bind.yaml
@@ -0,0 +1,23 @@
+credential:
+{{- if (eq .Values.server.service.type "LoadBalancer") }}
+  - name: EXTRANET_HOST
+    valueFrom:
+      serviceRef: 
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: '{ .status.loadBalancer.ingress[*].ip }'
+{{- end }}
+  - name: HOST
+    valueFrom:
+      serviceRef:
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: '{ .spec.clusterIP }'
+  - name: PORT
+    valueFrom:
+      serviceRef:
+        name: {{ template "prometheus.server.fullname" . }}
+        jsonpath: ' { .spec.ports[?(@.name=="http")].port }' 
+  - name: USER
+    value: {{ .Values.server.username }} 
+  - name: PASSWORD
+    value: {{ .Values.server.password }} 
+
diff --git a/addons/prometheus/2/plans/standard-500/create-instance-schema.json b/addons/prometheus/2/plans/standard-500/create-instance-schema.json
new file mode 100644
index 00000000..66ebbaa0
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-500/create-instance-schema.json
@@ -0,0 +1,12 @@
+{
+  "$schema": "http://json-schema.org/draft-04/schema#",
+  "type": "object",
+  "properties": {
+    "imagePullPolicy": {
+      "type": "string",
+      "enum": ["Always", "IfNotPresent", "Never"],
+      "default": "IfNotPresent",
+      "title": "Image pull policy"
+    }
+  }
+}
\ No newline at end of file
diff --git a/addons/prometheus/2/plans/standard-500/meta.yaml b/addons/prometheus/2/plans/standard-500/meta.yaml
new file mode 100644
index 00000000..d58ee8e0
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-500/meta.yaml
@@ -0,0 +1,6 @@
+name: "standard-500"
+id: c28dc645-f17d-4304-a3f9-5dcaabad2a49
+description: "Prometheus Cluster standard-500 plan persistence size 500Gi."
+displayName: "500Gi"
+bindable: true
+maximum_polling_duration: 1800
diff --git a/addons/prometheus/2/plans/standard-500/values.yaml b/addons/prometheus/2/plans/standard-500/values.yaml
new file mode 100644
index 00000000..2b8e6318
--- /dev/null
+++ b/addons/prometheus/2/plans/standard-500/values.yaml
@@ -0,0 +1,8 @@
+## @param fullnameOverride String to fully override common.names.fullname template
+##
+fullnameOverride: hb-prometheus-standard-500
+
+server:
+  persistence:
+    size: 500Gi
+  # retentionSize: 48GBi
\ No newline at end of file
diff --git a/addons/prometheus/rules.yaml b/addons/prometheus/rules.yaml
new file mode 100644
index 00000000..fe3d5a18
--- /dev/null
+++ b/addons/prometheus/rules.yaml
@@ -0,0 +1,159 @@
+server:
+  rules: |-
+    {{`
+    groups:
+    - name: PG数据库-监控告警
+      rules:
+      - alert: PostgresqlDown
+        expr: pg_up == 0
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql down (instance {{ $labels.instance }})
+          description: "Postgresql instance is down\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlRestarted
+        expr: time() - pg_postmaster_start_time_seconds < 60
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql restarted (instance {{ $labels.instance }})
+          description: "Postgresql restarted\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlExporterError
+        expr: pg_exporter_last_scrape_error > 0
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql exporter error (instance {{ $labels.instance }})
+          description: "Postgresql exporter is showing errors. A query may be buggy in query.yaml\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlTableNotAutoVacuumed
+        expr: (pg_stat_user_tables_last_autovacuum > 0) and (time() - pg_stat_user_tables_last_autovacuum) > 60 * 60 * 24 * 10
+        for: 0m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql table not auto vacuumed (instance {{ $labels.instance }})
+          description: "Table {{ $labels.relname }} has not been auto vacuumed for 10 days\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlTableNotAutoAnalyzed
+        expr: (pg_stat_user_tables_last_autoanalyze > 0) and (time() - pg_stat_user_tables_last_autoanalyze) > 24 * 60 * 60 * 10
+        for: 0m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql table not auto analyzed (instance {{ $labels.instance }})
+          description: "Table {{ $labels.relname }} has not been auto analyzed for 10 days\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlTooManyConnections
+        expr: sum by (datname) (pg_stat_activity_count{datname!~"template.*|postgres"}) > pg_settings_max_connections * 0.8
+        for: 2m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql too many connections (instance {{ $labels.instance }})
+          description: "PostgreSQL instance has too many connections (> 80%).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlNotEnoughConnections
+        expr: sum by (datname) (pg_stat_activity_count{datname!~"template.*|postgres"}) < 5
+        for: 2m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql not enough connections (instance {{ $labels.instance }})
+          description: "PostgreSQL instance should have more connections (> 5)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlDeadLocks
+        expr: increase(pg_stat_database_deadlocks{datname!~"template.*|postgres"}[1m]) > 5
+        for: 0m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql dead locks (instance {{ $labels.instance }})
+          description: "PostgreSQL has dead-locks\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlHighRollbackRate
+        expr: sum by (namespace,datname) ((rate(pg_stat_database_xact_rollback{datname!~"template.*|postgres",datid!="0"}[3m])) / ((rate(pg_stat_database_xact_rollback{datname!~"template.*|postgres",datid!="0"}[3m])) + (rate(pg_stat_database_xact_commit{datname!~"template.*|postgres",datid!="0"}[3m])))) > 0.02
+        for: 0m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql high rollback rate (instance {{ $labels.instance }})
+          description: "Ratio of transactions being aborted compared to committed is > 2 %\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlCommitRateLow
+        expr: rate(pg_stat_database_xact_commit[1m]) < 10
+        for: 2m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql commit rate low (instance {{ $labels.instance }})
+          description: "Postgresql seems to be processing very few transactions\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlLowXidConsumption
+        expr: rate(pg_txid_current[1m]) < 5
+        for: 2m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql low XID consumption (instance {{ $labels.instance }})
+          description: "Postgresql seems to be consuming transaction IDs very slowly\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlHighRateStatementTimeout
+        expr: rate(postgresql_errors_total{type="statement_timeout"}[1m]) > 3
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql high rate statement timeout (instance {{ $labels.instance }})
+          description: "Postgres transactions showing high rate of statement timeouts\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlHighRateDeadlock
+        expr: increase(postgresql_errors_total{type="deadlock_detected"}[1m]) > 1
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql high rate deadlock (instance {{ $labels.instance }})
+          description: "Postgres detected deadlocks\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlUnusedReplicationSlot
+        expr: pg_replication_slots_active == 0
+        for: 1m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql unused replication slot (instance {{ $labels.instance }})
+          description: "Unused Replication Slots\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlTooManyDeadTuples
+        expr: ((pg_stat_user_tables_n_dead_tup > 10000) / (pg_stat_user_tables_n_live_tup + pg_stat_user_tables_n_dead_tup)) >= 0.1
+        for: 2m
+        labels:
+          severity: warning
+        annotations:
+          summary: Postgresql too many dead tuples (instance {{ $labels.instance }})
+          description: "PostgreSQL dead tuples is too large\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlConfigurationChanged
+        expr: '{__name__=~"pg_settings_.*"} != ON(__name__) {__name__=~"pg_settings_([^t]|t[^r]|tr[^a]|tra[^n]|tran[^s]|trans[^a]|transa[^c]|transac[^t]|transact[^i]|transacti[^o]|transactio[^n]|transaction[^_]|transaction_[^r]|transaction_r[^e]|transaction_re[^a]|transaction_rea[^d]|transaction_read[^_]|transaction_read_[^o]|transaction_read_o[^n]|transaction_read_on[^l]|transaction_read_onl[^y]).* "} OFFSET 5m'
+        for: 0m
+        labels:
+          severity: info
+        annotations:
+          summary: Postgresql configuration changed (instance {{ $labels.instance }})
+          description: "Postgres Database configuration change has occurred\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+
+      - alert: PostgresqlSslCompressionActive
+        expr: sum(pg_stat_ssl_compression) > 0
+        for: 0m
+        labels:
+          severity: critical
+        annotations:
+          summary: Postgresql SSL compression active (instance {{ $labels.instance }})
+          description: "Database connections with SSL compression enabled. This may add significant jitter in replication delay.  in recovery.conf.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
+    `}}
\ No newline at end of file
