diff --git a/charts/clusterpirate/Chart.lock b/charts/clusterpirate/Chart.lock index ce66b4ae..4ad85123 100644 --- a/charts/clusterpirate/Chart.lock +++ b/charts/clusterpirate/Chart.lock @@ -4,6 +4,6 @@ dependencies: version: 2.1.0 - name: valkey repository: oci://registry-1.docker.io/cloudpirates - version: 0.10.2 -digest: sha256:a03991d31e746a1ca832aa9a16e2e237cb66635abc4ab6a07a94faea076c6a7b -generated: "2025-11-25T13:11:09.044378374Z" + version: 0.10.3 +digest: sha256:7378e07c9a5677166209c63fce1403282231618f7b2ffdcc133144bb990f3139 +generated: "2025-12-01T18:55:48.672091578Z" diff --git a/charts/clusterpirate/Chart.yaml b/charts/clusterpirate/Chart.yaml index f4de6f6d..e9ba8af2 100644 --- a/charts/clusterpirate/Chart.yaml +++ b/charts/clusterpirate/Chart.yaml @@ -22,7 +22,7 @@ dependencies: version: "2.x.x" repository: oci://registry-1.docker.io/cloudpirates - name: valkey - version: "0.10.2" + version: "0.10.3" repository: oci://registry-1.docker.io/cloudpirates condition: valkey.enabled icon: https://a.storyblok.com/f/143071/512x512/88dc07809a/cluster-pirate-logo.svg diff --git a/charts/etcd/Chart.yaml b/charts/etcd/Chart.yaml index 13b3f44a..8dbd2205 100644 --- a/charts/etcd/Chart.yaml +++ b/charts/etcd/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: etcd description: etcd is a distributed reliable key-value store for the most critical data of a distributed system type: application -version: 0.3.4 +version: 0.4.0 appVersion: "3.6.5" keywords: - etcd @@ -41,7 +41,4 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: " [etcd] Use http for probes (#622)" - links: - - name: "Commit c9d2054" - url: "https://github.com/CloudPirates-io/helm-charts/commit/c9d2054" + description: "Chart updated" diff --git a/charts/etcd/README.md b/charts/etcd/README.md index aa7f7338..33943bb4 100644 --- a/charts/etcd/README.md +++ b/charts/etcd/README.md @@ -84,19 +84,19 @@ cosign verify --key cosign.pub registry-1.docker.io/cloudpirates/etcd: ## Configuration ### Global Parameters -| Parameter | Description | Default | -| ------------------------- | ------------------------------------- | ----------------------- | -| `global.imageRegistry` | Global Docker image registry override | `""` | -| `global.imagePullSecrets` | Global Docker registry secret names | `[]` | +| Parameter | Description | Default | +| ------------------------- | ------------------------------------- | ------- | +| `global.imageRegistry` | Global Docker image registry override | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names | `[]` | ### Image Configuration -| Parameter | Description | Default | -| ------------------------- | ------------------------------------- | ----------------------- | -| `image.registry` | etcd image registry | `gcr.io` | -| `image.repository` | etcd image repository | `etcd-development/etcd` | -| `image.tag` | etcd image tag | `v3.6.5@sha256:3397341272b9e0a6f44d7e3fc7c321c6efe6cbe82ce866b9b01d0c704bfc5bf3` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | +| Parameter | Description | Default | +| ------------------ | --------------------- | -------------------------------------------------------------------------------- | +| `image.registry` | etcd image registry | `gcr.io` | +| `image.repository` | etcd image repository | `etcd-development/etcd` | +| `image.tag` | etcd image tag | `v3.6.5@sha256:3397341272b9e0a6f44d7e3fc7c321c6efe6cbe82ce866b9b01d0c704bfc5bf3` | +| `image.pullPolicy` | Image pull policy | `IfNotPresent` | ### Common Parameters @@ -150,14 +150,15 @@ cosign verify --key cosign.pub registry-1.docker.io/cloudpirates/etcd: ### Persistence -| Parameter | Description | Default | -| -------------------------- | ------------------------------ | ----------------- | -| `persistence.enabled` | Enable persistence using PVC | `true` | -| `persistence.storageClass` | Storage class of backing PVC | `""` | -| `persistence.annotations` | Annotations for the PVC | `{}` | -| `persistence.size` | Size of data volume | `8Gi` | -| `persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` | -| `persistence.mountPath` | Mount path for data volume | `/var/run/etcd` | +| Parameter | Description | Default | +| -------------------------- | ----------------------------------- | ----------------- | +| `persistence.enabled` | Enable persistence using PVC | `true` | +| `persistence.storageClass` | Storage class of backing PVC | `""` | +| `persistence.annotations` | Annotations for the PVC | `{}` | +| `persistence.labels` | Labels for persistent volume claims | `{}` | +| `persistence.size` | Size of data volume | `8Gi` | +| `persistence.accessModes` | Persistent Volume Access Modes | `[ReadWriteOnce]` | +| `persistence.mountPath` | Mount path for data volume | `/var/run/etcd` | ### Resources diff --git a/charts/etcd/templates/statefulset.yaml b/charts/etcd/templates/statefulset.yaml index 79851bda..490c307d 100644 --- a/charts/etcd/templates/statefulset.yaml +++ b/charts/etcd/templates/statefulset.yaml @@ -209,8 +209,10 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with $labels := merge (include "etcd.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} labels: - {{- include "etcd.labels" . | nindent 10 }} + {{- toYaml $labels | nindent 10 }} + {{- end }} {{- with .Values.persistence.annotations }} annotations: {{- toYaml . | nindent 10 }} diff --git a/charts/etcd/values.yaml b/charts/etcd/values.yaml index 6d888ae7..396e6714 100644 --- a/charts/etcd/values.yaml +++ b/charts/etcd/values.yaml @@ -98,6 +98,8 @@ persistence: storageClass: "" ## @param persistence.annotations Persistent Volume Claim annotations annotations: {} + ## @param persistence.labels Labels for persistent volume claims + labels: {} ## @param persistence.size Persistent Volume size size: 8Gi ## @param persistence.accessModes Persistent Volume access modes diff --git a/charts/ghost/Chart.yaml b/charts/ghost/Chart.yaml index a5212fb9..9f8e2131 100644 --- a/charts/ghost/Chart.yaml +++ b/charts/ghost/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: ghost description: A simple, powerful publishing platform that allows you to share your stories with the world. type: application -version: 0.6.0 -appVersion: "6.9.1" +version: 0.6.2 +appVersion: "6.10.0" keywords: - ghost - blogging @@ -45,7 +45,7 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "Update charts/ghost/values.yaml ghost to v6.8.1 (patch) (#621)" + description: "Update charts/ghost/values.yaml ghost to v6.9.3 (patch) (#684)" links: - - name: "Commit a20f994" - url: "https://github.com/CloudPirates-io/helm-charts/commit/a20f994" + - name: "Commit 41682af" + url: "https://github.com/CloudPirates-io/helm-charts/commit/41682af" diff --git a/charts/ghost/values.yaml b/charts/ghost/values.yaml index 13bcfe8a..6def1831 100644 --- a/charts/ghost/values.yaml +++ b/charts/ghost/values.yaml @@ -24,7 +24,7 @@ image: ## @param image.repository Nginx image repository repository: ghost ## @param image.tag Nginx image tag - tag: "6.9.1@sha256:8a30cacb126262887f4db101e438271ade0b51437917b8165d26b0fede72ccf2" + tag: "6.10.0@sha256:7e3a906905a7893c20d60d5e1dd04f57fb8666972dcb8e2f817725dfc1814208" ## @param image.pullPolicy Nginx image pull policy pullPolicy: Always diff --git a/charts/mariadb/Chart.yaml b/charts/mariadb/Chart.yaml index ce2fe6bd..d5ac7962 100644 --- a/charts/mariadb/Chart.yaml +++ b/charts/mariadb/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: mariadb description: MariaDB is a high-performance, open-source relational database server that is a drop-in replacement for MySQL. Supports both single-node and Galera Cluster deployments. type: application -version: 0.8.0 +version: 0.9.0 appVersion: "12.1.2" keywords: - mariadb @@ -52,7 +52,4 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "add support for serviceaccounts (#609)" - links: - - name: "Commit 1e6d04f" - url: "https://github.com/CloudPirates-io/helm-charts/commit/1e6d04f" + description: "Chart updated" diff --git a/charts/mariadb/README.md b/charts/mariadb/README.md index c32dc80a..5536dac9 100644 --- a/charts/mariadb/README.md +++ b/charts/mariadb/README.md @@ -188,6 +188,7 @@ For a detailed explanation of Galera parameters and usage, see [README_GALERA.md | `persistence.accessModes` | PVC Access modes | `["ReadWriteOnce"]` | | `persistence.size` | PVC Storage Request for MariaDB data volume | `8Gi` | | `persistence.annotations` | Additional custom annotations for the PVC | `{}` | +| `persistence.labels` | Labels for persistent volume claims | `{}` | | `persistence.selector` | Additional labels for the PVC | `{}` | ### Security Context Parameters diff --git a/charts/mariadb/templates/_helpers.tpl b/charts/mariadb/templates/_helpers.tpl index 149424ba..b4a22573 100644 --- a/charts/mariadb/templates/_helpers.tpl +++ b/charts/mariadb/templates/_helpers.tpl @@ -66,6 +66,18 @@ Validate values of MariaDB - Authentication {{/* No validation needed - empty rootPassword will trigger auto-generation */}} {{- end }} +{{/* +Return the MariaDB initdb scripts ConfigMap Name +*/}} +{{- define "mariadb.initdbScriptsConfigMap" -}} +{{- if .Values.initdbScriptsConfigMap }} +{{- printf "%s" (tpl .Values.initdbScriptsConfigMap $) -}} +{{- else }} +{{- printf "" }} +{{- end }} +{{- end }} + + {{/* Return the MariaDB ConfigMap Name */}} diff --git a/charts/mariadb/templates/statefulset.yaml b/charts/mariadb/templates/statefulset.yaml index 71f713f7..f47cdab5 100644 --- a/charts/mariadb/templates/statefulset.yaml +++ b/charts/mariadb/templates/statefulset.yaml @@ -264,7 +264,7 @@ spec: {{- if .Values.initdbScriptsConfigMap }} - name: custom-init-scripts configMap: - name: {{ .Values.initdbScriptsConfigMap }} + name: {{ include "mariadb.initdbScriptsConfigMap" . }} {{- end }} {{- range $secret := .Values.extraSecrets }} - name: {{ $secret.name }} @@ -301,9 +301,9 @@ spec: kind: PersistentVolumeClaim metadata: name: data - {{- with .Values.commonLabels }} - labels: -{{ toYaml . | indent 10}} + {{- with $labels := merge (include "mariadb.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} + labels: + {{- toYaml $labels | nindent 10 }} {{- end }} {{- with .Values.persistence.annotations }} annotations: diff --git a/charts/mariadb/tests/common-parameters_test.yaml b/charts/mariadb/tests/common-parameters_test.yaml index 2ba1ff1e..ee7892c6 100644 --- a/charts/mariadb/tests/common-parameters_test.yaml +++ b/charts/mariadb/tests/common-parameters_test.yaml @@ -171,4 +171,19 @@ tests: value: Never - equal: path: spec.template.spec.imagePullSecrets[0].name - value: global-secret \ No newline at end of file + value: global-secret + - it: initdbScriptsConfigMap should evaluate template strings + set: + initdbScriptsConfigMap: "{{ .Release.Name }}-init-db-script" + template: statefulset.yaml + asserts: + - equal: + path: spec.template.spec.volumes[?(@.name=="custom-init-scripts")].configMap.name + value: RELEASE-NAME-init-db-script + - it: initdbScriptsConfigMap is optional + template: statefulset.yaml + asserts: + - notExists: + path: spec.template.spec.volumes[?(@.name=="custom-init-scripts")] + - notExists: + path: spec.template.spec.containers[?(@.name=="mariadb")].volumeMounts[?(@.name=="custom-init-scripts")] diff --git a/charts/mariadb/values.yaml b/charts/mariadb/values.yaml index cce12744..94fa1e58 100644 --- a/charts/mariadb/values.yaml +++ b/charts/mariadb/values.yaml @@ -142,6 +142,8 @@ persistence: size: 8Gi ## @param persistence.annotations Additional custom annotations for the PVC annotations: {} + ## @param persistence.labels Labels for persistent volume claims + labels: {} ## @param persistence.selector Additional labels for the PVC selector: {} diff --git a/charts/mongodb/Chart.yaml b/charts/mongodb/Chart.yaml index fcd1c0d5..d82b0950 100644 --- a/charts/mongodb/Chart.yaml +++ b/charts/mongodb/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: mongodb description: MongoDB a flexible NoSQL database for scalable, real-time data management type: application -version: 0.6.6 +version: 0.7.0 appVersion: "8.2.2" keywords: - mongodb @@ -39,7 +39,4 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "[percona/mongodb_exporter] Update image to v0.47.2 (#656)" - links: - - name: "Commit e3cebb5" - url: "https://github.com/CloudPirates-io/helm-charts/commit/e3cebb5" + description: "Chart updated" diff --git a/charts/mongodb/README.md b/charts/mongodb/README.md index f3e1296c..1a47c9d1 100644 --- a/charts/mongodb/README.md +++ b/charts/mongodb/README.md @@ -148,6 +148,7 @@ The following table lists the configurable parameters of the MongoDB chart and t | `persistence.size` | Size of persistent volume | `8Gi` | | `persistence.mountPath` | Mount path for MongoDB data | `/data/db` | | `persistence.annotations` | Annotations for persistent volume claims | `{}` | +| `persistence.labels` | Labels for persistent volume claims | `{}` | | `persistence.existingClaim` | The name of an existing PVC to use for persistence | `""` | | `persistence.subPath` | The subdirectory of the volume to mount to | `""` | diff --git a/charts/mongodb/templates/statefulset.yaml b/charts/mongodb/templates/statefulset.yaml index bc527d92..8a844656 100644 --- a/charts/mongodb/templates/statefulset.yaml +++ b/charts/mongodb/templates/statefulset.yaml @@ -264,8 +264,10 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with $labels := merge (include "mongodb.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} labels: - {{- include "mongodb.labels" . | nindent 10 }} + {{- toYaml $labels | nindent 10 }} + {{- end }} {{- with .Values.persistence.annotations }} annotations: {{- toYaml . | nindent 10 }} diff --git a/charts/mongodb/values.yaml b/charts/mongodb/values.yaml index 706e33ab..c135a7c0 100644 --- a/charts/mongodb/values.yaml +++ b/charts/mongodb/values.yaml @@ -103,6 +103,8 @@ persistence: mountPath: /data/db ## @param persistence.annotations Annotations for persistent volume claims annotations: {} + ## @param persistence.labels Labels for persistent volume claim + labels: {} ## @param persistence.existingClaim The name of an existing PVC to use for persistence existingClaim: "" ## @param persistence.subPath The subdirectory of the volume to mount to diff --git a/charts/postgres/Chart.yaml b/charts/postgres/Chart.yaml index 81282288..8a2defc0 100644 --- a/charts/postgres/Chart.yaml +++ b/charts/postgres/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: postgres description: The World's Most Advanced Open Source Relational Database type: application -version: 0.12.4 +version: 0.13.0 appVersion: "18.1.0" keywords: - postgres @@ -43,7 +43,4 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "fix nesting of auth.secretKeys.adminPasswordKey (#674)" - links: - - name: "Commit ed4f3e3" - url: "https://github.com/CloudPirates-io/helm-charts/commit/ed4f3e3" + description: "Chart updated" diff --git a/charts/postgres/README.md b/charts/postgres/README.md index fa76e482..ed30965f 100644 --- a/charts/postgres/README.md +++ b/charts/postgres/README.md @@ -198,6 +198,7 @@ The following table lists the configurable parameters of the PostgreSQL chart an | `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` | | `persistence.storageClass` | Persistent Volume storage class | `""` | | `persistence.annotations` | Persistent Volume Claim annotations | `{}` | +| `persistence.labels` | Labels for persistent volume claims | `{}` | | `persistence.size` | Persistent Volume size | `8Gi` | | `persistence.accessModes` | Persistent Volume access modes | `["ReadWriteOnce"]` | | `persistence.existingClaim` | The name of an existing PVC to use for persistence | `""` | diff --git a/charts/postgres/templates/statefulset.yaml b/charts/postgres/templates/statefulset.yaml index 18679fd4..3ae21cf4 100644 --- a/charts/postgres/templates/statefulset.yaml +++ b/charts/postgres/templates/statefulset.yaml @@ -294,8 +294,10 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with $labels := merge (include "postgres.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} labels: - {{- include "postgres.labels" . | nindent 8 }} + {{- toYaml $labels | nindent 8 }} + {{- end }} {{- with .Values.persistence.annotations }} annotations: {{- toYaml . | nindent 8 }} diff --git a/charts/postgres/values.yaml b/charts/postgres/values.yaml index 1932b7e8..edf2f6bf 100644 --- a/charts/postgres/values.yaml +++ b/charts/postgres/values.yaml @@ -203,6 +203,8 @@ persistence: ## @param persistence.subPath The subdirectory of the volume to mount to ## Useful in dev environments and one PV for multiple services subPath: "" + ## @param persistence.labels Labels for persistent volume claims + labels: {} ## @section Persistent Volume Claim Retention Policy persistentVolumeClaimRetentionPolicy: diff --git a/charts/rabbitmq/Chart.yaml b/charts/rabbitmq/Chart.yaml index 9ef34d40..508a43f6 100644 --- a/charts/rabbitmq/Chart.yaml +++ b/charts/rabbitmq/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: rabbitmq description: A messaging broker that implements the Advanced Message Queuing Protocol (AMQP) type: application -version: 0.7.10 +version: 0.8.0 appVersion: "4.2.0" keywords: - rabbitmq diff --git a/charts/rabbitmq/templates/statefulset.yaml b/charts/rabbitmq/templates/statefulset.yaml index df04a547..cd96408c 100644 --- a/charts/rabbitmq/templates/statefulset.yaml +++ b/charts/rabbitmq/templates/statefulset.yaml @@ -284,7 +284,7 @@ spec: kind: PersistentVolumeClaim metadata: name: data - {{- with $labels := merge (include "rabbitmq.labels" . | fromYaml) .Values.persistence.labels }} + {{- with $labels := merge (include "rabbitmq.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} labels: {{- toYaml $labels | nindent 10 }} {{- end }} diff --git a/charts/redis/Chart.yaml b/charts/redis/Chart.yaml index 73a7fe0e..29daadd8 100644 --- a/charts/redis/Chart.yaml +++ b/charts/redis/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: redis description: An open source, in-memory data structure store used as a database, cache, and message broker. type: application -version: 0.16.5 +version: 0.16.6 appVersion: "8.4.0" keywords: - redis @@ -42,7 +42,7 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "metrics service annotation does not work (#687)" + description: "Fix Redis issue with immutableFields cause by the label addition on volumeClaimTemplate (#695)" links: - - name: "Commit 6c053af" - url: "https://github.com/CloudPirates-io/helm-charts/commit/6c053af" + - name: "Commit f5ce66f" + url: "https://github.com/CloudPirates-io/helm-charts/commit/f5ce66f" diff --git a/charts/redis/templates/statefulset.yaml b/charts/redis/templates/statefulset.yaml index d265979c..3b70fadb 100644 --- a/charts/redis/templates/statefulset.yaml +++ b/charts/redis/templates/statefulset.yaml @@ -78,7 +78,7 @@ spec: # Check if any sentinel is already running and knows the master for i in $(seq 0 {{ sub .Values.replicaCount 1 }}); do - SENTINEL_HOST="{{ include "redis.fullname" . }}-${i}.{{ include "redis.fullname" . }}-headless" + SENTINEL_HOST="{{ include "redis.fullname" . }}-${i}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" MASTER_INFO=$(redis-cli -h "${SENTINEL_HOST}" -p {{ .Values.sentinel.port }} {{- if .Values.auth.sentinel }} -a "${REDIS_PASSWORD}"{{- end }} sentinel get-master-addr-by-name {{ .Values.sentinel.masterName }} 2>/dev/null | head -1 || echo "") if [ -n "$MASTER_INFO" ] && [ "$MASTER_INFO" != "Could not connect" ]; then CURRENT_MASTER="$MASTER_INFO" @@ -92,7 +92,7 @@ spec: if [ "$SENTINEL_FOUND" = true ] && [ -n "$CURRENT_MASTER" ]; then # Sentinel knows the master - configure accordingly MY_HOSTNAME=$(hostname) - MY_HOSTNAME_FQDN="${MY_HOSTNAME}.{{ include "redis.fullname" . }}-headless" + MY_HOSTNAME_FQDN="${MY_HOSTNAME}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" MY_IP=$(hostname -i) # Check if I am the master by hostname or IP @@ -110,7 +110,7 @@ spec: if [ "$POD_ORDINAL" != "0" ]; then echo "Bootstrap mode: configuring as replica of pod-0" # Use hostname-based replication for better resilience - MASTER_HOSTNAME="{{ include "redis.fullname" . }}-0.{{ include "redis.fullname" . }}-headless" + MASTER_HOSTNAME="{{ include "redis.fullname" . }}-0.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" echo "replicaof $MASTER_HOSTNAME {{ if .Values.tls.enabled }}{{ .Values.tls.port }}{{ else }}{{ .Values.service.port }}{{ end }}" >> /tmp/redis.conf echo "Bootstrap replica using pod-0 hostname: $MASTER_HOSTNAME" {{- if .Values.auth.enabled }} @@ -147,10 +147,10 @@ spec: echo "slave-announce-ip ${MY_IP}" >> /tmp/redis.conf echo "slave-announce-port {{ if .Values.tls.enabled }}{{ .Values.tls.port }}{{ else }}{{ .Values.service.port }}{{ end }}" >> /tmp/redis.conf {{- else }} - echo "Using hostname: ${HOSTNAME}.{{ include "redis.fullname" . }}-headless" - echo "replica-announce-ip ${HOSTNAME}.{{ include "redis.fullname" . }}-headless" >> /tmp/redis.conf + echo "Using hostname: ${HOSTNAME}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" + echo "replica-announce-ip ${HOSTNAME}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" >> /tmp/redis.conf echo "replica-announce-port {{ if .Values.tls.enabled }}{{ .Values.tls.port }}{{ else }}{{ .Values.service.port }}{{ end }}" >> /tmp/redis.conf - echo "slave-announce-ip ${HOSTNAME}.{{ include "redis.fullname" . }}-headless" >> /tmp/redis.conf + echo "slave-announce-ip ${HOSTNAME}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" >> /tmp/redis.conf echo "slave-announce-port {{ if .Values.tls.enabled }}{{ .Values.tls.port }}{{ else }}{{ .Values.service.port }}{{ end }}" >> /tmp/redis.conf {{- end }} @@ -161,7 +161,7 @@ spec: # Replication without Sentinel: pod-0 is always master, others are replicas if [ "$POD_ORDINAL" != "0" ]; then echo "Configuring as replica of pod-0 (master)" - MASTER_HOSTNAME="{{ include "redis.fullname" . }}-0.{{ include "redis.fullname" . }}-headless" + MASTER_HOSTNAME="{{ include "redis.fullname" . }}-0.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" echo "replicaof $MASTER_HOSTNAME {{ if .Values.tls.enabled }}{{ .Values.tls.port }}{{ else }}{{ .Values.service.port }}{{ end }}" >> /tmp/redis.conf {{- if .Values.auth.enabled }} echo "masterauth ${REDIS_PASSWORD}" >> /tmp/redis.conf @@ -394,7 +394,7 @@ spec: echo "Checking existing Sentinels for current master..." for i in $(seq 0 {{ sub .Values.replicaCount 1 }}); do if [ "$i" != "$POD_ORDINAL" ]; then - SENTINEL_HOST="{{ include "redis.fullname" . }}-${i}.{{ include "redis.fullname" . }}-headless" + SENTINEL_HOST="{{ include "redis.fullname" . }}-${i}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" EXISTING_MASTER=$(redis-cli -h "${SENTINEL_HOST}" -p {{ .Values.sentinel.port }} {{- if .Values.auth.sentinel }} -a "${REDIS_PASSWORD}"{{- end }} sentinel get-master-addr-by-name {{ .Values.sentinel.masterName }} 2>/dev/null | head -1 || echo "") if [ -n "$EXISTING_MASTER" ] && [ "$EXISTING_MASTER" != "Could not connect" ]; then MASTER_HOST="$EXISTING_MASTER" @@ -469,7 +469,7 @@ spec: sentinel_link_buffer_size 32768 # Allow sentinels to discover each other {{ if .Values.sentinel.config.announceHostnames }} - sentinel announce-ip ${HOSTNAME}.{{ include "redis.fullname" . }}-headless + sentinel announce-ip ${HOSTNAME}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }} {{- else }} sentinel announce-ip ${SENTINEL_IP} {{- end }} @@ -481,7 +481,7 @@ spec: # Add known sentinels to help with discovery (using hostnames for resilience) for i in $(seq 0 {{ sub .Values.replicaCount 1 }}); do if [ "$i" != "$POD_ORDINAL" ]; then - SENTINEL_HOST="{{ include "redis.fullname" . }}-${i}.{{ include "redis.fullname" . }}-headless" + SENTINEL_HOST="{{ include "redis.fullname" . }}-${i}.{{ include "redis.fullname" . }}-headless.{{ include "cloudpirates.namespace" . }}.svc.{{ .Values.clusterDomain }}" # Test if the host is resolvable before adding if getent hosts "$SENTINEL_HOST" >/dev/null 2>&1; then SENTINEL_IP=$(getent hosts "$SENTINEL_HOST" | awk '{print $1}' | head -1) diff --git a/charts/rustfs/CHANGELOG.md b/charts/rustfs/CHANGELOG.md index db39f4bb..54ad2318 100644 --- a/charts/rustfs/CHANGELOG.md +++ b/charts/rustfs/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog +## 0.2.0 (2025-12-06) + +* chore: update CHANGELOG.md for merged changes ([f3e1ad1](https://github.com/CloudPirates-io/helm-charts/commit/f3e1ad1)) +* chore: update CHANGELOG.md for merged changes ([96c472e](https://github.com/CloudPirates-io/helm-charts/commit/96c472e)) +* chore: update CHANGELOG.md for merged changes ([9923048](https://github.com/CloudPirates-io/helm-charts/commit/9923048)) + ## 0.1.1 (2025-11-13) * chore: update CHANGELOG.md for merged changes ([0504049](https://github.com/CloudPirates-io/helm-charts/commit/0504049)) diff --git a/charts/rustfs/Chart.lock b/charts/rustfs/Chart.lock index cdaf9a9d..e1644102 100644 --- a/charts/rustfs/Chart.lock +++ b/charts/rustfs/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: common repository: oci://registry-1.docker.io/cloudpirates - version: 2.0.0 -digest: sha256:ae9378e0dcfd09a35b7f994007db99c2d6fe02ef7634f424d5233237c209a1c7 -generated: "2025-10-21T22:06:19.969966+02:00" + version: 2.1.0 +digest: sha256:ae6c0d8f5456d3774920c181b2548654453dabf2a20ef8fc3bf0b488959ae6e6 +generated: "2025-12-05T10:12:06.990555+01:00" diff --git a/charts/rustfs/Chart.yaml b/charts/rustfs/Chart.yaml index f93aa919..8f8c2259 100644 --- a/charts/rustfs/Chart.yaml +++ b/charts/rustfs/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: rustfs description: (ALPHA) High-performance distributed object storage with S3-compatible API type: application -version: 0.1.1 +version: 0.2.0 appVersion: "1.0.0" keywords: - rustfs diff --git a/charts/rustfs/README.md b/charts/rustfs/README.md index aa8f0427..d5ceb480 100644 --- a/charts/rustfs/README.md +++ b/charts/rustfs/README.md @@ -92,211 +92,213 @@ The following table lists the configurable parameters of the RustFS chart and th ### Common parameters -| Parameter | Description | Default | -| -------------------- | --------------------------------------- | ------- | -| `nameOverride` | String to partially override rustfs.fullname | `""` | -| `fullnameOverride` | String to fully override rustfs.fullname | `""` | -| `commonLabels` | Labels to add to all deployed objects | `{}` | -| `commonAnnotations` | Annotations to add to all deployed objects | `{}` | +| Parameter | Description | Default | +| ------------------- | -------------------------------------------- | ------- | +| `nameOverride` | String to partially override rustfs.fullname | `""` | +| `fullnameOverride` | String to fully override rustfs.fullname | `""` | +| `commonLabels` | Labels to add to all deployed objects | `{}` | +| `commonAnnotations` | Annotations to add to all deployed objects | `{}` | ### RustFS image configuration -| Parameter | Description | Default | -| ----------------------- | --------------------------------------------- | ----------------- | -| `image.registry` | RustFS image registry | `docker.io` | -| `image.repository` | RustFS image repository | `rustfs/rustfs` | -| `image.tag` | RustFS image tag (immutable tags are recommended) | `"latest"` | -| `image.imagePullPolicy` | RustFS image pull policy | `Always` | +| Parameter | Description | Default | +| ----------------------- | ------------------------------------------------- | --------------- | +| `image.registry` | RustFS image registry | `docker.io` | +| `image.repository` | RustFS image repository | `rustfs/rustfs` | +| `image.tag` | RustFS image tag (immutable tags are recommended) | `"latest"` | +| `image.imagePullPolicy` | RustFS image pull policy | `Always` | ### RustFS Authentication -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------------------------ | ----------------- | -| `auth.accessKey` | RustFS access key | `"rustfsadmin"` | -| `auth.secretKey` | RustFS secret key. If not set, a random password will be generated | `""` | -| `auth.existingSecret` | Name of existing secret containing RustFS credentials | `""` | -| `auth.existingSecretAccessKeyKey` | Key in existing secret containing access key | `"access-key"` | -| `auth.existingSecretSecretKeyKey` | Key in existing secret containing secret key | `"secret-key"` | +| Parameter | Description | Default | +| --------------------------------- | ------------------------------------------------------------------ | --------------- | +| `auth.accessKey` | RustFS access key | `"rustfsadmin"` | +| `auth.secretKey` | RustFS secret key. If not set, a random password will be generated | `""` | +| `auth.existingSecret` | Name of existing secret containing RustFS credentials | `""` | +| `auth.existingSecretAccessKeyKey` | Key in existing secret containing access key | `"access-key"` | +| `auth.existingSecretSecretKeyKey` | Key in existing secret containing secret key | `"secret-key"` | ### RustFS configuration -| Parameter | Description | Default | -| --------------------------------- | ------------------------------------- | ---------------------- | -| `config.volumes` | RustFS storage volumes configuration | `"/data/rustfs{0..3}"` | -| `config.address` | RustFS server address | `"0.0.0.0:9000"` | -| `config.consoleAddress` | RustFS console address | `"0.0.0.0:9001"` | -| `config.consoleEnabled` | Enable RustFS console | `true` | -| `config.externalAddress` | RustFS external address | `":9000"` | -| `config.corsAllowedOrigins` | CORS allowed origins for API | `"*"` | -| `config.consoleCorsAllowedOrigins` | CORS allowed origins for console | `"*"` | -| `config.logLevel` | RustFS log level (trace, debug, info, warn, error) | `"info"` | -| `config.tlsPath` | Path to TLS certificates | `"/opt/tls"` | -| `config.extraEnvVars` | Extra environment variables | `[]` | +| Parameter | Description | Default | +| ---------------------------------- | -------------------------------------------------- | ---------------------- | +| `config.volumes` | RustFS storage volumes configuration | `"/data/rustfs{0..3}"` | +| `config.address` | RustFS server address | `"0.0.0.0:9000"` | +| `config.consoleAddress` | RustFS console address | `"0.0.0.0:9001"` | +| `config.consoleEnabled` | Enable RustFS console | `true` | +| `config.externalAddress` | RustFS external address | `":9000"` | +| `config.corsAllowedOrigins` | CORS allowed origins for API | `"*"` | +| `config.consoleCorsAllowedOrigins` | CORS allowed origins for console | `"*"` | +| `config.logLevel` | RustFS log level (trace, debug, info, warn, error) | `"info"` | +| `config.tlsPath` | Path to TLS certificates | `"/opt/tls"` | +| `config.extraEnvVars` | Extra environment variables | `[]` | ### Deployment configuration -| Parameter | Description | Default | -| -------------- | --------------------- | ------- | -| `replicaCount` | Number of replicas | `4` | +| Parameter | Description | Default | +| -------------- | ------------------ | ------- | +| `replicaCount` | Number of replicas | `4` | ### Deployment type configuration -| Parameter | Description | Default | -| ----------------------------------- | ------------------------------------------------ | ---------------- | -| `deploymentType` | Type of deployment (deployment or statefulset) | `"deployment"` | -| `updateStrategy.type` | Update strategy for StatefulSet | `RollingUpdate` | -| `updateStrategy.rollingUpdate.partition` | Partition for RollingUpdate (StatefulSet only) | `0` | -| `podManagementPolicy` | Pod management policy for StatefulSet (Parallel or OrderedReady) | `"Parallel"` | +| Parameter | Description | Default | +| ---------------------------------------- | ---------------------------------------------------------------- | --------------- | +| `deploymentType` | Type of deployment (deployment or statefulset) | `"deployment"` | +| `updateStrategy.type` | Update strategy for StatefulSet | `RollingUpdate` | +| `updateStrategy.rollingUpdate.partition` | Partition for RollingUpdate (StatefulSet only) | `0` | +| `podManagementPolicy` | Pod management policy for StatefulSet (Parallel or OrderedReady) | `"Parallel"` | ### Pod annotations and labels -| Parameter | Description | Default | -| ---------------- | ---------------------- | ------- | -| `podAnnotations` | Pod annotations | `{}` | -| `podLabels` | Pod labels | `{}` | +| Parameter | Description | Default | +| ---------------- | --------------- | ------- | +| `podAnnotations` | Pod annotations | `{}` | +| `podLabels` | Pod labels | `{}` | ### Security Context -| Parameter | Description | Default | -| -------------------------------------------- | ------------------------------------------------ | ------- | -| `podSecurityContext.fsGroup` | Group ID for the volumes of the pod | `1001` | -| `containerSecurityContext.allowPrivilegeEscalation` | Enable container privilege escalation | `false` | -| `containerSecurityContext.runAsNonRoot` | Configure the container to run as a non-root user | `true` | -| `containerSecurityContext.runAsUser` | User ID for the RustFS container | `1001` | -| `containerSecurityContext.runAsGroup` | Group ID for the RustFS container | `1001` | -| `containerSecurityContext.readOnlyRootFilesystem` | Mount container root filesystem as read-only | `false` | -| `containerSecurityContext.capabilities.drop` | Linux capabilities to be dropped | `["ALL"]` | +| Parameter | Description | Default | +| --------------------------------------------------- | ------------------------------------------------- | --------- | +| `podSecurityContext.fsGroup` | Group ID for the volumes of the pod | `1001` | +| `containerSecurityContext.allowPrivilegeEscalation` | Enable container privilege escalation | `false` | +| `containerSecurityContext.runAsNonRoot` | Configure the container to run as a non-root user | `true` | +| `containerSecurityContext.runAsUser` | User ID for the RustFS container | `1001` | +| `containerSecurityContext.runAsGroup` | Group ID for the RustFS container | `1001` | +| `containerSecurityContext.readOnlyRootFilesystem` | Mount container root filesystem as read-only | `false` | +| `containerSecurityContext.capabilities.drop` | Linux capabilities to be dropped | `["ALL"]` | ### Service configuration -| Parameter | Description | Default | -| ---------------------- | ---------------------------- | ----------- | -| `service.type` | RustFS service type | `ClusterIP` | -| `service.port` | RustFS API service port | `9000` | -| `service.consolePort` | RustFS console service port | `9001` | -| `service.annotations` | Service annotations | `{}` | +| Parameter | Description | Default | +| --------------------- | --------------------------- | ----------- | +| `service.type` | RustFS service type | `ClusterIP` | +| `service.port` | RustFS API service port | `9000` | +| `service.consolePort` | RustFS console service port | `9001` | +| `service.annotations` | Service annotations | `{}` | ### Console Service configuration (for StatefulSet only) -| Parameter | Description | Default | -| ----------------------------------- | ------------------------------------------------ | ----------- | -| `consoleService.enabled` | Enable Console service that routes to the first pod only | `true` | -| `consoleService.type` | Console service type | `ClusterIP` | -| `consoleService.port` | Console service API port | `9000` | -| `consoleService.consolePort` | Console service console port | `9001` | -| `consoleService.sessionAffinityTimeout` | Session affinity timeout in seconds | `10800` | -| `consoleService.annotations` | Console service annotations | `{}` | +| Parameter | Description | Default | +| --------------------------------------- | -------------------------------------------------------- | ----------- | +| `consoleService.enabled` | Enable Console service that routes to the first pod only | `true` | +| `consoleService.type` | Console service type | `ClusterIP` | +| `consoleService.port` | Console service API port | `9000` | +| `consoleService.consolePort` | Console service console port | `9001` | +| `consoleService.sessionAffinityTimeout` | Session affinity timeout in seconds | `10800` | +| `consoleService.annotations` | Console service annotations | `{}` | ### Ingress configuration -| Parameter | Description | Default | -| ------------------------------ | --------------------------------------------- | ----------------- | -| `ingress.enabled` | Enable ingress record generation for RustFS API | `false` | -| `ingress.className` | IngressClass that will be used to implement the Ingress | `""` | -| `ingress.annotations` | Additional annotations for the Ingress resource | `{}` | -| `ingress.hosts[0].host` | Hostname for RustFS API ingress | `rustfs.local` | -| `ingress.hosts[0].paths[0].path` | Path for RustFS API ingress | `/` | -| `ingress.hosts[0].paths[0].pathType` | Path type for RustFS API ingress | `Prefix` | -| `ingress.tls` | TLS configuration for RustFS API ingress | `[]` | +| Parameter | Description | Default | +| ------------------------------------ | ------------------------------------------------------- | -------------- | +| `ingress.enabled` | Enable ingress record generation for RustFS API | `false` | +| `ingress.className` | IngressClass that will be used to implement the Ingress | `""` | +| `ingress.annotations` | Additional annotations for the Ingress resource | `{}` | +| `ingress.hosts[0].host` | Hostname for RustFS API ingress | `rustfs.local` | +| `ingress.hosts[0].paths[0].path` | Path for RustFS API ingress | `/` | +| `ingress.hosts[0].paths[0].pathType` | Path type for RustFS API ingress | `Prefix` | +| `ingress.tls` | TLS configuration for RustFS API ingress | `[]` | ### Console Ingress configuration (for StatefulSet only) -| Parameter | Description | Default | -| ----------------------------------- | --------------------------------------------------------------- | -------------------------- | -| `consoleIngress.enabled` | Enable Console ingress record generation for RustFS API (routes to first pod only) | `true` | -| `consoleIngress.className` | IngressClass that will be used to implement the Console Ingress | `""` | -| `consoleIngress.annotations` | Additional annotations for the Console Ingress resource | `{}` | -| `consoleIngress.hosts[0].host` | Hostname for Console RustFS API ingress | `rustfs-console.localhost` | -| `consoleIngress.hosts[0].paths[0].path` | Path for Console RustFS API ingress | `/` | -| `consoleIngress.hosts[0].paths[0].pathType` | Path type for Console RustFS API ingress | `Prefix` | -| `consoleIngress.tls` | TLS configuration for Console RustFS API ingress | `[]` | +| Parameter | Description | Default | +| ------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------- | +| `consoleIngress.enabled` | Enable Console ingress record generation for RustFS API (routes to first pod only) | `true` | +| `consoleIngress.className` | IngressClass that will be used to implement the Console Ingress | `""` | +| `consoleIngress.annotations` | Additional annotations for the Console Ingress resource | `{}` | +| `consoleIngress.hosts[0].host` | Hostname for Console RustFS API ingress | `rustfs-console.localhost` | +| `consoleIngress.hosts[0].paths[0].path` | Path for Console RustFS API ingress | `/` | +| `consoleIngress.hosts[0].paths[0].pathType` | Path type for Console RustFS API ingress | `Prefix` | +| `consoleIngress.tls` | TLS configuration for Console RustFS API ingress | `[]` | ### Resources -| Parameter | Description | Default | -| ----------- | ---------------------------------- | ------- | -| `resources` | Resource limits and requests | `{}` | +| Parameter | Description | Default | +| ----------- | ---------------------------- | ------- | +| `resources` | Resource limits and requests | `{}` | ### Data Persistence -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------- | ------------ | -| `dataPersistence.enabled` | Enable data persistence using Persistent Volume Claims | `true` | -| `dataPersistence.storageClass` | Persistent Volume storage class for data | `""` | -| `dataPersistence.annotations` | Persistent Volume Claim annotations for data | `{}` | -| `dataPersistence.size` | Persistent Volume size for data | `10Gi` | -| `dataPersistence.accessModes` | Persistent Volume access modes for data | `["ReadWriteOnce"]` | -| `dataPersistence.existingClaim` | The name of an existing PVC to use for data persistence | `""` | -| `dataPersistence.mountPath` | The path where to mount the data volume | `/data` | +| Parameter | Description | Default | +| ------------------------------- | ------------------------------------------------------- | ------------------- | +| `dataPersistence.enabled` | Enable data persistence using Persistent Volume Claims | `true` | +| `dataPersistence.storageClass` | Persistent Volume storage class for data | `""` | +| `dataPersistence.annotations` | Persistent Volume Claim annotations for data | `{}` | +| `dataPersistence.labels` | Labels for the data persistent volume claim | `{}` | +| `dataPersistence.size` | Persistent Volume size for data | `10Gi` | +| `dataPersistence.accessModes` | Persistent Volume access modes for data | `["ReadWriteOnce"]` | +| `dataPersistence.existingClaim` | The name of an existing PVC to use for data persistence | `""` | +| `dataPersistence.mountPath` | The path where to mount the data volume | `/data` | ### Logs Persistence -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------- | ------------ | -| `logsPersistence.enabled` | Enable logs persistence using Persistent Volume Claims | `true` | -| `logsPersistence.storageClass` | Persistent Volume storage class for logs | `""` | -| `logsPersistence.annotations` | Persistent Volume Claim annotations for logs | `{}` | -| `logsPersistence.size` | Persistent Volume size for logs | `1Gi` | -| `logsPersistence.accessModes` | Persistent Volume access modes for logs | `["ReadWriteOnce"]` | -| `logsPersistence.existingClaim` | The name of an existing PVC to use for logs persistence | `""` | -| `logsPersistence.mountPath` | The path where to mount the logs volume | `/app/logs` | +| Parameter | Description | Default | +| ------------------------------- | ------------------------------------------------------- | ------------------- | +| `logsPersistence.enabled` | Enable logs persistence using Persistent Volume Claims | `true` | +| `logsPersistence.storageClass` | Persistent Volume storage class for logs | `""` | +| `logsPersistence.annotations` | Persistent Volume Claim annotations for logs | `{}` | +| `logsPersistence.labels` | Labels for the logs persistent volume claim | `{}` | +| `logsPersistence.size` | Persistent Volume size for logs | `1Gi` | +| `logsPersistence.accessModes` | Persistent Volume access modes for logs | `["ReadWriteOnce"]` | +| `logsPersistence.existingClaim` | The name of an existing PVC to use for logs persistence | `""` | +| `logsPersistence.mountPath` | The path where to mount the logs volume | `/app/logs` | ### TLS Persistence -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------- | ------------ | -| `tlsPersistence.enabled` | Enable TLS persistence using Persistent Volume Claims | `false` | -| `tlsPersistence.storageClass` | Persistent Volume storage class for TLS | `""` | -| `tlsPersistence.annotations` | Persistent Volume Claim annotations for TLS | `{}` | -| `tlsPersistence.size` | Persistent Volume size for TLS | `100Mi` | -| `tlsPersistence.accessModes` | Persistent Volume access modes for TLS | `["ReadWriteOnce"]` | -| `tlsPersistence.existingClaim` | The name of an existing PVC to use for TLS persistence | `""` | -| `tlsPersistence.mountPath` | The path where to mount the TLS volume | `/opt/tls` | +| Parameter | Description | Default | +| ------------------------------ | ------------------------------------------------------ | ------------------- | +| `tlsPersistence.enabled` | Enable TLS persistence using Persistent Volume Claims | `false` | +| `tlsPersistence.storageClass` | Persistent Volume storage class for TLS | `""` | +| `tlsPersistence.annotations` | Persistent Volume Claim annotations for TLS | `{}` | +| `tlsPersistence.size` | Persistent Volume size for TLS | `100Mi` | +| `tlsPersistence.accessModes` | Persistent Volume access modes for TLS | `["ReadWriteOnce"]` | +| `tlsPersistence.existingClaim` | The name of an existing PVC to use for TLS persistence | `""` | +| `tlsPersistence.mountPath` | The path where to mount the TLS volume | `/opt/tls` | ### Service Account -| Parameter | Description | Default | -| ------------------------------------------ | ------------------------------------------------ | ------- | -| `serviceAccount.create` | Enable the creation of a ServiceAccount for RustFS | `true` | -| `serviceAccount.name` | Name of the created ServiceAccount | `""` | +| Parameter | Description | Default | +| --------------------------------------------- | --------------------------------------------------------- | ------- | +| `serviceAccount.create` | Enable the creation of a ServiceAccount for RustFS | `true` | +| `serviceAccount.name` | Name of the created ServiceAccount | `""` | | `serviceAccount.automountServiceAccountToken` | Enable/disable auto mounting of the service account token | `false` | -| `serviceAccount.annotations` | Custom annotations for RustFS serviceAccount | `{}` | +| `serviceAccount.annotations` | Custom annotations for RustFS serviceAccount | `{}` | ### Liveness and readiness probes -| Parameter | Description | Default | -| ------------------------------------ | ------------------------------------ | ------- | -| `livenessProbe.enabled` | Enable livenessProbe on RustFS containers | `true` | -| `livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `40` | -| `livenessProbe.periodSeconds` | Period seconds for livenessProbe | `30` | -| `livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `10` | -| `livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | -| `livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| Parameter | Description | Default | +| ------------------------------------ | ------------------------------------------ | ------- | +| `livenessProbe.enabled` | Enable livenessProbe on RustFS containers | `true` | +| `livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `40` | +| `livenessProbe.periodSeconds` | Period seconds for livenessProbe | `30` | +| `livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `10` | +| `livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | | `readinessProbe.enabled` | Enable readinessProbe on RustFS containers | `true` | -| `readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `5` | -| `readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | -| `readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `5` | -| `readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | -| `readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | -| `startupProbe.enabled` | Enable startupProbe on RustFS containers | `true` | -| `startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `40` | -| `startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | -| `startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `10` | -| `startupProbe.failureThreshold` | Failure threshold for startupProbe | `3` | -| `startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `5` | +| `readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `5` | +| `readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `startupProbe.enabled` | Enable startupProbe on RustFS containers | `true` | +| `startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `40` | +| `startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `10` | +| `startupProbe.failureThreshold` | Failure threshold for startupProbe | `3` | +| `startupProbe.successThreshold` | Success threshold for startupProbe | `1` | ### Node Selection -| Parameter | Description | Default | -| ------------- | ----------------- | ------- | +| Parameter | Description | Default | +| -------------- | ------------------------------ | ------- | | `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Tolerations for pod assignment | `[]` | -| `affinity` | Affinity for pod assignment | `{}` | +| `tolerations` | Tolerations for pod assignment | `[]` | +| `affinity` | Affinity for pod assignment | `{}` | ### Extra Objects -| Parameter | Description | Default | -| -------------- | ------------------------------------------ | ------- | +| Parameter | Description | Default | +| -------------- | ------------------------------------------------- | ------- | | `extraObjects` | Array of extra objects to deploy with the release | `[]` | ## Examples diff --git a/charts/rustfs/templates/statefulset.yaml b/charts/rustfs/templates/statefulset.yaml index 6c9cc0f9..afd61bb9 100644 --- a/charts/rustfs/templates/statefulset.yaml +++ b/charts/rustfs/templates/statefulset.yaml @@ -183,8 +183,10 @@ spec: - metadata: name: data labels: - {{- include "rustfs.labels" . | nindent 10 }} app.kubernetes.io/component: data + {{- with $labels := merge (include "rustfs.selectorLabels" . | fromYaml) .Values.dataPersistence.labels .Values.podLabels }} + {{- toYaml $labels | nindent 10 }} + {{- end }} {{- $annotations := merge .Values.dataPersistence.annotations .Values.commonAnnotations }} {{- with $annotations }} annotations: @@ -210,8 +212,10 @@ spec: - metadata: name: logs labels: - {{- include "rustfs.labels" . | nindent 10 }} app.kubernetes.io/component: logs + {{- with $labels := merge (include "rustfs.selectorLabels" . | fromYaml) .Values.logsPersistence.labels .Values.podLabels }} + {{- toYaml $labels | nindent 10 }} + {{- end }} {{- $annotations := merge .Values.logsPersistence.annotations .Values.commonAnnotations }} {{- with $annotations }} annotations: diff --git a/charts/rustfs/values.yaml b/charts/rustfs/values.yaml index bc57fb90..f34fee35 100644 --- a/charts/rustfs/values.yaml +++ b/charts/rustfs/values.yaml @@ -207,6 +207,8 @@ dataPersistence: storageClass: "" ## @param dataPersistence.annotations Persistent Volume Claim annotations for data annotations: {} + ## @param dataPersistence.labels Labels for the data persistent volume claim + labels: {} ## @param dataPersistence.size Persistent Volume size for data size: 10Gi ## @param dataPersistence.accessModes Persistent Volume access modes for data @@ -225,6 +227,8 @@ logsPersistence: storageClass: "" ## @param logsPersistence.annotations Persistent Volume Claim annotations for logs annotations: {} + ## @param logsPersistence.labels Labels for the logs persistent volume claim + labels: {} ## @param logsPersistence.size Persistent Volume size for logs size: 1Gi ## @param logsPersistence.accessModes Persistent Volume access modes for logs diff --git a/charts/timescaledb/Chart.yaml b/charts/timescaledb/Chart.yaml index e4da5c0d..b53ff8ec 100644 --- a/charts/timescaledb/Chart.yaml +++ b/charts/timescaledb/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: timescaledb description: TimescaleDB - The Open Source Time-Series Database for PostgreSQL type: application -version: 0.5.4 -appVersion: "2.23.1" +version: 0.6.1 +appVersion: "2.24.0" keywords: - timescaledb - timeseries @@ -42,7 +42,4 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "[timescale/timescaledb] Update charts/timescaledb/values.yaml timescale/timescaledb to v2.23.1 (patch) (#596)" - links: - - name: "Commit 7c36cd1" - url: "https://github.com/CloudPirates-io/helm-charts/commit/7c36cd1" + description: "Chart updated" diff --git a/charts/timescaledb/README.md b/charts/timescaledb/README.md index 7a1d25ed..dca6a55b 100644 --- a/charts/timescaledb/README.md +++ b/charts/timescaledb/README.md @@ -76,12 +76,12 @@ The following table lists the configurable parameters of the TimescaleDB chart a ### Image configuration -| Parameter | Description | Default | -| ------------------ | ------------------------------------------------------ | ----------------------- | -| `image.registry` | TimescaleDB image registry | `docker.io` | -| `image.repository` | TimescaleDB image repository | `timescale/timescaledb` | -| `image.tag` | TimescaleDB image tag (immutable tags are recommended) | `"2.23.1-pg17@sha256:a6581100f2f1cd1e03a29a94a49c488a174de65e57301c04de255804645e5a31"` | -| `image.pullPolicy` | TimescaleDB image pull policy | `Always` | +| Parameter | Description | Default | +| ------------------ | ------------------------------------------------------ | --------------------------------------------------------------------------------------- | +| `image.registry` | TimescaleDB image registry | `docker.io` | +| `image.repository` | TimescaleDB image repository | `timescale/timescaledb` | +| `image.tag` | TimescaleDB image tag (immutable tags are recommended) | `"2.23.1-pg17@sha256:a6581100f2f1cd1e03a29a94a49c488a174de65e57301c04de255804645e5a31"` | +| `image.pullPolicy` | TimescaleDB image pull policy | `Always` | ### Common configuration @@ -93,6 +93,12 @@ The following table lists the configurable parameters of the TimescaleDB chart a | `commonLabels` | Labels to add to all deployed objects | `{}` | | `commonAnnotations` | Annotations to add to all deployed objects | `{}` | +### Pod labels + +| Parameter | Description | Default | +| ---------------- | --------------- | ------- | +| `podLabels` | Pod labels | `{}` | + ### Security Context | Parameter | Description | Default | @@ -167,6 +173,7 @@ The following table lists the configurable parameters of the TimescaleDB chart a | `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` | | `persistence.storageClass` | Persistent Volume storage class | `""` | | `persistence.annotations` | Persistent Volume Claim annotations | `{}` | +| `persistence.labels` | Labels for persistent volume claims | `{}` | | `persistence.size` | Persistent Volume size | `8Gi` | | `persistence.accessModes` | Persistent Volume access modes | `["ReadWriteOnce"]` | | `persistence.existingClaim` | The name of an existing PVC to use for persistence | `""` | @@ -204,10 +211,10 @@ The following table lists the configurable parameters of the TimescaleDB chart a ### Additional Configuration -| Parameter | Description | Default | -| ------------------- | ----------------------------------------------------------------------- | ------- | -| `extraEnvVars` | Additional environment variables to set | `[]` | -| `extraObjects` | A list of additional Kubernetes objects to deploy alongside the release | `[]` | +| Parameter | Description | Default | +| -------------- | ----------------------------------------------------------------------- | ------- | +| `extraEnvVars` | Additional environment variables to set | `[]` | +| `extraObjects` | A list of additional Kubernetes objects to deploy alongside the release | `[]` | #### Extra Objects diff --git a/charts/timescaledb/templates/statefulset.yaml b/charts/timescaledb/templates/statefulset.yaml index f2ba4110..c3acb94e 100644 --- a/charts/timescaledb/templates/statefulset.yaml +++ b/charts/timescaledb/templates/statefulset.yaml @@ -150,8 +150,10 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with $labels := merge (include "timescaledb.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} labels: - {{- include "timescaledb.labels" . | nindent 8 }} + {{- toYaml $labels | nindent 8 }} + {{- end }} {{- with .Values.persistence.annotations }} annotations: {{- toYaml . | nindent 8 }} diff --git a/charts/timescaledb/values.yaml b/charts/timescaledb/values.yaml index 8aed0fa9..62d50b50 100644 --- a/charts/timescaledb/values.yaml +++ b/charts/timescaledb/values.yaml @@ -22,7 +22,7 @@ image: ## @param image.repository TimescaleDB image repository repository: timescale/timescaledb ## @param image.tag TimescaleDB image tag (immutable tags are recommended) - tag: "2.23.1-pg17@sha256:a6581100f2f1cd1e03a29a94a49c488a174de65e57301c04de255804645e5a31" + tag: "2.24.0-pg17@sha256:e953289fe276c1b0e3867af65f03af4b677072e96a507a3e5b852b64d3be91d4" ## @param image.imagePullPolicy TimescaleDB image pull policy imagePullPolicy: Always @@ -35,6 +35,9 @@ podSecurityContext: ## @param podSecurityContext.fsGroup Group ID for the volumes of the pod fsGroup: 999 +## @section Pod labels +podLabels: {} + containerSecurityContext: ## @param containerSecurityContext.allowPrivilegeEscalation Enable container privilege escalation allowPrivilegeEscalation: false @@ -127,6 +130,8 @@ persistence: storageClass: "" ## @param persistence.annotations Persistent Volume Claim annotations annotations: {} + ## @param persistence.labels Labels for persistent volume claims + labels: {} ## @param persistence.size Persistent Volume size size: 8Gi ## @param persistence.accessModes Persistent Volume access modes diff --git a/charts/valkey/Chart.yaml b/charts/valkey/Chart.yaml index 6f4ad904..d894e6a4 100644 --- a/charts/valkey/Chart.yaml +++ b/charts/valkey/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: valkey description: High performance in-memory data structure store, fork of Redis. Valkey is an open-source, high-performance key/value datastore that supports a variety of workloads such as caching, message queues, and can act as a primary database. type: application -version: 0.10.3 +version: 0.11.1 appVersion: "9.0.0" home: https://www.valkey.io sources: @@ -43,7 +43,4 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "[oliver006/redis_exporter] Update charts/valkey/values.yaml oliver006/redis_exporter to v1.80.1 (patch) (#647)" - links: - - name: "Commit fa2654b" - url: "https://github.com/CloudPirates-io/helm-charts/commit/fa2654b" + description: "Chart updated" diff --git a/charts/valkey/README.md b/charts/valkey/README.md index 0166f39d..9318ddeb 100644 --- a/charts/valkey/README.md +++ b/charts/valkey/README.md @@ -177,6 +177,7 @@ The following table lists the configurable parameters of the Valkey chart and th | `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` | | `persistence.storageClass` | Persistent Volume storage class | `""` | | `persistence.annotations` | Persistent Volume Claim annotations | `{}` | +| `persistence.labels` | Labels for persistence volume claims | `{}` | | `persistence.size` | Persistent Volume size | `8Gi` | | `persistence.accessModes` | Persistent Volume access modes | `["ReadWriteOnce"]` | | `persistence.existingClaim` | The name of an existing PVC to use for persistence | `""` | diff --git a/charts/valkey/templates/statefulset.yaml b/charts/valkey/templates/statefulset.yaml index ca401561..45d60083 100644 --- a/charts/valkey/templates/statefulset.yaml +++ b/charts/valkey/templates/statefulset.yaml @@ -545,8 +545,10 @@ spec: volumeClaimTemplates: - metadata: name: data + {{- with $labels := merge (include "valkey.selectorLabels" . | fromYaml) .Values.persistence.labels .Values.podLabels }} labels: - {{- include "valkey.labels" . | nindent 10 }} + {{- toYaml $labels | nindent 10 }} + {{- end }} {{- if .Values.persistence.annotations }} annotations: {{- toYaml .Values.persistence.annotations | nindent 10 }} diff --git a/charts/valkey/values.yaml b/charts/valkey/values.yaml index 06907bc8..d9c5fada 100644 --- a/charts/valkey/values.yaml +++ b/charts/valkey/values.yaml @@ -25,7 +25,7 @@ image: ## @param image.repository Valkey image repository repository: valkey/valkey ## @param image.tag Valkey image tag (immutable tags are recommended) - tag: "9.0.0-alpine3.22@sha256:b4ee67d73e00393e712accc72cfd7003b87d0fcd63f0eba798b23251bfc9c394" + tag: "9.0.0-alpine3.22@sha256:bef37d06d4856710973ee31dd1eac1482e4c8e6e7b847f999ad25433e646587b" ## @param image.imagePullPolicy Valkey image pull policy imagePullPolicy: Always @@ -180,6 +180,8 @@ persistence: storageClass: "" ## @param persistence.annotations Persistent Volume Claim annotations annotations: {} + ## @param persistence.labels Labels for persistent volume claims + labels: {} ## @param persistence.size Persistent Volume size size: 8Gi ## @param persistence.accessModes Persistent Volume access modes @@ -318,7 +320,7 @@ sentinel: ## @param sentinel.image.repository Valkey Sentinel image repository repository: valkey/valkey ## @param sentinel.image.tag Valkey Sentinel image tag - tag: "9.0.0-alpine3.22@sha256:b4ee67d73e00393e712accc72cfd7003b87d0fcd63f0eba798b23251bfc9c394" + tag: "9.0.0-alpine3.22@sha256:bef37d06d4856710973ee31dd1eac1482e4c8e6e7b847f999ad25433e646587b" ## @param sentinel.image.pullPolicy Valkey Sentinel image pull policy pullPolicy: Always ## @param sentinel.masterName Name of the master server (default: mymaster) diff --git a/charts/zookeeper/Chart.yaml b/charts/zookeeper/Chart.yaml index 9578e65b..7d5e3192 100644 --- a/charts/zookeeper/Chart.yaml +++ b/charts/zookeeper/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: zookeeper description: Apache ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. type: application -version: 0.3.4 +version: 0.3.5 appVersion: "3.9.4" keywords: - zookeeper @@ -43,4 +43,7 @@ annotations: url: https://www.cloudpirates.io artifacthub.io/changes: |2 - kind: changed - description: "Chart updated" + description: "fix network policy switch (#690)" + links: + - name: "Commit f7b8ae2" + url: "https://github.com/CloudPirates-io/helm-charts/commit/f7b8ae2" diff --git a/charts/zookeeper/templates/statefulset.yaml b/charts/zookeeper/templates/statefulset.yaml index 9da762f4..9cfd0dd7 100644 --- a/charts/zookeeper/templates/statefulset.yaml +++ b/charts/zookeeper/templates/statefulset.yaml @@ -89,6 +89,10 @@ spec: {{- if not .Values.persistence.enabled }} - name: data emptyDir: {} + {{- else if .Values.persistence.existingClaim }} + - name: data + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim }} {{- end }} {{- if .Values.extraVolumes }} {{- toYaml .Values.extraVolumes | nindent 8 }} @@ -111,7 +115,7 @@ spec: tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- if .Values.persistence.enabled }} + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} volumeClaimTemplates: - metadata: name: data diff --git a/charts/zookeeper/tests/unittest-defaults_test.yaml b/charts/zookeeper/tests/unittest-defaults_test.yaml index 9dea6bae..9c07ee3f 100644 --- a/charts/zookeeper/tests/unittest-defaults_test.yaml +++ b/charts/zookeeper/tests/unittest-defaults_test.yaml @@ -43,4 +43,57 @@ tests: asserts: - matchRegex: path: data["zoo.cfg"] - pattern: "tickTime=2000" \ No newline at end of file + pattern: "tickTime=2000" + + - it: should create volumeClaimTemplates by default (persistence enabled) + template: statefulset.yaml + asserts: + - isNotNull: + path: spec.volumeClaimTemplates + - equal: + path: spec.volumeClaimTemplates[0].metadata.name + value: data + - equal: + path: spec.volumeClaimTemplates[0].spec.accessModes[0] + value: ReadWriteOnce + - equal: + path: spec.volumeClaimTemplates[0].spec.resources.requests.storage + value: 8Gi + - notContains: + path: spec.template.spec.volumes + content: + name: data + + - it: should use emptyDir when persistence is disabled + template: statefulset.yaml + set: + persistence: + enabled: false + asserts: + - isNull: + path: spec.volumeClaimTemplates + - isNotNull: + path: spec.template.spec.volumes + - equal: + path: spec.template.spec.volumes[0].name + value: data + - isNotNull: + path: spec.template.spec.volumes[0].emptyDir + + - it: should use existing PVC when existingClaim is set + template: statefulset.yaml + set: + persistence: + enabled: true + existingClaim: my-existing-pvc + asserts: + - isNull: + path: spec.volumeClaimTemplates + - isNotNull: + path: spec.template.spec.volumes + - equal: + path: spec.template.spec.volumes[0].name + value: data + - equal: + path: spec.template.spec.volumes[0].persistentVolumeClaim.claimName + value: my-existing-pvc \ No newline at end of file