Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion charts/statgpt/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,4 @@ maintainers:
name: statgpt
sources:
- https://github.com/epam/statgpt-helm
version: 1.0.2
version: 1.0.3
14 changes: 8 additions & 6 deletions charts/statgpt/README.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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 |
Expand Down Expand Up @@ -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 |
Expand Down
89 changes: 62 additions & 27 deletions charts/statgpt/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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:
Expand All @@ -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
Expand Down