Postgres operator creates and manages PostgreSQL clusters running in Kubernetes
Go to file
Jonathan Juares Beber ba60e15d07 Add ServiceAnnotations cluster config (#803)
The [operator parameters][1] already support the
`custom_service_annotations` config.With this parameter is possible to
define custom annotations that will be used on the services created by the
operator. The `custom_service_annotations` as all the other
[operator parameters][1] are defined on the operator level and do not allow
customization on the cluster level. A cluster may require different service
annotations, as for example, set up different cloud load balancers
timeouts, different ingress annotations, and/or enable more customizable
environments.

This commit introduces a new parameter on the cluster level, called
`serviceAnnotations`, responsible for defining custom annotations just for
the services created by the operator to the specifically defined cluster.
It allows a mix of configuration between `custom_service_annotations` and
`serviceAnnotations` where the latest one will have priority. In order to
allow custom service annotations to be used on services without
LoadBalancers (as for example, service mesh services annotations) both
`custom_service_annotations` and `serviceAnnotations` are applied
independently of load-balancing configuration. For retro-compatibility
purposes, `custom_service_annotations` is still under
[Load balancer related options][2]. The two default annotations when using
LoadBalancer services, `external-dns.alpha.kubernetes.io/hostname` and
`service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout` are
still defined by the operator.
`service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout` can
be overridden by `custom_service_annotations` or `serviceAnnotations`,
allowing a more customizable environment.
`external-dns.alpha.kubernetes.io/hostname` can not be overridden once
there is no differentiation between custom service annotations for
replicas and masters.

It updates the documentation and creates the necessary unit and e2e
tests to the above-described feature too.

[1]: https://github.com/zalando/postgres-operator/blob/master/docs/reference/operator_parameters.md
[2]: https://github.com/zalando/postgres-operator/blob/master/docs/reference/operator_parameters.md#load-balancer-related-options
2020-02-10 12:03:25 +01:00
charts Add ServiceAnnotations cluster config (#803) 2020-02-10 12:03:25 +01:00
cmd reflect change in github url (#496) 2019-02-25 11:26:55 +01:00
docker Add region setting for logical backups to non-AWS storage (#813) 2020-02-10 11:48:24 +01:00
docs Add ServiceAnnotations cluster config (#803) 2020-02-10 12:03:25 +01:00
e2e Add ServiceAnnotations cluster config (#803) 2020-02-10 12:03:25 +01:00
hack hack: update shebang (#755) 2019-12-10 14:54:12 +01:00
kubectl-pg [GSoC 2019] kubectl plugin for the Postgres operator (#579) 2019-08-27 12:51:21 +02:00
manifests Add ServiceAnnotations cluster config (#803) 2020-02-10 12:03:25 +01:00
pkg Add ServiceAnnotations cluster config (#803) 2020-02-10 12:03:25 +01:00
ui move StatefulSet to apps/v1 (#675) 2019-09-30 16:42:04 +02:00
.flake8 Implement runner for e2e tests (#548) 2019-06-05 17:07:27 +02:00
.gitignore install kind as GO module (#742) 2019-11-28 17:39:25 +01:00
.golangci.yml add .golangci.yml (#422) 2018-11-27 12:00:15 +01:00
.travis.yml Replace glide with Go modules (#544) 2019-10-02 16:18:55 +02:00
.zappr.yaml Restore .zappr.yaml (#405) 2018-11-07 13:06:53 +01:00
CODEOWNERS Add Rafia to code owners (#588) 2019-06-14 14:56:40 +02:00
CONTRIBUTING.md Update docs for v1.2 (#609) 2019-07-11 17:19:27 +02:00
LICENSE update copyright in generated code (#779) 2020-01-02 17:34:49 +01:00
MAINTAINERS [WIP] Draft codeowners, update maintainers (#358) 2018-08-06 08:59:00 +02:00
Makefile go.mod: fix dependencies (#754) 2019-12-12 17:27:40 +01:00
README.md make run.sh executable from within e2e (#619) 2019-07-24 15:07:32 +02:00
SECURITY.md docs(general): Adding Security.md (#88) 2017-09-04 14:33:30 +02:00
build-ci.sh reflect change in github url (#496) 2019-02-25 11:26:55 +01:00
delivery.yaml Add CRD validation (#599) 2019-11-28 12:02:05 +01:00
go.mod go.mod: fix dependencies (#754) 2019-12-12 17:27:40 +01:00
go.sum go.mod: fix dependencies (#754) 2019-12-12 17:27:40 +01:00
mkdocs.yml use h1 tags to not render titles in sidebar (#626) 2019-07-19 12:50:39 +02:00
run_operator_locally.sh Add CRD validation (#599) 2019-11-28 12:02:05 +01:00

README.md

Postgres Operator

Build Status Coverage Status Go Report Card GoDoc golangci

The Postgres Operator enables highly-available PostgreSQL clusters on Kubernetes (K8s) powered by Patroni. It is configured only through manifests to ease integration into automated CI/CD pipelines with no access to Kubernetes directly.

Operator features

  • Rolling updates on Postgres cluster changes
  • Volume resize without Pod restarts
  • Cloning Postgres clusters
  • Logical Backups to S3 Bucket
  • Standby cluster from S3 WAL archive
  • Configurable for non-cloud environments
  • UI to create and edit Postgres cluster manifests

PostgreSQL features

The Postgres Operator has been developed at Zalando and is being used in production for over two years.

Getting started

For a quick first impression follow the instructions of this tutorial.

Documentation

There is a browser-friendly version of this documentation at postgres-operator.readthedocs.io

Google Summer of Code

The Postgres Operator made it to the Google Summer of Code 2019! Check our ideas and start discussions in the issue tracker.

Community

There are two places to get in touch with the community:

  1. The GitHub issue tracker
  2. The #postgres-operator slack channel