|
1 | | -# managed-postgres-operator |
| 1 | +# Managed Postgres Operator |
2 | 2 |
|
3 | | -Managed Postgres Operator aims to manage PostgreSQL resources like databases, roles or functions, directly from a Kubernetes cluster. |
| 3 | +<h1 align="center"> |
| 4 | + <img src="/contrib/logo/logo.svg"> |
| 5 | +</h1> |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <i align="center">Manage your PostgreSQL resources (databases, roles, schemas, etc.) from your Kubernetes cluster</i> |
| 9 | +</p> |
| 10 | + |
| 11 | +<h4 align="center"> |
| 12 | + <a href="https://github.com/hoppscale/managed-postgres-operator/actions/workflows/test.yml"> |
| 13 | + <img src="https://img.shields.io/github/actions/workflow/status/hoppscale/managed-postgres-operator/test.yml?branch=master&label=pipeline&style=flat-square" alt="continuous integration" style="height: 20px;"> |
| 14 | + </a> |
| 15 | + <a href="https://github.com/hoppscale/managed-postgres-operator/graphs/contributors"> |
| 16 | + <img src="https://img.shields.io/github/contributors-anon/hoppscale/managed-postgres-operator?color=yellow&style=flat-square" alt="contributors" style="height: 20px;"> |
| 17 | + </a> |
| 18 | + <a href="https://opensource.org/licenses/Apache-2.0"> |
| 19 | + <img src="https://img.shields.io/badge/apache%202.0-blue.svg?style=flat-square&label=license" alt="license" style="height: 20px;"> |
| 20 | + </a> |
| 21 | + <a> |
| 22 | + <img src="https://goreportcard.com/badge/github.com/hoppscale/managed-postgres-operator" alt="goreportcard" style="height: 20px;"> |
| 23 | + </a> |
| 24 | + <br> |
| 25 | +</h4> |
| 26 | + |
| 27 | +## Introduction |
| 28 | + |
| 29 | +Managed Postgres Operator aims to manage PostgreSQL resources like databases, roles, schemas or functions, directly from a Kubernetes cluster. |
| 30 | + |
| 31 | +## Supported Resources |
| 32 | + |
| 33 | +The Managed Postgres Operator currently manages the following resources: |
| 34 | + |
| 35 | +- Databases, with **PostgresDatabase** |
| 36 | +- Roles, with **PostgresRole** |
| 37 | +- Schemas, with **PostgresSchemas** |
4 | 38 |
|
5 | 39 | ## Usage |
6 | 40 |
|
7 | | -### PostgresDatabase |
8 | | - |
9 | | -```yaml |
10 | | -apiVersion: managed-postgres-operator.hoppscale.com/v1alpha1 |
11 | | -kind: PostgresDatabase |
12 | | -metadata: |
13 | | - name: mydb |
14 | | -spec: |
15 | | - name: mydb # Database's name |
16 | | - owner: myrole # Database owner role |
17 | | - extensions: # List of extensions to install |
18 | | - - plpgsql |
19 | | - keepDatabaseOnDelete: true # Should the database be kept if the Kubernetes resource is deleted? |
20 | | - preserveConnectionsOnDelete: false # Should the operator wait until the open connections are closed before deleting the database? |
21 | | -``` |
22 | | -
|
23 | | -### PostgresRole |
24 | | -
|
25 | | -```yaml |
26 | | -apiVersion: managed-postgres-operator.hoppscale.com/v1alpha1 |
27 | | -kind: PostgresRole |
28 | | -metadata: |
29 | | - name: myrole |
30 | | -spec: |
31 | | - name: myrole # Role's name |
32 | | - superUser: false # Should the role be a superuser? |
33 | | - createDB: false # Should the role be able to create databases? |
34 | | - createRole: false # Should the role be able to create roles? |
35 | | - inherit: false # Should the role inherit the permissions of the role of which it is a member? |
36 | | - login: false # Should the role be able to log in? |
37 | | - replication: false # Is the role used for replication? |
38 | | - bypassRLS: false # Should the role bypass the defined row-level security (RLS) policies? |
39 | | - passwordSecretName: "my-secret" # Name of the secret from where the role's password should be retrieved under the key `password` |
40 | | - memberOfRoles: # List of roles the role should be member of |
41 | | - - anotherRole |
42 | | -``` |
| 41 | +We recommend deploying the [official Docker image](https://github.com/hoppscale/managed-postgres-operator/pkgs/container/managed-postgres-operator), with the [Helm Chart](deploy/charts/managed-postgres-operator), in your Kubernetes cluster. |
| 42 | + |
| 43 | +One operator instance must be connected to one PostgreSQL server. If you need to manage mutiple PostgreSQL servers, you will have to deploy as many operators. |
| 44 | + |
| 45 | +## Troubleshooting |
| 46 | + |
| 47 | +If you encounter any issues while using the Managed Postgres Operator, we recommend checking the documentation and reviewing the existing [Github issues](https://github.com/hoppscale/managed-postgres-operator/issues) for assistance. |
| 48 | + |
| 49 | +If you think you've identified a bug and can't find a related issue, don't hesitate to [submit a new one](https://github.com/hoppscale/managed-postgres-operator/issues/new)! Make sure to provide as much information as possible about your environment. |
| 50 | + |
| 51 | +## Contributing |
| 52 | + |
| 53 | +We gladly welcome [pull requests](https://github.com/hoppscale/managed-postgres-operator/pulls)! PostgreSQL offers a wide range of features, and the operator currently implements only a small portion of them. Please feel free to suggest improvements or changes to enhance its stability and reliability. |
0 commit comments