> ## Documentation Index
> Fetch the complete documentation index at: https://docs.localops.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Postgres

This guide will walk you through the steps to add a PostgreSQL database to an existing Helm chart for your Kubernetes
application. Helm charts help manage Kubernetes applications using templates, and adding PostgreSQL will involve
integrating the Bitnami PostgreSQL Helm chart as a dependency and configuring it appropriately.

## Steps

### 1. Add PostgreSQL Helm Repository

First, add the Bitnami repository, which hosts the PostgreSQL Helm chart,

```shell theme={null}
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
```

### 2. Update `Chart.yaml`

Open your existing Helm chart directory and edit the Chart.yaml file to add PostgreSQL as a dependency,

```yaml Chart.yaml theme={null}
apiVersion: v2
name: your-app
description: A Helm chart for your Kubernetes application
version: 0.1.0
appVersion: '1.0'

dependencies:
  - name: postgresql
    version: 12.1.9
    repository: https://charts.bitnami.com/bitnami
```

### 3. Update `values.yaml`

Create or update the values.yaml file to include configuration values for PostgreSQL. You can customize the values based
on your requirements. Refer to
[https://github.com/bitnami/charts/blob/main/bitnami/postgresql/README.md#parameters](https://github.com/bitnami/charts/blob/main/bitnami/postgresql/README.md#parameters)
for all configuration options provided by PostgresSql helm chart.

```yaml values.yaml theme={null}
postgresql:
  enabled: true
  global:
    postgresql:
      auth:
        postgresqlPassword: mysecretpassword
  primary:
    persistence:
      enabled: true
      size: 50Gi
```

<Tip>
  Over-provisioning on disk size (`primary.persistence.size`) isn't a bad idea considering that disks are cheap in any
  cloud. It is also slightly trickier to increase volume sizes at later point in time due to some Kubernetes
  limitations. So we recommend you pick a good number here from the start.
</Tip>

### 4. Install/Update Dependencies

Navigate to your Helm chart directory and run the following command to update dependencies,

```shell theme={null}
helm dependency update
```

### 5. Update Your Application Deployment

Modify your application's deployment files to include the PostgreSQL service. Ensure your application can connect to
PostgreSQL using the service name and credentials specified in the `values.yaml` file.

For example, if using a **ConfigMap** to store environment variables for your application, you might update it like
this,

```yaml templates/configmap.yaml theme={null}
apiVersion: v1
kind: ConfigMap
metadata:
  name: your-app-config
data:
  DATABASE_HOST: {{ .Release.Name }}-postgresql
  DATABASE_PORT: '5432'
  DATABASE_USER: 'postgres'
  DATABASE_PASSWORD: 'mysecretpassword'
  DATABASE_NAME: 'yourdbname'
```

### 6. Deploy Your Application

Finally, deploy or upgrade your application using Helm,

```shell theme={null}
helm install your-app ./your-app-chart
# or if upgrading an existing release
helm upgrade your-app ./your-app-chart
```

### 7. Verify Deployment

Check the status of your Helm release to ensure everything is running correctly,

```shell theme={null}
helm status your-app
```

##### Also, verify that the PostgreSQL pod is running,

```shell theme={null}
kubectl get pods
```

You should see a pod for PostgreSQL, something like `your-app-postgresql-0`.

Congratulations! You have successfully added PostgreSQL to your existing Helm chart. This integration allows your
application to use PostgreSQL as its database, managed efficiently with Helm. You can further customize the PostgreSQL
configuration by modifying the values.yaml file as needed.
