diff --git a/charts/statgpt/Chart.yaml b/charts/statgpt/Chart.yaml index b5647b2..6eccf39 100644 --- a/charts/statgpt/Chart.yaml +++ b/charts/statgpt/Chart.yaml @@ -54,4 +54,4 @@ maintainers: name: statgpt sources: - https://github.com/epam/statgpt-helm -version: 1.0.2 +version: 1.0.3 diff --git a/charts/statgpt/README.md b/charts/statgpt/README.md index 347b3e3..4a7cf10 100644 --- a/charts/statgpt/README.md +++ b/charts/statgpt/README.md @@ -1,6 +1,6 @@ # statgpt -![Version: 1.0.2](https://img.shields.io/badge/Version-1.0.2-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) +![Version: 1.0.3](https://img.shields.io/badge/Version-1.0.3-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) Umbrella chart for StatGPT solution @@ -97,7 +97,7 @@ helm install my-release . --namespace my-namespace --values values.yaml --set ad | _admin_frontend_version | string | `"0.1.0"` | Admin Frontend version is used for the admin-frontend image tag | | _backend_version | string | `"0.1.0"` | Backend version is used for both chat-backend and admin-backend image tags (must be the same for both) | | _elasticsearch_version | string | `"8.14.3-debian-12-r0"` | Elasticsearch version is used for the elasticsearch image tag | -| _pgvector_image | string | `"pgvector/pgvector:pg16"` | PGVector image is used as a source for extension files for the pgvector component (must be aligned with _postgresql_version) | +| _pgvector_version | string | `"v0.8.1"` | PGVector extension version | | _postgresql_version | string | `"16.3.0-debian-12-r14"` | PostgreSQL version is used for the postgresql image tag | | admin-backend.commonLabels."app.kubernetes.io/component" | string | `"application"` | Kubernetes label to identify the component as an application | | admin-backend.containerPorts.http | int | `8000` | HTTP port for the application | @@ -226,10 +226,12 @@ helm install my-release . --namespace my-namespace --values values.yaml --set ad | pgvector.image.repository | string | `"bitnamilegacy/postgresql"` | Image repository name | | pgvector.image.tag | string | `"16.3.0-debian-12-r14"` | Image tag or version | | pgvector.metrics.image.repository | string | `"bitnamilegacy/postgres-exporter"` | Fix: override deprecated repository with the updated one | -| pgvector.primary.extraVolumeMounts | list | `[{"mountPath":"/opt/bitnami/postgresql/lib","name":"pgvector-extension","subPath":"lib"},{"mountPath":"/opt/bitnami/postgresql/share/extension","name":"pgvector-extension","subPath":"extension"}]` | Mount pgvector extension files to correct Bitnami PostgreSQL paths | -| pgvector.primary.extraVolumes | list | `[{"emptyDir":{},"name":"pgvector-extension"}]` | Shared volume for pgvector extension files | -| pgvector.primary.initContainers | list | `[{"command":["/bin/bash","-c","set -e\necho \"Copying pgvector extension files from official pgvector image...\"\n\n# Create directories in shared volume\nmkdir -p /shared/lib /shared/extension\n\n# Copy pre-built pgvector extension files\ncp /usr/lib/postgresql/*/lib/vector.so /shared/lib/\ncp /usr/share/postgresql/*/extension/vector* /shared/extension/\n\n# Set proper ownership for Bitnami PostgreSQL (user 1001)\nchown -R 1001:1001 /shared\n\necho \"pgvector extension files copied successfully\"\n"],"image":"pgvector/pgvector:pg16","name":"copy-pgvector","securityContext":{"runAsNonRoot":false,"runAsUser":0},"volumeMounts":[{"mountPath":"/shared","name":"pgvector-extension"}]}]` | Copy pgvector extension files from official pgvector image using init container | -| pgvector.primary.initdb | object | `{"scripts":{"01_create_extension.sql":"-- Create the vector extension in the database\n-- Extension files are available from the init container\nCREATE EXTENSION IF NOT EXISTS vector;\n"}}` | Create the vector extension in the database | +| pgvector.pgvectorVersion | string | `"v0.8.1"` | PGVector extension version to build and install | +| pgvector.postgresqlSharedPreloadLibraries | string | `"pgaudit,vector"` | PostgreSQL shared preload libraries including pgaudit for auditing and vector for pgvector extension | +| pgvector.primary.extraVolumeMounts | list | `[{"mountPath":"/opt/bitnami/postgresql/lib","name":"postgresql-files","subPath":"postgresql-files/lib"},{"mountPath":"/opt/bitnami/postgresql/share","name":"postgresql-files","subPath":"postgresql-files/share"}]` | Mount complete PostgreSQL directories (lib and share) with pgvector extension included | +| pgvector.primary.extraVolumes | list | `[{"emptyDir":{},"name":"postgresql-files"}]` | Shared volume for storing complete PostgreSQL directories with pgvector extension | +| pgvector.primary.initContainers | list | `[{"command":["/bin/bash","-c","set -e\necho \"=== Setting up PostgreSQL with pgvector extension ===\"\n\nPGVECTOR_VERSION=\"{{ .Values.pgvectorVersion }}\"\necho \"Installing pgvector version: $PGVECTOR_VERSION\"\n\n# Create directory structure in shared volume\nmkdir -p /shared/postgresql-files/lib /shared/postgresql-files/share\n\n# Copy entire existing PostgreSQL directories to preserve all libraries and extensions\necho \"Copying existing PostgreSQL directories...\"\ncp -r /opt/bitnami/postgresql/lib/* /shared/postgresql-files/lib/\ncp -r /opt/bitnami/postgresql/share/* /shared/postgresql-files/share/\n\n# Install build dependencies for compiling pgvector\necho \"Installing build dependencies...\"\ninstall_packages git build-essential\n\n# Clone and build pgvector from source\necho \"Building pgvector extension version $PGVECTOR_VERSION...\"\ncd /tmp\ngit clone --branch \"$PGVECTOR_VERSION\" https://github.com/pgvector/pgvector.git\ncd pgvector\nexport PG_CONFIG=/opt/bitnami/postgresql/bin/pg_config\nmake clean && make\n\n# Add compiled pgvector files to the copied PostgreSQL directories\necho \"Installing pgvector files...\"\ncp vector.so /shared/postgresql-files/lib/\ncp sql/vector--*.sql /shared/postgresql-files/share/extension/\ncp vector.control /shared/postgresql-files/share/extension/\n\n# Set proper ownership for Bitnami PostgreSQL user\nchown -R 1001:1001 /shared\n\n# Verify installation\necho \"Verifying pgvector installation...\"\nls -la /shared/postgresql-files/lib/vector.so\nls -la /shared/postgresql-files/share/extension/vector.control\n\necho \"=== pgvector $PGVECTOR_VERSION setup completed successfully ===\"\n"],"image":"{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}","name":"setup-pgvector","securityContext":{"runAsNonRoot":false,"runAsUser":0},"volumeMounts":[{"mountPath":"/shared","name":"postgresql-files"}]}]` | Build and install pgvector extension by copying existing PostgreSQL directories and adding pgvector files | +| pgvector.primary.initdb | object | `{"scripts":{"01_create_extension.sql":"-- Create the vector extension in the database\nCREATE EXTENSION IF NOT EXISTS vector;\n\n-- Display installed extensions for verification\n\\dx\n"}}` | Database initialization scripts to create the vector extension after PostgreSQL startup | | pgvector.primary.resources.limits.cpu | string | `"4000m"` | Maximum CPU limit for the container | | pgvector.primary.resources.limits.memory | string | `"4Gi"` | Maximum memory limit for the container | | pgvector.primary.resources.requests.cpu | string | `"2000m"` | Minimum CPU request for resource scheduling | diff --git a/charts/statgpt/values.yaml b/charts/statgpt/values.yaml index 247f6b1..e142ded 100644 --- a/charts/statgpt/values.yaml +++ b/charts/statgpt/values.yaml @@ -4,8 +4,8 @@ _backend_version: &backend_version "0.1.0" _admin_frontend_version: &admin_frontend_version "0.1.0" # -- PostgreSQL version is used for the postgresql image tag _postgresql_version: &postgresql_version "16.3.0-debian-12-r14" -# -- PGVector image is used as a source for extension files for the pgvector component (must be aligned with _postgresql_version) -_pgvector_image: &pgvector_image "pgvector/pgvector:pg16" +# -- PGVector extension version +_pgvector_version: &pgvector_version "v0.8.1" # -- Elasticsearch version is used for the elasticsearch image tag _elasticsearch_version: &elasticsearch_version "8.14.3-debian-12-r0" @@ -386,6 +386,12 @@ pgvector: # username: "" # password: "" + # -- PostgreSQL shared preload libraries including pgaudit for auditing and vector for pgvector extension + postgresqlSharedPreloadLibraries: "pgaudit,vector" + + # -- PGVector extension version to build and install + pgvectorVersion: *pgvector_version + primary: resources: limits: @@ -399,57 +405,86 @@ pgvector: # -- Minimum memory request for resource scheduling memory: "2Gi" - # -- Copy pgvector extension files from official pgvector image using init container + # -- Build and install pgvector extension by copying existing PostgreSQL directories and adding pgvector files initContainers: - - name: copy-pgvector - image: *pgvector_image + - name: setup-pgvector + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}" command: - /bin/bash - -c - | set -e - echo "Copying pgvector extension files from official pgvector image..." - - # Create directories in shared volume - mkdir -p /shared/lib /shared/extension - - # Copy pre-built pgvector extension files - cp /usr/lib/postgresql/*/lib/vector.so /shared/lib/ - cp /usr/share/postgresql/*/extension/vector* /shared/extension/ - - # Set proper ownership for Bitnami PostgreSQL (user 1001) + echo "=== Setting up PostgreSQL with pgvector extension ===" + + PGVECTOR_VERSION="{{ .Values.pgvectorVersion }}" + echo "Installing pgvector version: $PGVECTOR_VERSION" + + # Create directory structure in shared volume + mkdir -p /shared/postgresql-files/lib /shared/postgresql-files/share + + # Copy entire existing PostgreSQL directories to preserve all libraries and extensions + echo "Copying existing PostgreSQL directories..." + cp -r /opt/bitnami/postgresql/lib/* /shared/postgresql-files/lib/ + cp -r /opt/bitnami/postgresql/share/* /shared/postgresql-files/share/ + + # Install build dependencies for compiling pgvector + echo "Installing build dependencies..." + install_packages git build-essential + + # Clone and build pgvector from source + echo "Building pgvector extension version $PGVECTOR_VERSION..." + cd /tmp + git clone --branch "$PGVECTOR_VERSION" https://github.com/pgvector/pgvector.git + cd pgvector + export PG_CONFIG=/opt/bitnami/postgresql/bin/pg_config + make clean && make + + # Add compiled pgvector files to the copied PostgreSQL directories + echo "Installing pgvector files..." + cp vector.so /shared/postgresql-files/lib/ + cp sql/vector--*.sql /shared/postgresql-files/share/extension/ + cp vector.control /shared/postgresql-files/share/extension/ + + # Set proper ownership for Bitnami PostgreSQL user chown -R 1001:1001 /shared - echo "pgvector extension files copied successfully" + # Verify installation + echo "Verifying pgvector installation..." + ls -la /shared/postgresql-files/lib/vector.so + ls -la /shared/postgresql-files/share/extension/vector.control + + echo "=== pgvector $PGVECTOR_VERSION setup completed successfully ===" volumeMounts: - - name: pgvector-extension + - name: postgresql-files mountPath: /shared securityContext: runAsUser: 0 runAsNonRoot: false - # -- Shared volume for pgvector extension files + # -- Shared volume for storing complete PostgreSQL directories with pgvector extension extraVolumes: - - name: pgvector-extension + - name: postgresql-files emptyDir: {} - # -- Mount pgvector extension files to correct Bitnami PostgreSQL paths + # -- Mount complete PostgreSQL directories (lib and share) with pgvector extension included extraVolumeMounts: - - name: pgvector-extension + - name: postgresql-files mountPath: /opt/bitnami/postgresql/lib - subPath: lib - - name: pgvector-extension - mountPath: /opt/bitnami/postgresql/share/extension - subPath: extension + subPath: postgresql-files/lib + - name: postgresql-files + mountPath: /opt/bitnami/postgresql/share + subPath: postgresql-files/share - # -- Create the vector extension in the database + # -- Database initialization scripts to create the vector extension after PostgreSQL startup initdb: scripts: 01_create_extension.sql: | -- Create the vector extension in the database - -- Extension files are available from the init container CREATE EXTENSION IF NOT EXISTS vector; + -- Display installed extensions for verification + \dx + elasticsearch: # -- Indicates whether the elasticsearch service is enabled enabled: false