External PostgreSQL
By default, Hydrolix provisions an internal PostgreSQL instance to store the catalog. For the best performance when processing production-scale data loads, use an external instance of PostgreSQL. An external instance exists outside of the Kubernetes cluster that runs Hydrolix. This page describes how to configure an external PostgreSQL instance for a Hydrolix instance running on AWS.
This Guide Only Applies to New Deployments
This guide explains how to initially configure a Hydrolix instance to use an external PostgreSQL instance. To migrate a an existing Hydrolix cluster to an external PostgreSQL instance, see Migrate to External PostgreSQL.
Configure RDS PostgreSQL⚓︎
The RDS PostgreSQL instance needs to be in the same account, VPC & AWS region as your EKS cluster. You will need this information to complete the creation on the instances.
Run the following command to find the VPC ID of your cluster:
-
In the AWS console, switch to the RDS service and click create Database. Select PostgreSQL and Engine version 11.12-R1 or greater.

-
Select the "Production" template. Choose the "Multi-AZ DB instance" availability and durability option. Enter a database name.

-
Supply a root username and password; Hydrolix uses these to access the database.

-
In the storage section, select the general purpose gp3 storage type with 100 GiB of allocated storage.

-
In the connectivity section, select the VPC ID associated with your EKS cluster. The dropdown lists all VPC in the region as: VPC Tag name (VPC ID). Select the default DB Subnet group.
📘 If you don't know your VPC ID, see the command provided at the beginning of this guide.
1 | |
-
Select both EKS cluster & node security groups from the
Existing VPC security groupsdropdown list. Use the default certificate authority and password authentication. -
Disable the following settings by unchecking their checkboxes:
-
Turn on Performance Insight -
Enable auto minor version upgrade. -
Click
Create Databaseto confirm your settings.
It takes about 10 minutes to create your database. When ready, AWS provides an endpoint to connect to your database. Find this endpoint in the Connectivity & security tab of the database details page. Use this endpoint as the catalog_db_host in the next step.
Define the External PostgreSQL Connection⚓︎
Disable the internal PostgreSQL instance by setting scale.postgres.replicas to 0. Provide values for catalog_db_admin_user, catalog_db_admin_db, and catalog_db_host so your Hydrolix instance can connect to your newly created external PostgreSQL endpoint:
Use the following command to replace the environment variables above with their values, sourced from environment variables defined in env.sh when you initially prepared your cluster:
Create Secret⚓︎
Store the PostgreSQL secret within a curated Kubernetes secret:
Apply your configuration⚓︎
Run the following commands to add the secret and apply the settings to your Kubernetes cluster:
Already Running Cluster
If your cluster is already running, run the following command to redeploy the cluster with these settings applied:
kubectl rollout restart deployment