Files
databasus/deploy/helm
2025-12-03 07:43:00 +03:00
..
2025-12-02 17:01:38 -05:00
2025-12-02 08:44:46 -05:00
2025-12-02 08:44:46 -05:00
2025-12-02 17:01:38 -05: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