caio-imperial opened a new pull request, #20:
URL: https://github.com/apache/hertzbeat-helm-chart/pull/20
## What's changed?
This PR adds support for using an external PostgreSQL database instead of
the built-in database in the HertzBeat Helm chart. The implementation supports
both direct value configuration and Kubernetes Secret-based configuration for
enhanced security.
### New Configuration Options
Added new values under `database.external`:
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `database.external.host.value` | string | `""` | External PostgreSQL host
(direct value) |
| `database.external.host.valueFrom` | object | `{}` | External PostgreSQL
host via Secret |
| `database.external.port.value` | string | `5432` | External PostgreSQL
port |
| `database.external.port.valueFrom` | object | `{}` | External PostgreSQL
port via Secret |
| `database.external.username.value` | string | `root` | External PostgreSQL
username |
| `database.external.username.valueFrom` | object | `{}` | External
PostgreSQL username via Secret |
| `database.external.password.value` | string | `""` | External PostgreSQL
password |
| `database.external.password.valueFrom` | object | `{}` | External
PostgreSQL password via Secret |
| `database.external.database.value` | string | `hertzbeat` | External
PostgreSQL database name |
| `database.external.database.valueFrom` | object | `{}` | External database
name via Secret |
### Templates Modified
- `templates/_helpers.tpl` - Added database helper functions for cleaner
configuration
- `templates/database/configmap.yaml` - Conditionally renders internal DB
init script only when external DB is not configured
- `templates/database/pvc.yaml` - Conditionally renders PVC only when
internal DB is used
- `templates/database/service.yaml` - Conditionally renders service only
when internal DB is used
- `templates/database/statefulset.yaml` - Conditionally renders internal DB
StatefulSet only when external DB is not configured
- `templates/manager/configmap.yaml` - Updated datasource configuration to
support external database (simplified with helpers)
- `templates/manager/deployment.yaml` - Added environment variables for
secret-based database credentials
## Usage Examples
### Using direct values:
```yaml
database:
external:
host:
value: "postgres.example.com"
port:
value: 5432
username:
value: "admin"
password:
value: "password123"
database:
value: "hertzbeat"
```
### Using Kubernetes Secrets (recommended):
```yaml
database:
external:
host:
valueFrom:
secretKeyRef:
name: hertzbeat-db-secret
key: host
username:
valueFrom:
secretKeyRef:
name: hertzbeat-db-secret
key: username
password:
valueFrom:
secretKeyRef:
name: hertzbeat-db-secret
key: password
database:
valueFrom:
secretKeyRef:
name: hertzbeat-db-secret
key: database
```
When using secrets, create the secret first:
```bash
kubectl create secret generic hertzbeat-db-secret \
--from-literal=host=postgres.example.com \
--from-literal=username=admin \
--from-literal=password=password123 \
--from-literal=database=hertzbeat
```
## Behavior
- When `database.external.host.value` or `database.external.host.valueFrom`
is set, the chart uses the external database
- Internal database components (StatefulSet, Service, PVC, ConfigMap init
script) are not rendered
- Environment variables are automatically injected from Secrets when using
`valueFrom`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]