|
1 | 1 |
|
2 | | -# CYBERTEC PG Operator |
| 2 | +# CYBERTEC PG Operator (CPO) |
3 | 3 |
|
4 | | -CPO (CYBERTEC PG Operator) allows you to create and run PostgreSQL clusters on Kubernetes. |
| 4 | +**The CYBERTEC PG Operator (CPO)** is a powerful Kubernetes operator that dramatically simplifies the creation and management of highly available **PostgreSQL clusters**. |
| 5 | +Fully integrated with GitOps/CI/CD workflows and infrastructure-as-code principles, CPO enables consistent, secure and automated database provisioning - **without direct access to the Kubernetes API**. |
5 | 6 |
|
6 | | -The operator reduces your efforts and simplifies the administration of your PostgreSQL clusters so that you can concentrate on other things. |
7 | | -<img src="docs/diagrams/cpo_logo.svg" width="350"> |
| 7 | + |
8 | 8 |
|
9 | | -The Postgres Operator delivers an easy to run highly-available [PostgreSQL](https://www.postgresql.org/) |
10 | | -clusters on Kubernetes (K8s) powered by [Patroni](https://github.com/zalando/patroni). |
11 | | -It is configured only through Postgres manifests (CRDs) to ease integration into automated CI/CD |
12 | | -pipelines with no access to Kubernetes API directly, promoting infrastructure as code vs manual operations. |
| 9 | +--- |
| 10 | + |
| 11 | +## Highlights |
| 12 | + |
| 13 | +- **Completely declarative configuration** via custom resources |
| 14 | +- Highly available PostgreSQL clusters** with [Patroni](https://github.com/zalando/patroni) |
| 15 | +- Seamless integration into CI/CD pipelines** (e.g. ArgoCD, Flux) |
| 16 | +- Compatible with OpenShift** |
| 17 | +- **Support for cloud & on-prem environments** |
| 18 | + |
| 19 | +--- |
13 | 20 |
|
14 | 21 | ### Operator features |
15 | 22 |
|
16 | | -* Rolling updates on Postgres cluster changes, incl. quick minor version updates |
17 | | -* Live volume resize without pod restarts if supported by the storage-system (PVC) |
18 | | -* Database connection pooling with pgBouncer |
19 | | -* Support fast in place major version upgrade. Supports global upgrade of all clusters. |
20 | | -* Restore and cloning Postgres clusters on PVC, AWS, GCS and Azure |
21 | | -* Client-side backup encryption |
22 | | -* Standby cluster |
23 | | -* Patroni-Multisite-Cluster with automatic failover |
24 | | -* Configurable for non-cloud environments |
25 | | -* Basic credential and user management on K8s, eases application deployments |
26 | | -* Support for custom TLS certificates |
27 | | -* Support for AWS EBS gp2 to gp3 migration, supporting iops and throughput configuration |
28 | | -* Compatible with OpenShift |
29 | | -* TDE-Integration with [CYBERTEC PGEE](https://www.cybertec-postgresql.com/en/products/cybertec-postgresql-enterprise-edition/) |
30 | | - |
31 | | -### PostgreSQL features |
32 | | - |
33 | | -* Supports PostgreSQL 17, starting from 13+ |
34 | | -* Streaming replication cluster via Patroni |
35 | | -* Integrated backup solution, automatic backups and very easy restore (Backup & PITR) |
36 | | -* Rolling update procedure for adjustments to the pods and minor updates |
37 | | -* Major upgrade with minimum interruption time |
38 | | -* Reduction of downtime thanks to redundancy, pod anti-affinity, auto-failover and self-healing |
39 | | -* Supports PostgreSQL 17, starting from 13+ |
40 | | -* Several extensions such as Postgis, TimescaleDB, pgAudit and many more are included |
41 | | -* Streaming replication cluster via Patroni |
42 | | -* Point-In-Time-Recovery with |
43 | | -[pg_basebackup](https://www.postgresql.org/docs/16/app-pgbasebackup.html) / |
44 | | -[pgBackRest](https://pgbackrest.org/) via [CYBERTEC-pg-container](https://github.com/cybertec-postgresql/CYBERTEC-pg-container) |
45 | | -[pg_stat_statements](https://www.postgresql.org/docs/16/pgstatstatements.html), |
46 | | -* Incl. popular Postgres extensions such as |
47 | | -[pgaudit](https://github.com/pgaudit/pgaudit), |
48 | | -[pgauditlogtofile](https://github.com/fmbiete/pgauditlogtofile), |
49 | | -<!-- [pg_partman](https://github.com/pgpartman/pg_partman), --> |
50 | | -[postgis](https://postgis.net/), |
51 | | -[set_user](https://github.com/pgaudit/set_user) |
52 | | -[pg_cron](https://github.com/citusdata/pg_cron), |
53 | | -[timescaledb](https://github.com/timescale/timescaledb) |
54 | | -[credcheck](https://github.com/MigOpsRepos/credcheck) |
55 | | - |
56 | | -The Operator project is being driven forward by CYBERTEC and is currently in production at various locations. |
57 | | - |
58 | | -## Supported Postgres & K8s versions |
59 | | - |
60 | | -| Release | Postgres versions | pgBackRest versions | Patroni versions | K8s versions | Golang | |
61 | | -| :-------- | :---------------: | :-------------------: | :--------------: | :----------------:| :-----: | |
62 | | -| 0.8.0 | 13 → 17 | 2.53 | 4.0.2 | 1.21+ | 1.21.7 | |
63 | | -| 0.8.3 | 13 → 17 | 2.54-2 | 4.0.5 | 1.21+ | 1.22.12 | |
64 | | - |
65 | | - |
66 | | -## Getting started |
67 | | - |
68 | | -[Getting started - Documentation](https://cybertec-postgresql.github.io/CYBERTEC-pg-operator/quickstart/) |
69 | | - |
70 | | -[Tutorials](https://github.com/cybertec-postgresql/CYBERTEC-operator-tutorials). |
| 23 | +- Rolling updates for cluster changes & minor version upgrades |
| 24 | +- Live Volume Resize (without pod restarts if supported by storage) |
| 25 | +- Database Connection Pooling via **pgBouncer** |
| 26 | +- In-place major upgrades of all clusters (fast & secure) |
| 27 | +- Backup & restore to PVC, AWS, GCS and Azure |
| 28 | +- Client-side backup encryption |
| 29 | +- Support for standby clusters & multi-site topologies |
| 30 | +- User & credential management at K8s level |
| 31 | +- Support for own TLS certificates |
| 32 | +- TDE integration** with [CYBERTEC PGEE](https://www.cybertec-postgresql.com/en/products/cybertec-postgresql-enterprise-edition/) |
| 33 | +- Migration from AWS EBS `gp2` to `gp3` with IOPS and throughput config |
| 34 | + |
| 35 | +--- |
| 36 | + |
| 37 | +## PostgreSQL features |
| 38 | + |
| 39 | +- PostgreSQL 13 to 17 |
| 40 | +- Streaming replication via **Patroni** |
| 41 | +- Fully integrated backup & PITR with `pgBackRest` or `pg_basebackup` |
| 42 | +- Extensions like: |
| 43 | +- [PostGIS](https://postgis.net/) |
| 44 | +- pgAudit](https://github.com/pgaudit/pgaudit) |
| 45 | +- TimescaleDB](https://github.com/timescale/timescaledb) |
| 46 | +- pg_cron](https://github.com/citusdata/pg_cron) |
| 47 | +- credcheck](https://github.com/MigOpsRepos/credcheck) |
| 48 | +- set_user](https://github.com/pgaudit/set_user) |
| 49 | +- Minimal downtime during upgrades thanks to rolling updates and failover mechanisms |
| 50 | +- Self-healing, redundancy and pod anti-affinity for maximum availability |
| 51 | + |
| 52 | +--- |
| 53 | + |
| 54 | +## Compatibility |
| 55 | + |
| 56 | +| Release | PostgreSQL | pgBackRest | Patroni | Kubernetes | Go | |
| 57 | +|---------|------------|------------|---------|------------|---------| |
| 58 | +| 0.8.0 | 13 - 17 | 2.53 | 4.0.2 | 1.21+ | 1.21.7 | |
| 59 | +| 0.8.3 | 13 - 17 | 2.54-2 | 4.0.5 | 1.21+ | 1.22.12 | |
| 60 | + |
| 61 | +--- |
71 | 62 |
|
| 63 | +## Getting Started |
| 64 | + |
| 65 | +Want to get started quickly? This way: |
| 66 | + |
| 67 | +- [Quickstart-Guide (documentation)](https://cybertec-postgresql.github.io/CYBERTEC-pg-operator/quickstart/) |
| 68 | +- [Tutorials & examples](https://github.com/cybertec-postgresql/CYBERTEC-operator-tutorials) |
| 69 | + |
| 70 | +--- |
72 | 71 |
|
73 | 72 | ## Documentation |
74 | 73 |
|
75 | | -There is a browser-friendly version of this documentation at |
76 | | -[CPO-Documentation](https://cybertec-postgresql.github.io/CYBERTEC-pg-operator/) |
| 74 | +You can find the complete and searchable documentation here: |
| 75 | + |
| 76 | +- [Official Documentation](https://cybertec-postgresql.github.io/CYBERTEC-pg-operator/) |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## Licence |
| 81 | + |
| 82 | +This project is licensed under the **Apache 2.0 licence**. Further information can be found in the [LICENSE](./LICENSE) file. |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +## participate |
77 | 87 |
|
| 88 | +Pull requests and feedback are always welcome. Please read our [Contribution Guidelines](CONTRIBUTING.md) in advance if you would like to participate. |
78 | 89 |
|
| 90 | +--- |
0 commit comments