Postgres Operator is configured through the upstream Zalando Postgres Operator chart as well as a UDS configuration chart. It implements a database for many applications within UDS Software Factory when one is not available in your cloud provider.
Network policies are controlled via the uds-postgres-config
chart in accordance with the common patterns for networking within UDS Software Factory. Because Postgres does not interact with external resources like object storage it only implements custom
networking for the postgres-operator
namespace:
custom
: sets custom network policies for thepostgres-operator
namespace (as a break glass in case you deploy your own postgres cluster custom resources - see below)
Postgres Operator is configured through acid.zalan.do/v1
Postgresql
custom resources. The uds-postgres-config
chart creates one of these by default which is configurable through the following:
postgresql.enabled
: whether to create the defaultPostgresql
custom resource (if disabled you will need to apply your own CRs to the cluster)postgresql.teamId
: the name of the team the cluster belongs to (i.e.uds
)postgresql.volume.size
: the size of the database on disk (i.e.1Gi
)postgresql.numberOfInstances
: The number of cluster Pods to run in the cluster (i.e.2
)postgresql.users
: The users to create for the database in the form{namespace}.{username}
(i.e.gitlab.gitlab: []
)postgresql.databases
: The database names to create and the users they map to (i.e.gitlabdb: gitlab.gitlab
)postgresql.version
: The version of Postgres to run (i.e.14
)postgresql.ingress
: A list of ingress entries to create for this cluster (follows the custom networking definition except fordirection
which is alwaysIngress
andselector
which is alwayscluster-name: pg-cluster
)postgresql.resources
: A Kubernetes Pod resource specification to define requests and limitspostgresql.additionalVolumes
: A list of additional volumes to map into the Postgres container if needed (see below)postgresql.tls
: TLS configuration for the Postgres cluster to use (follows thetls
section of the Zalando Postgres CR)
Postgres Operator can also support HugePages by setting the following keys appropriately for your environment. You can learn more about HugePages in Kubernetes in their Manage HugePages documentation and learn more about these fields in the Postgresql
custom resource reference documentation.
postgresql.resources
: This allows you to set the desired hugepageslimits
andrequests
postgresql.additionalVolumes
: This allows you to map the correct hugepages volumes into the container, e.g.:
- name: hugepage-2mi
mountPath: /hugepages-2Mi
volumeSource:
emptyDir:
medium: HugePages-2Mi