diff --git a/addons/mysql-cluster/8.0/chart/mysql-cluster/Chart.yaml b/addons/mysql-cluster/8.0/chart/mysql-cluster/Chart.yaml index 634f9453..8b3d99c5 100644 --- a/addons/mysql-cluster/8.0/chart/mysql-cluster/Chart.yaml +++ b/addons/mysql-cluster/8.0/chart/mysql-cluster/Chart.yaml @@ -1,7 +1,7 @@ annotations: category: Database apiVersion: v2 -appVersion: 8.0.30 +appVersion: 8.0.35 dependencies: - name: common repository: oci://registry.drycc.cc/charts @@ -25,4 +25,4 @@ name: mysql sources: - https://github.com/drycc/containers/tree/main/drycc/mysql - https://mysql.com -version: 9.3.5 +version: 8.0.35 diff --git a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/deployments.yaml b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/deployments.yaml new file mode 100644 index 00000000..ef626420 --- /dev/null +++ b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/deployments.yaml @@ -0,0 +1,41 @@ +{{- /* +Copyright Drycc Community. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "mysql.cluster.fullname" . }}-tools + namespace: {{ include "common.names.namespace" . | quote }} +spec: + replicas: 1 + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: mysql-cluster-tools + + template: + metadata: + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: mysql-cluster-tools + + spec: + containers: + - name: cluster-tools + image: {{ include "cluster.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + sleep infinity + env: + - name: MYSQL_MASTER_PORT_NUMBER + value: {{ .Values.primary.service.ports.mysql | quote }} + - name: MYSQL_MASTER_ROOT_USER + value: "root" + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mysql.secretName" . }} + key: mysql-root-password diff --git a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/job.yaml b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/job.yaml index a922a4c4..88365d71 100644 --- a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/job.yaml +++ b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/cluster/job.yaml @@ -67,7 +67,8 @@ spec: " > /tmp/slave.sql mysql -h${HOST_1} -P${MYSQL_MASTER_PORT_NUMBER} -uroot -p${MYSQL_ROOT_PASSWORD} < /tmp/slave.sql mysql -h${HOST_2} -P${MYSQL_MASTER_PORT_NUMBER} -uroot -p${MYSQL_ROOT_PASSWORD} < /tmp/slave.sql - + mysql -h${HOST_0} -P${MYSQL_MASTER_PORT_NUMBER} -uroot -p${MYSQL_ROOT_PASSWORD} -e "GRANT ALL PRIVILEGES ON *.* TO administrator@'%' WITH GRANT OPTION;flush privileges;" + env: - name: DRYCC_DEBUG value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} diff --git a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/primary/statefulset.yaml b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/primary/statefulset.yaml index 24302e10..a5ffa045 100644 --- a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/primary/statefulset.yaml +++ b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/primary/statefulset.yaml @@ -369,6 +369,11 @@ spec: - name: data emptyDir: {} {{- else if and .Values.primary.persistence.enabled (not .Values.primary.persistence.existingClaim) }} + {{- if .Values.primary.persistentVolumeClaimRetentionPolicy.enabled }} + persistentVolumeClaimRetentionPolicy: + whenDeleted: {{ .Values.primary.persistentVolumeClaimRetentionPolicy.whenDeleted }} + whenScaled: {{ .Values.primary.persistentVolumeClaimRetentionPolicy.whenScaled }} + {{- end }} volumeClaimTemplates: - metadata: name: data diff --git a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/secrets.yaml b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/secrets.yaml index c51cfb39..75c6bf5e 100644 --- a/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/secrets.yaml +++ b/addons/mysql-cluster/8.0/chart/mysql-cluster/templates/secrets.yaml @@ -46,7 +46,7 @@ metadata: {{- end }} type: servicebinding.io/mysql data: - provider: {{ print "bitnami" | b64enc | quote }} + provider: {{ print "drycc" | b64enc | quote }} type: {{ print "mysql" | b64enc | quote }} host: {{ print $host | b64enc | quote }} port: {{ print $port | b64enc | quote }} @@ -60,7 +60,7 @@ data: apiVersion: v1 kind: Secret metadata: - name: {{ include "common.names.fullname" . }}-svcbind-custom-user + name: {{ include "common.names.fullname" . }}-svcbind-administrator-user namespace: {{ .Release.Namespace | quote }} labels: {{- include "common.labels.standard" . | nindent 4 }} {{- if .Values.commonLabels }} diff --git a/addons/mysql-cluster/8.0/chart/mysql-cluster/values.yaml b/addons/mysql-cluster/8.0/chart/mysql-cluster/values.yaml index 2c70143b..1f460ecf 100644 --- a/addons/mysql-cluster/8.0/chart/mysql-cluster/values.yaml +++ b/addons/mysql-cluster/8.0/chart/mysql-cluster/values.yaml @@ -113,11 +113,11 @@ auth: ## @param auth.database Name for a custom database to create ## ref: https://github.com/drycc/containers/tree/main/drycc/mysql#creating-a-database-on-first-run ## - database: "mx_database" + database: "mondb" ## @param auth.username Name for a custom user to create ## ref: https://github.com/drycc/containers/tree/main/drycc/mysql#creating-a-database-user-on-first-run ## - username: "mx111" + username: "administrator" ## @param auth.password Password for the new user. Ignored if existing secret is provided ## password: "" @@ -127,7 +127,7 @@ auth: replicationUser: replicator ## @param auth.replicationPassword MySQL replication user password. Ignored if existing secret is provided ## - replicationPassword: "user4_repUU" + replicationPassword: "" ## @param auth.existingSecret Use existing secret for password details. The secret has to contain the keys `mysql-root-password`, `mysql-replication-password` and `mysql-password` ## NOTE: When it's set the auth.rootPassword, auth.password, auth.replicationPassword are ignored. ## @@ -244,6 +244,7 @@ primary: disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" sql_require_primary_key=ON log_error_suppression_list='MY-013360' + binlog_transaction_dependency_tracking=WRITESET # Replication log_bin=mysql-bin @@ -473,6 +474,10 @@ primary: ## Enable persistence using Persistent Volume Claims ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## + persistentVolumeClaimRetentionPolicy: + enabled: true + whenScaled: Delete + whenDeleted: Delete persistence: ## @param primary.persistence.enabled Enable persistence on MySQL primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir ## @@ -603,6 +608,7 @@ cluster: digest: "" pullPolicy: IfNotPresent + router: ## @param router.name Name of the router ## diff --git a/addons/mysql-cluster/8.0/meta.yaml b/addons/mysql-cluster/8.0/meta.yaml index 5af39a4c..273e3a55 100644 --- a/addons/mysql-cluster/8.0/meta.yaml +++ b/addons/mysql-cluster/8.0/meta.yaml @@ -13,7 +13,7 @@ tags: mysql-cluster bindable: true instances_retrievable: true bindings_retrievable: true -plan_updateable: false +plan_updateable: true allow_parameters: - name: "networkPolicy.allowNamespaces" required: false @@ -21,4 +21,4 @@ allow_parameters: - name: "router.service.type" required: false description: "service type config for values.yaml" -archive: false +archive: false \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-10/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-10/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-10/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-10/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-10/values.yaml b/addons/mysql-cluster/8.0/plans/standard-10/values.yaml index f90075a8..198b5253 100644 --- a/addons/mysql-cluster/8.0/plans/standard-10/values.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-10/values.yaml @@ -16,11 +16,11 @@ primary: resources: limits: cpu: 1000m - memory: 1024Mi + memory: 4Gi requests: cpu: 1000m - memory: 1024Mi - + memory: 4Gi + ## @section Persistence parameters diff --git a/addons/mysql-cluster/8.0/plans/standard-100/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-100/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-100/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-100/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-20/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-20/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-20/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-20/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-200/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-200/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-200/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-200/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-400/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-400/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-400/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-400/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-50/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-50/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-50/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-50/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/mysql-cluster/8.0/plans/standard-800/bind.yaml b/addons/mysql-cluster/8.0/plans/standard-800/bind.yaml index 3ec3ed37..9b49f3f5 100644 --- a/addons/mysql-cluster/8.0/plans/standard-800/bind.yaml +++ b/addons/mysql-cluster/8.0/plans/standard-800/bind.yaml @@ -1,39 +1,33 @@ credential: {{- if (eq .Values.router.service.type "LoadBalancer") }} - - name: HOST + - name: EXTRANET_HOST valueFrom: serviceRef: name: {{ include "common.names.fullname" . }} jsonpath: '{ .status.loadBalancer.ingress[*].ip }' - {{- else if (eq .Values.router.service.type "ClusterIP") }} +{{- end }} - name: HOST valueFrom: serviceRef: - name: {{ include "common.names.fullname" . }} + name: {{ include "common.names.fullname" . }}-router jsonpath: '{ .spec.clusterIP }' - {{- end }} - - name: DADABASE - valueFrom: - secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.database }' - name: PASSWORD valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user - jsonpath: '{ .data.username }' + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user + jsonpath: '{ .data.password }' - name: USERNAME valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.username }' - name: READONLY_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portro }' - name: READWRITE_PORT valueFrom: secretKeyRef: - name: {{ template "common.names.fullname" . }}-svcbind-custom-user + name: {{ template "common.names.fullname" . }}-svcbind-administrator-user jsonpath: '{ .data.portrw }' \ No newline at end of file diff --git a/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml b/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml index 857ee44d..02f9bdfa 100644 --- a/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml +++ b/addons/postgresql-cluster/15/chart/postgresql-cluster/values.yaml @@ -57,6 +57,7 @@ preInitScript: | loop_wait: 10 retry_timeout: 10 maximum_lag_on_failover: 1048576 + failsafe_mode: true postgresql: use_pg_rewind: true use_slots: true @@ -74,6 +75,7 @@ preInitScript: | max_worker_processes: 8 max_wal_senders: 10 max_replication_slots: 10 + hot_standby_feedback: on max_prepared_transactions: 0 max_locks_per_transaction: 64 wal_log_hints: "on" @@ -120,7 +122,7 @@ postInitScript: | #!/bin/bash set -Eeu # Create monitor user - psql -w -c "CREATE USER tea_mon WITH ROLE pg_monitor;create extension pg_stat_statements;create extension pg_buffercache ;" + psql -w -c "CREATE USER tea_mon ;GRANT pg_monitor TO tea_mon ;create extension pg_stat_statements;create extension pg_buffercache ;" # Create admin user if [[( -n "$ADMIN_USER") && ( -n "$ADMIN_PASSWORD")]]; then diff --git a/addons/postgresql-cluster/15/plans/standard-4t/bind.yaml b/addons/postgresql-cluster/15/plans/standard-4t/bind.yaml new file mode 100644 index 00000000..0283dff3 --- /dev/null +++ b/addons/postgresql-cluster/15/plans/standard-4t/bind.yaml @@ -0,0 +1,37 @@ +credential: +{{- if (eq .Values.service.type "LoadBalancer") }} + - name: EXTRANET_MASTER_HOST + valueFrom: + serviceRef: + name: {{ include "common.names.fullname" . }}-master + jsonpath: '{ .status.loadBalancer.ingress[*].ip }' + - name: EXTRANET_REPL_HOST + valueFrom: + serviceRef: + name: {{ template "common.names.fullname" . }}-repl + jsonpath: '{ .status.loadBalancer.ingress[*].ip }' + {{- end }} + - name: MASTER_HOST + valueFrom: + serviceRef: + name: {{ include "common.names.fullname" . }}-master + jsonpath: '{ .spec.clusterIP }' + - name: REPL_HOST + valueFrom: + serviceRef: + name: {{ include "common.names.fullname" . }}-repl + jsonpath: '{ .spec.clusterIP }' + - name: PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.names.fullname" . }} + jsonpath: '{ .data.admin-password }' + - name: USERNAME + valueFrom: + secretKeyRef: + name: {{ template "common.names.fullname" . }} + jsonpath: '{ .data.admin-user }' + - name: PORT + value: 5432 + - name: DADABASE + value: postgres \ No newline at end of file diff --git a/addons/postgresql-cluster/15/plans/standard-4t/create-instance-schema.json b/addons/postgresql-cluster/15/plans/standard-4t/create-instance-schema.json new file mode 100644 index 00000000..66ebbaa0 --- /dev/null +++ b/addons/postgresql-cluster/15/plans/standard-4t/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/postgresql-cluster/15/plans/standard-4t/meta.yaml b/addons/postgresql-cluster/15/plans/standard-4t/meta.yaml new file mode 100644 index 00000000..208f253c --- /dev/null +++ b/addons/postgresql-cluster/15/plans/standard-4t/meta.yaml @@ -0,0 +1,6 @@ +name: "standard-4t" +id: 138f8059-a3f6-4efe-a210-09d9ff00f9a9 +description: "PostgreSQL Cluster standard-4t plan: Disk 4Ti ,vCPUs 32 , RAM 64G , DB MAX Connection 2000" +displayName: "standard-4t" +bindable: true +maximum_polling_duration: 1800 diff --git a/addons/postgresql-cluster/15/plans/standard-4t/values.yaml b/addons/postgresql-cluster/15/plans/standard-4t/values.yaml new file mode 100644 index 00000000..d4046150 --- /dev/null +++ b/addons/postgresql-cluster/15/plans/standard-4t/values.yaml @@ -0,0 +1,75 @@ +## @param fullnameOverride String to fully override common.names.fullname template +## +fullnameOverride: hb-postgresql-cluster-standard-800 + +postgresql: + config: |- + # Connectivity + max_connections = 2000 + superuser_reserved_connections = 3 + + # Memory Settings + shared_buffers = '16384 MB' + work_mem = '256 MB' + maintenance_work_mem = '2048 MB' + huge_pages = try # NB! requires also activation of huge pages via kernel params, see here for more: https://www.postgresql.org/docs/current/static/kernel-resources.html#LINUX-HUGE-PAGES + effective_cache_size = '45 GB' + effective_io_concurrency = 100 # concurrent IO only really activated if OS supports posix_fadvise function + random_page_cost = 1.25 # speed of random disk access relative to sequential access (1.0) + + # Monitoring + track_io_timing=on # measure exact block IO times + track_functions=pl # track execution times of pl-language procedures if any + + # Replication + max_wal_senders = 10 + synchronous_commit = on + + # Checkpointing: + checkpoint_timeout = '30 min' + checkpoint_completion_target = 0.9 + max_wal_size = '32 GB' + min_wal_size = '16 GB' + + # WAL writing + wal_compression = on + wal_buffers = -1 # auto-tuned by Postgres till maximum of segment size (16MB by default) + wal_writer_delay = 200ms + wal_writer_flush_after = 1MB + wal_keep_size = '60 GB' + + # Background writer + bgwriter_delay = 200ms + bgwriter_lru_maxpages = 100 + bgwriter_lru_multiplier = 2.0 + bgwriter_flush_after = 0 + + # Parallel queries: + max_worker_processes = 32 + max_parallel_workers_per_gather = 16 + max_parallel_maintenance_workers = 16 + max_parallel_workers = 32 + parallel_leader_participation = on + + # Advanced features + enable_partitionwise_join = on + enable_partitionwise_aggregate = on + jit = on + max_slot_wal_keep_size = '1000 MB' + track_wal_io_timing = on + maintenance_io_concurrency = 100 + +resources: + # If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + limits: + cpu: 32000m + memory: 64Gi + hugepages-2Mi: 80Mi + requests: + cpu: 32000m + memory: 64Gi + +persistentVolume: + enabled: true + size: 4Ti