mirror of
https://github.com/databasus/databasus.git
synced 2026-04-06 00:32:03 +02:00
Postgresus Helm Chart
Installation
helm install postgresus ./deploy/helm -n postgresus --create-namespace
After installation, get the external IP:
kubectl get svc -n postgresus
Access Postgresus at http://<EXTERNAL-IP> (port 80).
Configuration
Main Parameters
| Parameter | Description | Default Value |
|---|---|---|
namespace.create |
Create namespace | true |
namespace.name |
Namespace name | postgresus |
image.repository |
Docker image | rostislavdugin/postgresus |
image.tag |
Image tag | latest |
image.pullPolicy |
Image pull policy | Always |
replicaCount |
Number of replicas | 1 |
Resources
| Parameter | Description | Default Value |
|---|---|---|
resources.requests.memory |
Memory request | 1Gi |
resources.requests.cpu |
CPU request | 500m |
resources.limits.memory |
Memory limit | 1Gi |
resources.limits.cpu |
CPU limit | 500m |
Storage
| Parameter | Description | Default Value |
|---|---|---|
persistence.enabled |
Enable persistent storage | true |
persistence.storageClassName |
Storage class | "" (cluster default) |
persistence.accessMode |
Access mode | ReadWriteOnce |
persistence.size |
Storage size | 10Gi |
persistence.mountPath |
Mount path | /postgresus-data |
Service
| Parameter | Description | Default Value |
|---|---|---|
service.type |
Service type | LoadBalancer |
service.port |
External port | 80 |
service.targetPort |
Container port | 4005 |
service.headless.enabled |
Enable headless service | true |
Traffic Exposure (3 Options)
The chart supports 3 ways to expose Postgresus:
| Method | Use Case | Default |
|---|---|---|
| LoadBalancer/NodePort | Simple cloud clusters | Enabled |
| Ingress | Traditional nginx/traefik ingress controllers | Disabled |
| HTTPRoute (Gateway API) | Modern gateways (Istio, Envoy, Cilium) | Disabled |
Ingress
| Parameter | Description | Default Value |
|---|---|---|
ingress.enabled |
Enable Ingress | false |
ingress.className |
Ingress class | nginx |
ingress.hosts[0].host |
Hostname | postgresus.example.com |
ingress.tls |
TLS configuration | [] |
HTTPRoute (Gateway API)
| Parameter | Description | Default Value |
|---|---|---|
route.enabled |
Enable HTTPRoute | false |
route.apiVersion |
Gateway API version | gateway.networking.k8s.io/v1 |
route.hostnames |
Hostnames for the route | ["postgresus.example.com"] |
route.parentRefs |
Gateway references | [] |
route.annotations |
Route annotations | {} |
Health Checks
| Parameter | Description | Default Value |
|---|---|---|
livenessProbe.enabled |
Enable liveness probe | true |
readinessProbe.enabled |
Enable readiness probe | true |
Examples
Basic Installation (LoadBalancer on port 80)
Default installation exposes Postgresus via LoadBalancer on port 80:
helm install postgresus ./deploy/helm -n postgresus --create-namespace
Access via http://<EXTERNAL-IP>
Using NodePort
If your cluster doesn't support LoadBalancer:
# nodeport-values.yaml
service:
type: NodePort
port: 80
targetPort: 4005
nodePort: 30080
helm install postgresus ./deploy/helm -n postgresus --create-namespace -f nodeport-values.yaml
Access via http://<NODE-IP>:30080
Enable Ingress with HTTPS
For domain-based access with TLS:
# ingress-values.yaml
service:
type: ClusterIP
port: 4005
targetPort: 4005
ingress:
enabled: true
className: nginx
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
hosts:
- host: backup.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: backup-example-com-tls
hosts:
- backup.example.com
helm install postgresus ./deploy/helm -n postgresus --create-namespace -f ingress-values.yaml
HTTPRoute (Gateway API)
For clusters using Istio, Envoy Gateway, Cilium, or other Gateway API implementations:
# httproute-values.yaml
service:
type: ClusterIP
route:
enabled: true
hostnames:
- backup.example.com
parentRefs:
- name: my-gateway
namespace: istio-system
helm install postgresus ./deploy/helm -n postgresus --create-namespace -f httproute-values.yaml
Custom Storage Size
# storage-values.yaml
persistence:
size: 50Gi
storageClassName: "fast-ssd"
helm install postgresus ./deploy/helm -n postgresus --create-namespace -f storage-values.yaml