diff --git a/.github/workflows/tests-cluster-chainsaw.yaml b/.github/workflows/tests-cluster-chainsaw.yaml index af27270f1..15e02743b 100644 --- a/.github/workflows/tests-cluster-chainsaw.yaml +++ b/.github/workflows/tests-cluster-chainsaw.yaml @@ -59,6 +59,29 @@ jobs: echo "Chart.yaml:" cat Chart.yaml + # Added by ParadeDB: Authenticate to Docker Hub to avoid rate limits + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} + + # Added by ParadeDB: Always pull the latest version of paradedb/paradedb + - name: Set ParadeDB Version to Latest + working-directory: charts/paradedb/ + env: + GH_TOKEN: ${{ secrets.GHA_CREATE_RELEASE_PAT }} + run: | + LATEST_TAG=$(curl -s https://api.github.com/repos/paradedb/paradedb/tags | jq -r '.[0].name') + APP_VERSION=${LATEST_TAG#v} + sed -i "s/^[[:space:]]*paradedb: .*/ paradedb: \"$APP_VERSION\"/" values.yaml + sed -i "s/^version: .*/version: ${{ vars.CHART_VERSION_MAJOR }}.${{ vars.CHART_VERSION_MINOR }}.${{ vars.CHART_VERSION_PATCH }}/" Chart.yaml + echo "values.yaml:" + cat values.yaml + echo "----------------------------------------" + echo "Chart.yaml:" + cat Chart.yaml + - name: Setup kind uses: ./.github/actions/setup-kind diff --git a/README.md b/README.md index 59d647219..4e1f75e1c 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ Kubernetes, and specifically the CloudNativePG operator, is the recommended appr The ParadeDB Helm Chart supports Postgres 13+ and ships with Postgres 17 by default. +The ParadeDB Helm Chart supports Postgres 13+ and ships with Postgres 16 by default. + The chart is also available on [Artifact Hub](https://artifacthub.io/packages/helm/paradedb/paradedb). ## Usage diff --git a/charts/paradedb/Chart.yaml b/charts/paradedb/Chart.yaml index 71a7e1620..ce7f4d721 100644 --- a/charts/paradedb/Chart.yaml +++ b/charts/paradedb/Chart.yaml @@ -20,8 +20,8 @@ icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.s type: application # The Chart version, set in the publish CI workflow from GitHub Actions Variables -# We default to v0.14.0 for testing and local development -version: 0.14.0 +# We default to v0.14.1 for testing and local development +version: 0.14.1 sources: - https://github.com/paradedb/charts diff --git a/charts/paradedb/README.md b/charts/paradedb/README.md index 461b3dc22..6607a911c 100644 --- a/charts/paradedb/README.md +++ b/charts/paradedb/README.md @@ -6,6 +6,8 @@ Kubernetes, and specifically the CloudNativePG operator, is the recommended appr The ParadeDB Helm Chart supports Postgres 13+ and ships with Postgres 17 by default. +The ParadeDB Helm Chart supports Postgres 13+ and ships with Postgres 16 by default. + The chart is also available on [Artifact Hub](https://artifacthub.io/packages/helm/paradedb/paradedb). ## Usage @@ -211,7 +213,7 @@ refer to the [CloudNativePG Documentation](https://cloudnative-pg.io/documentat | cluster.monitoring.customQueries | list | `[]` | Custom Prometheus metrics Will be stored in the ConfigMap | | cluster.monitoring.customQueriesSecret | list | `[]` | The list of secrets containing the custom queries | | cluster.monitoring.disableDefaultQueries | bool | `false` | Whether the default queries should be injected. Set it to true if you don't want to inject default queries into the cluster. | -| cluster.monitoring.enabled | bool | `false` | Whether to enable monitoring | +| cluster.monitoring.enabled | bool | `true` | Whether to enable monitoring | | cluster.monitoring.podMonitor.enabled | bool | `true` | Whether to enable the PodMonitor | | cluster.monitoring.podMonitor.metricRelabelings | list | `[]` | The list of metric relabelings for the PodMonitor. Applied to samples before ingestion. | | cluster.monitoring.podMonitor.relabelings | list | `[]` | The list of relabelings for the PodMonitor. Applied to samples before scraping. | @@ -219,7 +221,7 @@ refer to the [CloudNativePG Documentation](https://cloudnative-pg.io/documentat | cluster.monitoring.prometheusRule.excludeRules | list | `[]` | Exclude specified rules | | cluster.postgresGID | int | `-1` | The GID of the postgres user inside the image, defaults to 26 | | cluster.postgresUID | int | `-1` | The UID of the postgres user inside the image, defaults to 26 | -| cluster.postgresql.parameters | object | `{}` | PostgreSQL configuration options (postgresql.conf) | +| cluster.postgresql.parameters | object | `{"cron.database_name":"postgres"}` | PostgreSQL configuration options (postgresql.conf) | | cluster.postgresql.pg_hba | list | `[]` | PostgreSQL Host Based Authentication rules (lines to be appended to the pg_hba.conf file) | | cluster.postgresql.pg_ident | list | `[]` | PostgreSQL User Name Maps rules (lines to be appended to the pg_ident.conf file) | | cluster.postgresql.shared_preload_libraries | list | `[]` | Lists of shared preload libraries to add to the default ones | @@ -312,7 +314,7 @@ refer to the [CloudNativePG Documentation](https://cloudnative-pg.io/documentat | recovery.secret.create | bool | `true` | Whether to create a secret for the backup credentials | | recovery.secret.name | string | `""` | Name of the backup credentials secret | | type | string | `"paradedb"` | Type of the CNPG database. Available types: * `paradedb` * `paradedb-enterprise` | -| version.paradedb | string | `"0.14.0"` | We default to v0.14.0 for testing and local development | +| version.paradedb | string | `"0.14.1"` | We default to v0.14.1 for testing and local development | | version.postgresql | string | `"17"` | PostgreSQL major version to use | | poolers[].name | string | `` | Name of the pooler resource | | poolers[].instances | number | `1` | The number of replicas we want | diff --git a/charts/paradedb/README.md.gotmpl b/charts/paradedb/README.md.gotmpl index 3d94f8e1e..22c39e6eb 100644 --- a/charts/paradedb/README.md.gotmpl +++ b/charts/paradedb/README.md.gotmpl @@ -6,6 +6,8 @@ Kubernetes, and specifically the CloudNativePG operator, is the recommended appr The ParadeDB Helm Chart supports Postgres 13+ and ships with Postgres 17 by default. +The ParadeDB Helm Chart supports Postgres 13+ and ships with Postgres 16 by default. + The chart is also available on [Artifact Hub](https://artifacthub.io/packages/helm/paradedb/paradedb). ## Usage @@ -155,18 +157,6 @@ There are several configuration examples in the [examples](examples) directory. refer to the [CloudNativePG Documentation](https://cloudnative-pg.io/documentation/current/) for more advanced configurations. {{ template "chart.valuesSection" . }} -| poolers[].name | string | `` | Name of the pooler resource | -| poolers[].instances | number | `1` | The number of replicas we want | -| poolers[].type | [PoolerType][PoolerType] | `rw` | Type of service to forward traffic to. Default: `rw`. | -| poolers[].poolMode | [PgBouncerPoolMode][PgBouncerPoolMode] | `session` | The pool mode. Default: `session`. | -| poolers[].authQuerySecret | [LocalObjectReference][LocalObjectReference] | `{}` | The credentials of the user that need to be used for the authentication query. | -| poolers[].authQuery | string | `{}` | The credentials of the user that need to be used for the authentication query. | -| poolers[].parameters | map[string]string | `{}` | Additional parameters to be passed to PgBouncer - please check the CNPG documentation for a list of options you can configure | -| poolers[].template | [PodTemplateSpec][PodTemplateSpec] | `{}` | The template of the Pod to be created | -| poolers[].template | [ServiceTemplateSpec][ServiceTemplateSpec] | `{}` | Template for the Service to be created | -| poolers[].pg_hba | []string | `{}` | PostgreSQL Host Based Authentication rules (lines to be appended to the pg_hba.conf file) | -| poolers[].monitoring.enabled | bool | `false` | Whether to enable monitoring for the Pooler. | -| poolers[].monitoring.podMonitor.enabled | bool | `true` | Create a podMonitor for the Pooler. | {{ template "chart.maintainersSection" . }} diff --git a/charts/paradedb/examples/image-catalog-ref.yaml b/charts/paradedb/examples/image-catalog-ref.yaml index 6e1c8eaa6..436d5ef90 100644 --- a/charts/paradedb/examples/image-catalog-ref.yaml +++ b/charts/paradedb/examples/image-catalog-ref.yaml @@ -2,7 +2,7 @@ type: postgresql mode: standalone version: major: "17" - paradedb: "0.14.0" + paradedb: "0.14.1" cluster: instances: 1 imageCatalogRef: diff --git a/charts/paradedb/examples/image-catalog.yaml b/charts/paradedb/examples/image-catalog.yaml index 0372409de..97d2002d9 100644 --- a/charts/paradedb/examples/image-catalog.yaml +++ b/charts/paradedb/examples/image-catalog.yaml @@ -2,7 +2,7 @@ type: postgresql mode: standalone version: major: "17" - paradedb: "0.14.0" + paradedb: "0.14.1" cluster: instances: 1 backups: diff --git a/charts/paradedb/examples/paradedb.yaml b/charts/paradedb/examples/paradedb.yaml index c1eb18378..7bf3bcad6 100644 --- a/charts/paradedb/examples/paradedb.yaml +++ b/charts/paradedb/examples/paradedb.yaml @@ -2,7 +2,7 @@ type: paradedb mode: standalone version: postgresql: "17" - paradedb: "0.14.0" + paradedb: "0.14.1" cluster: instances: 1 backups: diff --git a/charts/paradedb/test/monitoring/01-monitoring_cluster.yaml b/charts/paradedb/test/monitoring/01-monitoring_cluster.yaml index 3dc3cf648..a0d2d71ea 100644 --- a/charts/paradedb/test/monitoring/01-monitoring_cluster.yaml +++ b/charts/paradedb/test/monitoring/01-monitoring_cluster.yaml @@ -75,4 +75,4 @@ poolers: - cluster targetLabel: cnpg_cluster - action: labeldrop - regex: cluster \ No newline at end of file + regex: cluster diff --git a/charts/paradedb/test/paradedb-enterprise/01-paradedb-NCC-1701-D_cluster.yaml b/charts/paradedb/test/paradedb-enterprise/01-paradedb-NCC-1701-D_cluster.yaml index e8a3e34b3..7963e9272 100644 --- a/charts/paradedb/test/paradedb-enterprise/01-paradedb-NCC-1701-D_cluster.yaml +++ b/charts/paradedb/test/paradedb-enterprise/01-paradedb-NCC-1701-D_cluster.yaml @@ -2,7 +2,7 @@ type: paradedb-enterprise mode: standalone version: major: "17" - paradedb: "0.14.0" + paradedb: "0.14.1" cluster: instances: 2 storage: diff --git a/charts/paradedb/test/paradedb-minio-backup-restore/01-paradedb_cluster.yaml b/charts/paradedb/test/paradedb-minio-backup-restore/01-paradedb_cluster.yaml index a2e87e1d9..ce8652e55 100644 --- a/charts/paradedb/test/paradedb-minio-backup-restore/01-paradedb_cluster.yaml +++ b/charts/paradedb/test/paradedb-minio-backup-restore/01-paradedb_cluster.yaml @@ -2,7 +2,7 @@ type: paradedb mode: standalone version: major: "17" - paradedb: "0.14.0" + paradedb: "0.14.1" cluster: instances: 2 storage: diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/00-minio_cleanup-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/00-minio_cleanup-assert.yaml new file mode 100644 index 000000000..04df941e4 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/00-minio_cleanup-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-test +status: + succeeded: 1 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/00-minio_cleanup.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/00-minio_cleanup.yaml new file mode 100644 index 000000000..19d550162 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/00-minio_cleanup.yaml @@ -0,0 +1,16 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: minio-cleanup +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: minio-cleanup + image: minio/mc + command: ['sh', '-c'] + args: + - | + mc alias set myminio https://minio.minio.svc.cluster.local minio minio123 + mc rm --recursive --force myminio/mybucket/paradedb diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/01-standalone_cluster-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/01-standalone_cluster-assert.yaml new file mode 100644 index 000000000..86d37e690 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/01-standalone_cluster-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: import-paradedb +status: + readyInstances: 2 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/01-standalone_cluster.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/01-standalone_cluster.yaml new file mode 100644 index 000000000..ce8652e55 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/01-standalone_cluster.yaml @@ -0,0 +1,29 @@ +type: paradedb +mode: standalone +version: + major: "17" + paradedb: "0.14.1" +cluster: + instances: 2 + storage: + size: 256Mi + +backups: + enabled: true + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/paradedb/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/02-data_write-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/02-data_write-assert.yaml new file mode 100644 index 000000000..831f963d9 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/02-data_write-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-write +status: + succeeded: 1 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/02-data_write.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/02-data_write.yaml new file mode 100644 index 000000000..34a3d2371 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/02-data_write.yaml @@ -0,0 +1,23 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-write +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: data-write + env: + - name: DB_URI + valueFrom: + secretKeyRef: + name: standalone-paradedb-superuser + key: uri + image: alpine:3.19 + command: ['sh', '-c'] + args: + - | + apk --no-cache add postgresql-client + DB_URI=$(echo $DB_URI | sed "s|/\*|/|" ) + psql "$DB_URI" -c "CREATE TABLE mygoodtable (id serial PRIMARY KEY);" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/03-backup.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/03-backup.yaml new file mode 100644 index 000000000..8fe8c4686 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/03-backup.yaml @@ -0,0 +1,8 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: post-init-backup +spec: + method: barmanObjectStore + cluster: + name: standalone-paradedb diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/03-backup_completed-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/03-backup_completed-assert.yaml new file mode 100644 index 000000000..efffadd46 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/03-backup_completed-assert.yaml @@ -0,0 +1,10 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: post-init-backup +spec: + cluster: + name: standalone-paradedb + method: barmanObjectStore +status: + phase: completed diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/03-backup_running-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/03-backup_running-assert.yaml new file mode 100644 index 000000000..ab709ada9 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/03-backup_running-assert.yaml @@ -0,0 +1,10 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: post-init-backup +spec: + cluster: + name: standalone-paradedb + method: barmanObjectStore +status: + phase: running diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/03-checkpoint.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/03-checkpoint.yaml new file mode 100644 index 000000000..680ba1b2d --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/03-checkpoint.yaml @@ -0,0 +1,27 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: backup-checkpoint +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: create-checkpoint + env: + - name: DB_URI + valueFrom: + secretKeyRef: + name: standalone-paradedb-superuser + key: uri + image: alpine:3.19 + command: ['sh', '-c'] + args: + - | + apk --no-cache add postgresql-client + DB_URI=$(echo $DB_URI | sed "s|/\*|/|" ) + END_TIME=$(( $(date +%s) + 30 )) + while [ $(date +%s) -lt $END_TIME ]; do + psql "$DB_URI" -c "SELECT pg_switch_wal();CHECKPOINT;" + sleep 5 + done diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/04-post_backup_data_write-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/04-post_backup_data_write-assert.yaml new file mode 100644 index 000000000..b3c0ba678 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/04-post_backup_data_write-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: paradedb-enterprise-index-test +status: + succeeded: 1 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/04-post_backup_data_write.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/04-post_backup_data_write.yaml new file mode 100644 index 000000000..50c7ab6a2 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/04-post_backup_data_write.yaml @@ -0,0 +1,57 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: configmap-creator-sa +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: configmap-creator +rules: +- apiGroups: [""] + resources: ["configmaps"] + verbs: ["create"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: configmap-creator-binding +subjects: +- kind: ServiceAccount + name: configmap-creator-sa +roleRef: + kind: Role + name: configmap-creator + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: data-write-post-backup +spec: + template: + spec: + serviceAccountName: configmap-creator-sa + restartPolicy: OnFailure + containers: + - name: data-write + env: + - name: DB_URI + valueFrom: + secretKeyRef: + name: standalone-paradedb-superuser + key: uri + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: alpine:3.19 + command: ['sh', '-c'] + args: + - | + apk --no-cache add postgresql-client kubectl coreutils + DB_URI=$(echo $DB_URI | sed "s|/\*|/|" ) + DATE_NO_BAD_TABLE=$(date --rfc-3339=ns) + sleep 30 + psql "$DB_URI" -c "CREATE TABLE mybadtable (id serial PRIMARY KEY);" + kubectl create configmap date-no-bad-table --from-literal=date="$DATE_NO_BAD_TABLE" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/05-recovery_backup_cluster-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/05-recovery_backup_cluster-assert.yaml new file mode 100644 index 000000000..511de6837 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/05-recovery_backup_cluster-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: pg-basebackup-paradedb +status: + readyInstances: 2 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/05-recovery_backup_cluster.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/05-recovery_backup_cluster.yaml new file mode 100644 index 000000000..c2731b3bf --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/05-recovery_backup_cluster.yaml @@ -0,0 +1,48 @@ +type: postgresql +mode: recovery + +cluster: + instances: 2 + storage: + size: 256Mi + +recovery: + method: backup + backupName: "post-init-backup" + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/postgresql-minio-backup-restore/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" + +backups: + enabled: true + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/postgresql-minio-backup-restore/v2" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/06-data_test-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/06-data_test-assert.yaml new file mode 100644 index 000000000..b29534fcc --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/06-data_test-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-test-schemaonly +status: + succeeded: 1 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/06-data_test.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/06-data_test.yaml new file mode 100644 index 000000000..5e1f05f6e --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/06-data_test.yaml @@ -0,0 +1,24 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-test-schemaonly +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: data-test + env: + - name: DB_URI + valueFrom: + secretKeyRef: + name: import-schemaonly-paradedb-superuser + key: uri + image: alpine:3.19 + command: ['sh', '-c'] + args: + - | + apk --no-cache add postgresql-client + DB_URI=$(echo $DB_URI | sed "s|/\*|/|" ) + test "$(psql "${DB_URI}mygooddb" -t -c 'SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = $$mygoodtable$$)' --csv -q 2>/dev/null)" = "t" + test "$(psql "${DB_URI}mygooddb" -t -c 'SELECT EXISTS (SELECT FROM mygoodtable WHERE id = 314159265)' --csv -q 2>/dev/null)" = "f" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/07-recovery_object_store_cluster-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/07-recovery_object_store_cluster-assert.yaml new file mode 100644 index 000000000..d9895f17c --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/07-recovery_object_store_cluster-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: recovery-object-store-paradedb +status: + readyInstances: 2 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/07-recovery_object_store_cluster.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/07-recovery_object_store_cluster.yaml new file mode 100644 index 000000000..07f5dbc53 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/07-recovery_object_store_cluster.yaml @@ -0,0 +1,48 @@ +type: postgresql +mode: recovery + +cluster: + instances: 2 + storage: + size: 256Mi + +recovery: + method: object_store + clusterName: "standalone-paradedb" + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/postgresql-minio-backup-restore/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" + +backups: + enabled: true + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/postgresql-minio-backup-restore/v2" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/08-data_test-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/08-data_test-assert.yaml new file mode 100644 index 000000000..36eb4ff81 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/08-data_test-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-test-object-store +status: + succeeded: 1 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/08-data_test.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/08-data_test.yaml new file mode 100644 index 000000000..716f6e4b8 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/08-data_test.yaml @@ -0,0 +1,24 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-test +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: data-test + env: + - name: DB_URI + valueFrom: + secretKeyRef: + name: import-paradedb-superuser + key: uri + image: alpine:3.19 + command: ['sh', '-c'] + args: + - | + apk --no-cache add postgresql-client + DB_URI=$(echo $DB_URI | sed "s|/\*|/|" ) + test "$(psql "${DB_URI}mygooddb" -t -c 'SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = $$mygoodtable$$)' --csv -q 2>/dev/null)" = "t" + test "$(psql "${DB_URI}mygooddb" -t -c 'SELECT EXISTS (SELECT FROM mygoodtable WHERE id = 314159265)' --csv -q 2>/dev/null)" = "t" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/09-recovery_backup_pitr_cluster-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/09-recovery_backup_pitr_cluster-assert.yaml new file mode 100644 index 000000000..640223c16 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/09-recovery_backup_pitr_cluster-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: recovery-backup-pitr-paradedb +status: + readyInstances: 2 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/09-recovery_backup_pitr_cluster.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/09-recovery_backup_pitr_cluster.yaml new file mode 100644 index 000000000..c2731b3bf --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/09-recovery_backup_pitr_cluster.yaml @@ -0,0 +1,48 @@ +type: postgresql +mode: recovery + +cluster: + instances: 2 + storage: + size: 256Mi + +recovery: + method: backup + backupName: "post-init-backup" + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/postgresql-minio-backup-restore/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" + +backups: + enabled: true + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/postgresql-minio-backup-restore/v2" + accessKey: "minio" + secretKey: "minio123" + region: "local" + scheduledBackups: [] + retentionPolicy: "30d" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/10-data_test-assert.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/10-data_test-assert.yaml new file mode 100644 index 000000000..34cf73f0c --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/10-data_test-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: paradedb-enterprise-test +status: + succeeded: 1 diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/10-data_test.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/10-data_test.yaml new file mode 100644 index 000000000..412852502 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/10-data_test.yaml @@ -0,0 +1,27 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: data-test-backup-pitr +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: data-test + env: + - name: DB_URI + valueFrom: + secretKeyRef: + name: recovery-backup-pitr-paradedb-superuser + key: uri + image: alpine:3.19 + command: ['sh', '-c'] + args: + - | + apk --no-cache add postgresql-client + DB_URI=$(echo $DB_URI | sed "s|/\*|/|" ) + set -e + test "$(psql $DB_URI -t -c 'SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = $$mygoodtable$$)' --csv -q 2>/dev/null)" = "t" + echo "Good table exists" + test "$(psql $DB_URI -t -c 'SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = $$mybadtable$$)' --csv -q 2>/dev/null)" = "f" + echo "Bad table does not exist" diff --git a/charts/paradedb/test/postgresql-minio-backup-restore/chainsaw-test.yaml b/charts/paradedb/test/postgresql-minio-backup-restore/chainsaw-test.yaml new file mode 100644 index 000000000..79a7d2d76 --- /dev/null +++ b/charts/paradedb/test/postgresql-minio-backup-restore/chainsaw-test.yaml @@ -0,0 +1,148 @@ +## +# This test sets up a CNPG cluster with MinIO backups and then restores the cluster from the backup using backup, +# object store, and object store with PITR recovery. +apiVersion: chainsaw.kyverno.io/v1alpha1 +kind: Test +metadata: + name: postgresql-minio-backup-restore +spec: + timeouts: + apply: 1s + assert: 2m + cleanup: 1m + steps: + - name: Clear the MinIO bucket + try: + - apply: + file: ./00-minio_cleanup.yaml + - assert: + file: ./00-minio_cleanup-assert.yaml + catch: + - describe: + apiVersion: batch/v1 + kind: Job + - podLogs: + selector: batch.kubernetes.io/job-name=minio_cleanup + - name: Install the standalone cluster + try: + - script: + content: | + kubectl -n $NAMESPACE create secret generic kube-root-ca.crt --from-literal=ca.crt="$(kubectl -n kube-system get configmaps kube-root-ca.crt -o jsonpath='{.data.ca\.crt}')" --dry-run=client -o yaml | kubectl apply -f - + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./01-standalone_cluster.yaml \ + --wait \ + standalone ../../ + - assert: + file: 01-standalone_cluster-assert.yaml + catch: + - describe: + apiVersion: postgresql.cnpg.io/v1 + kind: Cluster + - name: Write some data to the cluster + try: + - apply: + file: ./02-data_write.yaml + - assert: + file: ./02-data_write-assert.yaml + catch: + - describe: + apiVersion: batch/v1 + kind: Job + - podLogs: + selector: batch.kubernetes.io/job-name=data-write + - name: Create a backup + try: + - apply: + file: ./03-backup.yaml + - assert: + file: ./03-backup_running-assert.yaml + - apply: + file: ./03-checkpoint.yaml + - assert: + file: ./03-backup_completed-assert.yaml + - name: Write more data to the database after the backup + try: + - apply: + file: ./04-post_backup_data_write.yaml + - assert: + file: ./04-post_backup_data_write-assert.yaml + timeouts: + apply: 1s + assert: 10m + catch: + - describe: + apiVersion: postgresql.cnpg.io/v1 + kind: Backup + - name: Create a recovery cluster from backup + try: + - script: + content: | + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./05-recovery_backup_cluster.yaml \ + --wait \ + recovery-backup ../../ + - assert: + file: ./05-recovery_backup_cluster-assert.yaml + - name: Verify the data on the backup recovery cluster exists + try: + - apply: + file: 06-data_test.yaml + - assert: + file: 06-data_test-assert.yaml + - name: Create a recovery cluster from object store + try: + - script: + content: | + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./07-recovery_object_store_cluster.yaml \ + --wait \ + recovery-object-store ../../ + - assert: + file: ./07-recovery_object_store_cluster-assert.yaml + - name: Verify the data on the object store recovery cluster exists + try: + - apply: + file: 08-data_test.yaml + - assert: + file: 08-data_test-assert.yaml + - name: Create a recovery cluster from backup with a PITR target + try: + - script: + content: | + DATE_NO_BAD_TABLE=$(kubectl -n $NAMESPACE get configmap date-no-bad-table -o 'jsonpath={.data.date}') + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./09-recovery_backup_pitr_cluster.yaml \ + --set recovery.pitrTarget.time="$DATE_NO_BAD_TABLE" \ + --wait \ + recovery-backup-pitr ../../ + - assert: + file: ./09-recovery_backup_pitr_cluster-assert.yaml + - name: Verify the pre-backup data on the recovery cluster exists but not the post-backup data + try: + - apply: + file: 10-data_test.yaml + - assert: + file: 10-data_test-assert.yaml + catch: + - describe: + apiVersion: batch/v1 + kind: Job + selector: batch.kubernetes.io/job-name=data-test-backup-pitr + - podLogs: + selector: batch.kubernetes.io/job-name=data-test-backup-pitr + - name: Cleanup + try: + - script: + content: | + helm uninstall --namespace $NAMESPACE standalone + helm uninstall --namespace $NAMESPACE recovery-backup + helm uninstall --namespace $NAMESPACE recovery-object-store + helm uninstall --namespace $NAMESPACE recovery-backup-pitr diff --git a/charts/paradedb/test/scheduledbackups/00-minio_cleanup-assert.yaml b/charts/paradedb/test/scheduledbackups/00-minio_cleanup-assert.yaml new file mode 100644 index 000000000..678c11c9b --- /dev/null +++ b/charts/paradedb/test/scheduledbackups/00-minio_cleanup-assert.yaml @@ -0,0 +1,6 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: paradedb-test +status: + succeeded: 1 diff --git a/charts/paradedb/test/scheduledbackups/00-minio_cleanup.yaml b/charts/paradedb/test/scheduledbackups/00-minio_cleanup.yaml new file mode 100644 index 000000000..90151a964 --- /dev/null +++ b/charts/paradedb/test/scheduledbackups/00-minio_cleanup.yaml @@ -0,0 +1,16 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: minio-cleanup +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: minio-cleanup + image: minio/mc + command: ['sh', '-c'] + args: + - | + mc alias set myminio https://minio.minio.svc.cluster.local minio minio123 + mc rm --recursive --force myminio/mybucket/scheduledbackups diff --git a/charts/paradedb/test/scheduledbackups/01-scheduledbackups_cluster-assert.yaml b/charts/paradedb/test/scheduledbackups/01-scheduledbackups_cluster-assert.yaml new file mode 100644 index 000000000..a3af1a25b --- /dev/null +++ b/charts/paradedb/test/scheduledbackups/01-scheduledbackups_cluster-assert.yaml @@ -0,0 +1,37 @@ +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: scheduledbackups-cluster +status: + readyInstances: 1 +--- +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: scheduledbackups-cluster-daily-backup +spec: + immediate: true + schedule: "0 0 0 * * *" + method: barmanObjectStore + backupOwnerReference: self + cluster: + name: scheduledbackups-cluster +--- +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: scheduledbackups-cluster-weekly-backup +spec: + immediate: true + schedule: "0 0 0 * * 1" + method: barmanObjectStore + backupOwnerReference: self + cluster: + name: scheduledbackups-cluster +--- +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +spec: + method: barmanObjectStore + cluster: + name: scheduledbackups-cluster diff --git a/charts/paradedb/test/scheduledbackups/01-scheduledbackups_cluster.yaml b/charts/paradedb/test/scheduledbackups/01-scheduledbackups_cluster.yaml new file mode 100644 index 000000000..94f6015c4 --- /dev/null +++ b/charts/paradedb/test/scheduledbackups/01-scheduledbackups_cluster.yaml @@ -0,0 +1,35 @@ +type: postgresql +mode: standalone + +cluster: + instances: 1 + storage: + size: 256Mi + +backups: + enabled: true + provider: s3 + endpointURL: "https://minio.minio.svc.cluster.local" + endpointCA: + name: kube-root-ca.crt + key: ca.crt + wal: + encryption: "" + data: + encryption: "" + s3: + bucket: "mybucket" + path: "/scheduledbackups/v1" + accessKey: "minio" + secretKey: "minio123" + region: "local" + retentionPolicy: "30d" + scheduledBackups: + - name: daily-backup + schedule: "0 0 0 * * *" + backupOwnerReference: self + method: barmanObjectStore + - name: weekly-backup + schedule: "0 0 0 * * 1" + backupOwnerReference: self + method: barmanObjectStore diff --git a/charts/paradedb/test/scheduledbackups/chainsaw-test.yaml b/charts/paradedb/test/scheduledbackups/chainsaw-test.yaml new file mode 100644 index 000000000..c1409ce46 --- /dev/null +++ b/charts/paradedb/test/scheduledbackups/chainsaw-test.yaml @@ -0,0 +1,27 @@ +apiVersion: chainsaw.kyverno.io/v1alpha1 +kind: Test +metadata: + name: scheduledbackups +spec: + timeouts: + apply: 1s + assert: 1m + cleanup: 1m + steps: + - name: Install a cluster with ScheduledBackups + try: + - script: + content: | + helm upgrade \ + --install \ + --namespace $NAMESPACE \ + --values ./01-scheduledbackups_cluster.yaml \ + --wait \ + scheduledbackups ../../ + - assert: + file: ./01-scheduledbackups_cluster-assert.yaml + - name: Cleanup + try: + - script: + content: | + helm uninstall --namespace $NAMESPACE scheduledbackups diff --git a/charts/paradedb/values.yaml b/charts/paradedb/values.yaml index c8b37b757..38c51419a 100644 --- a/charts/paradedb/values.yaml +++ b/charts/paradedb/values.yaml @@ -15,8 +15,8 @@ version: # -- PostgreSQL major version to use postgresql: "17" # -- The ParadeDB version, set in the publish CI workflow from the latest paradedb/paradedb GitHub tag - # -- We default to v0.14.0 for testing and local development - paradedb: "0.14.0" + # -- We default to v0.14.1 for testing and local development + paradedb: "0.14.1" ### # -- Cluster mode of operation. Available modes: @@ -302,7 +302,9 @@ cluster: postgresql: # -- PostgreSQL configuration options (postgresql.conf) - parameters: {} + parameters: + # Required by pg_cron + cron.database_name: postgres # max_connections: 300 # -- Quorum-based Synchronous Replication synchronous: {} diff --git a/index.yaml b/index.yaml new file mode 100644 index 000000000..2d2a0faf4 --- /dev/null +++ b/index.yaml @@ -0,0 +1,279 @@ +apiVersion: v1 +entries: + paradedb: + - apiVersion: v2 + created: "2024-10-02T22:46:51.40228075Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: 6b1c84e48637b79635381f1a2ac7e2cf13bfbd72e143bf9722939d239b63add4 + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.10/paradedb-0.8.10.tgz + version: 0.8.10 + - apiVersion: v2 + created: "2024-10-02T19:31:17.904439454Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: d31da5aef28ee3292485c1f263fdf8377f84952b767193761ff654dc076863f0 + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.9/paradedb-0.8.9.tgz + version: 0.8.9 + - apiVersion: v2 + created: "2024-10-02T18:37:45.582085463Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: e5abd53b8666c8819ffedf19de3a6de6df474d8ddcc16d2686fd618d460e9e54 + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.8/paradedb-0.8.8.tgz + version: 0.8.8 + - apiVersion: v2 + created: "2024-10-01T00:53:47.918864053Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: 545f6d621043345606a58bfa0d934cb77cadbc2efbcbce521630189fc9443903 + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.7/paradedb-0.8.7.tgz + version: 0.8.7 + - apiVersion: v2 + created: "2024-09-30T11:50:17.726286399Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: ebf83016e9e7084ff12f2811724eb872d8400ecf230de75396b697808eb9859e + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.6/paradedb-0.8.6.tgz + version: 0.8.6 + - apiVersion: v2 + created: "2024-09-27T13:09:12.558417042Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: 6202b1fee664f6d5c032e7a23d2b9c6c92371a10c6b8ea8b3002bdb31087594b + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.5/paradedb-0.8.5.tgz + version: 0.8.5 + - apiVersion: v2 + created: "2024-09-26T10:58:41.004221261Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: 27ab88d31251f42f8936308d8b87ea551b24fc267d6e7f95098e2abd183f6fde + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.4/paradedb-0.8.4.tgz + version: 0.8.4 + - apiVersion: v2 + created: "2024-09-25T12:42:49.716725438Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: a0d4d5cbc120f8baedbe88f567e695f9ac3021142ddd320f2c06e190dc0b438c + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.3/paradedb-0.8.3.tgz + version: 0.8.3 + - apiVersion: v2 + created: "2024-09-25T12:39:46.772527051Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: 9a71a3f8fd4bc65ac9b7de4c02709e909da52fd0c0bae77c253dcd6778945d98 + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.2/paradedb-0.8.2.tgz + version: 0.8.2 + - apiVersion: v2 + created: "2024-09-24T23:19:33.988229934Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: bfa145d01808ff3f04486c5d2f9997e1504039f9ea7005d49f60d0f69cb7d22a + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.1/paradedb-0.8.1.tgz + version: 0.8.1 + - apiVersion: v2 + created: "2024-09-24T21:06:27.090681093Z" + description: Deploys and manages a ParadeDB CloudNativePG cluster and its associated + resources. + digest: 78e932999f0717c832b938af926dca544bc58a59f4a610e22d83bd4fe464d49d + home: https://paradedb.com + icon: https://raw.githubusercontent.com/paradedb/paradedb/main/docs/logo/light.svg + keywords: + - paradedb + - pg_search + - pg_analytics + - postgresql + - postgres + - database + maintainers: + - email: support@paradedb.com + name: ParadeDB + url: https://paradedb.com + name: paradedb + sources: + - https://github.com/paradedb/charts + type: application + urls: + - https://github.com/paradedb/charts/releases/download/paradedb-0.8.0/paradedb-0.8.0.tgz + version: 0.8.0 +generated: "2024-10-02T22:46:51.402322047Z"