|
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 |
| -* Standby cluster |
22 |
| -* Configurable for non-cloud environments |
23 |
| -* Basic credential and user management on K8s, eases application deployments |
24 |
| -* Support for custom TLS certificates |
25 |
| -* UI to create and edit Postgres cluster manifests |
26 |
| -* Support for AWS EBS gp2 to gp3 migration, supporting iops and throughput configuration |
27 |
| -* Compatible with OpenShift |
28 |
| - |
29 |
| -### PostgreSQL features |
30 |
| - |
31 |
| -* Supports PostgreSQL 16, starting from 10+ |
32 |
| -* Streaming replication cluster via Patroni |
33 |
| -* Integrated backup solution, automatic backups and very easy restore (Backup & PITR) |
34 |
| -* Rolling update procedure for adjustments to the pods and minor updates |
35 |
| -* Major upgrade with minimum interruption time |
36 |
| -* Reduction of downtime thanks to redundancy, pod anti-affinity, auto-failover and self-healing |
37 |
| -* Supports PostgreSQL 16, starting from 10+ |
38 |
| -* Streaming replication cluster via Patroni |
39 |
| -* Point-In-Time-Recovery with |
40 |
| -[pg_basebackup](https://www.postgresql.org/docs/16/app-pgbasebackup.html) / |
41 |
| -[pgBackRest](https://pgbackrest.org/) via [CYBERTEC-pg-container](https://github.com/cybertec-postgresql/CYBERTEC-pg-container) |
42 |
| -[pg_stat_statements](https://www.postgresql.org/docs/16/pgstatstatements.html), |
43 |
| -* Incl. popular Postgres extensions such as |
44 |
| -[pgaudit](https://github.com/pgaudit/pgaudit), |
45 |
| -[pgauditlogtofile](https://github.com/fmbiete/pgauditlogtofile), |
46 |
| -<!-- [pg_partman](https://github.com/pgpartman/pg_partman), --> |
47 |
| -[postgis](https://postgis.net/), |
48 |
| -[set_user](https://github.com/pgaudit/set_user) |
49 |
| -[pg_cron](https://github.com/citusdata/pg_cron), |
50 |
| -[timescaledb](https://github.com/timescale/timescaledb) |
51 |
| -[credcheck](https://github.com/MigOpsRepos/credcheck) |
52 |
| - |
53 |
| -The Operator project is being driven forward by CYBERTEC and is currently in production at various locations. |
54 |
| - |
55 |
| -## Supported Postgres & K8s versions |
56 |
| - |
57 |
| -| Release | Postgres versions | pgBackRest versions | Patroni versions | K8s versions | Golang | |
58 |
| -| :-------- | :---------------: | :-------------------: | :--------------: | :----------------:| :-----: | |
59 |
| -| 0.8.0 | 13 → 17 | 2.53 | 4.0.2 | 1.21+ | 1.21.7 | |
60 |
| - |
61 |
| -## Getting started |
62 |
| - |
63 |
| -[Getting started - Documentation](https://cybertec-postgresql.github.io/CYBERTEC-pg-operator/documentation/how-to-use/installation/) |
64 |
| - |
65 |
| -[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 | +--- |
66 | 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 | +--- |
67 | 71 |
|
68 | 72 | ## Documentation
|
69 | 73 |
|
70 |
| -There is a browser-friendly version of this documentation at |
71 |
| -[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 |
72 | 87 |
|
73 |
| -## Community |
| 88 | +Pull requests and feedback are always welcome. Please read our [Contribution Guidelines](CONTRIBUTING.md) in advance if you would like to participate. |
74 | 89 |
|
75 |
| -Coming soon |
| 90 | +--- |
0 commit comments