Postgres operator creates and manages PostgreSQL clusters running in Kubernetes
Go to file
Fredrik Østrem 9ddee8f302
Use cryptographically secure password generation (#854)
The current password generation algorithm is extremely deterministic, due to being based on the standard random number generator with a deterministic seed based on the current Unix timestamp (in seconds).

This can lead to a number of security issues, including:

The same passwords being used in different Kubernetes clusters if the operator is deployed in parallel. (This issue was discovered because of four deployments having the same generated passwords due to automatically being deployed in parallel.)
The passwords being easily guessable based on the time the operator pod started when the database was created. (This would typically be present in logs, metrics, etc., that may typically be accessible to more people than should have database access.)
Fix this issue by replacing the current randomness source with crypto/rand, which should produce cryptographically secure random data that is virtually unguessable. This will avoid both of the above problems as each deployment will be guaranteed to have unique, indeterministic passwords.
2020-03-18 10:28:39 +01:00
charts Fix typo in values file (#861) 2020-03-11 11:32:13 +01:00
cmd define ownership between operator and clusters via annotation (#802) 2020-03-17 16:34:31 +01:00
docker Add region setting for logical backups to non-AWS storage (#813) 2020-02-10 11:48:24 +01:00
docs define ownership between operator and clusters via annotation (#802) 2020-03-17 16:34:31 +01:00
e2e e2e: wait for pods after disabling anti affinity (#862) 2020-03-11 14:08:54 +01:00
hack hack: update shebang (#755) 2019-12-10 14:54:12 +01:00
kubectl-pg omit PgVersion diff on sync (#860) 2020-03-13 11:48:19 +01:00
manifests define ownership between operator and clusters via annotation (#802) 2020-03-17 16:34:31 +01:00
pkg Use cryptographically secure password generation (#854) 2020-03-18 10:28:39 +01:00
ui align UI pipeline with operator (#844) 2020-02-24 17:48:14 +01: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 align UI pipeline with operator (#844) 2020-02-24 17:48:14 +01:00
go.mod add support for custom TLS certificates (#798) 2020-03-13 11:44:38 +01:00
go.sum add support for custom TLS certificates (#798) 2020-03-13 11:44:38 +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