Repository: pgopr/pgopr
Pull request #11: [#9] Initial tutorials
Author: login: Pezz8
Labels: name: documentation
description: Improvements to the documentation
Created: 2025-05-13T04:56:52Z | Merged: 2025-05-15T11:49:34Z

Drafted a tutorial to install pgopr:

install_operator showing how to install pgopr 

provision showing how to use the provision command

database_access showing how to access the database


Diff:
diff --git a/doc/tutorial/01_install_operator.md b/doc/tutorial/01_install_operator.md
new file mode 100644
index 0000000..e31ca96
--- /dev/null
+++ b/doc/tutorial/01_install_operator.md
@@ -0,0 +1,108 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later
+- [minikube](https://minikube.sigs.k8s.io/docs/start/)
+- [kubectl](https://kubernetes.io/docs/tasks/tools/) (to run commands against Kubernetes cluster)
+- PostgreSQL client tools (for database interaction)
+
+For Fedora 42:
+
+```bash
+dnf install -y git rust rust-std-static cargo rustfmt rust-analyzer clippy postgresql
+```
+
+### Installation
+
+1. Clone the repository:
+
+```bash
+git clone https://github.com/pgopr/pgopr.git
+cd pgopr
+```
+
+2. Build the project:
+
+```bash
+cargo build
+```
+
+3. The binary will be available at `target/debug/pgopr`
+
+```bash
+cd target/debug
+```
+
+4. Create a Kubernetes cluster (using [kind](https://kind.sigs.k8s.io/)):
+
+```bash
+kind create cluster
+```
+
+Output:
+
+```bash
+enabling experimental podman provider
+Creating cluster "kind" ...
+✓ Ensuring node image (kindest/node:v1.32.2) 🖼
+✓ Preparing nodes 📦
+✓ Writing configuration 📜
+✓ Starting control-plane 🕹️
+✓ Installing CNI 🔌
+✓ Installing StorageClass 💾
+Set kubectl context to "kind-kind"
+You can now use your cluster with:
+
+kubectl cluster-info --context kind-kind
+
+Not sure what to do next? 😅  Check out https://kind.sigs.k8s.io/docs/user/quick-start/
+```
+
+5. Install pgopr:
+
+```bash
+./pgopr install
+```
+
+Output:
+
+```bash
+2025-05-12T22:40:25.576587386-04:00 INFO pgopr - pgopr 0.2.0
+2025-05-12T22:40:25.576743213-04:00 INFO pgopr - PostgreSQL operator for Kubernetes
+2025-05-12T22:40:35.603058296-04:00 INFO pgopr::crd - Created CRD
+```
+
+## Configuration
+
+pgopr uses configuration files in TOML format. The default configuration is loaded from:
+
+- `$HOME/.config/pgopr/config.toml`
+- `$HOME/.pgopr/config.toml`
+
+## Troubleshooting
+
+If you encounter any issues:
+
+1. Check that your Kubernetes cluster is running and accessible
+2. Verify that you have the correct permissions in your Kubernetes cluster
+3. Ensure all prerequisites are installed and up to date
+4. Check the logs using `kubectl logs` for the pgopr operator
+
+## Getting Help
+
+- [Ask a question](https://github.com/pgopr/pgopr/discussions)
+- [Raise an issue](https://github.com/pgopr/pgopr/issues)
+- [Feature request](https://github.com/pgopr/pgopr/issues)
+
+## License
+
+pgopr is licensed under the [Eclipse Public License - v2.0](https://www.eclipse.org/legal/epl-2.0/)
diff --git a/doc/tutorial/02_provision.md b/doc/tutorial/02_provision.md
new file mode 100644
index 0000000..7d938bf
--- /dev/null
+++ b/doc/tutorial/02_provision.md
@@ -0,0 +1,17 @@
+## Provision a PostgreSQL primary setup
+
+This tutorial will show you how to provision a PostgreSQL primary setup by creating a persistent volume, claim, deployment, and service in the Kubernetes cluster.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+See [install pgopr](./01_install_operator.md) for more detail.
+
+### Provision a primary instance
+
+```bash
+./pgopr provision primary
+```
+
+will provision a PostgreSQL primary instance in a Kubernetes cluster. This includes deploying persistent volumes, a database pod, and an associated service.
diff --git a/doc/tutorial/03_database_access.md b/doc/tutorial/03_database_access.md
new file mode 100644
index 0000000..8d2ea33
--- /dev/null
+++ b/doc/tutorial/03_database_access.md
@@ -0,0 +1,58 @@
+## Accessing the PostgreSQL database instance
+
+This tutorial will show you how to access the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](./01_install_operator.md) and [provision](./02_provision.md) for more detail.
+
+### Accessing database
+
+1. Find the PostgreSQL pod name:
+
+```bash
+kubectl get pods
+```
+
+Output:
+
+```bash
+NAME                          READY   STATUS    RESTARTS   AGE
+postgresql-66cfcfc489-s8w2j   1/1     Running   0          22s
+```
+
+Look for a pod name starting with 'postgresql-'
+
+2. Use the pod name for port-forwarding:
+
+```bash
+kubectl port-forward postgresql-YOURPODNAME 5432:5432
+```
+
+Output:
+
+```bash
+Forwarding from 127.0.0.1:5432 -> 5432
+Forwarding from [::1]:5432 -> 5432
+```
+
+3. Connect to database:
+
+   Using PostgreSQL’s built-in terminal-based interface:
+
+```bash
+psql -h localhost -p 5432 -U myuser --password mydb
+```
+
+Using `mypass` as the password.
+
+Output:
+
+```bash
+psql (13.20, server 13.7 (Debian 13.7-1.pgdg110+1))
+Type "help" for help.
+
+mydb=#
+```
diff --git a/doc/tutorial/04_retire.md b/doc/tutorial/04_retire.md
new file mode 100644
index 0000000..7ba1062
--- /dev/null
+++ b/doc/tutorial/04_retire.md
@@ -0,0 +1,17 @@
+## Retire a PostgreSQL primary setup
+
+This tutorial will show you how to retire the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](./01_install_operator.md) and [provision](./02_provision.md) for more detail.
+
+### Retire a primary instance
+
+```bash
+./pgopr retire primary
+```
+
+will deprovisions a PostgreSQL primary setup by deleting all associated Kubernetes resources. This includes the removal of the PostgreSQL service, the primary pod, the persistent volume claim (PVC), and the persistent volume (PV), effectively tearing down the deployed database infrastructure from the cluster.
diff --git a/doc/tutorial/05_uninstall.md b/doc/tutorial/05_uninstall.md
new file mode 100644
index 0000000..622e406
--- /dev/null
+++ b/doc/tutorial/05_uninstall.md
@@ -0,0 +1,17 @@
+## Uninstall pgopr
+
+This tutorial will show you how to uninstall [**pgopr**](https://github.com/pgopr/pgopr).
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+See [install pgopr](./01_install_operator.md) for more detail.
+
+### Uninstalling
+
+```bash
+./pgopr uninstall
+```
+
+will remove the PostgreSQL operator from the cluster.
diff --git a/doc/tutorial/06_completion.md b/doc/tutorial/06_completion.md
new file mode 100644
index 0000000..2c36742
--- /dev/null
+++ b/doc/tutorial/06_completion.md
@@ -0,0 +1,26 @@
+## Generate a shell completion file
+
+This tutorial will show you how to generate a shell completition file for [**pgopr**](https://github.com/pgopr/pgopr).
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+See [install pgopr](./01_install_operator.md) for more detail.
+
+### Generate a shell completion file
+
+- Bash
+
+```bash
+./pgopr completion --type bash
+```
+
+- zsh
+
+```bash
+./pgopr completion --type zsh
+```
+
+command generates shell completion scripts for supported shells (like Bash, Zsh, Fish, etc.).
+These scripts enable auto-completion for the pgopr CLI commands, improving usability in the terminal. The shell type must be specified using the --type or -t flag.
diff --git a/doc/tutorial/07_generate.md b/doc/tutorial/07_generate.md
new file mode 100644
index 0000000..8e4f204
--- /dev/null
+++ b/doc/tutorial/07_generate.md
@@ -0,0 +1,27 @@
+## Generate YAML resources
+
+This tutorial will show you how to creates Kubernetes YAML resource definitions.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+See [install pgopr](./01_install_operator.md) for more detail.
+
+### Generate YAML
+
+- Command to create YAML definition for a PostgreSQL primary instance:
+
+```bash
+./pgopr generate --type primary
+```
+
+- Other valid commands:
+
+```bash
+./pgopr generate --type crd         # Generates the Custom Resource Definition
+./pgopr generate --type persistent  # Generates the Persistent Volume/Claim definitions
+./pgopr generate --type service     # Generates the Service definition
+```
+
+the command creates Kubernetes YAML resource definitions for components used by the PostgreSQL operator. By specifying the --type flag, you can generate manifests for resources such as the CRD, primary deployment, persistent volume, or service—useful for inspection or manual application.


Reviews:
user: login: jesperpedersen
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T04:26:46Z
user: login: jesperpedersen
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T04:59:37Z
user: login: Pezz8
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T18:04:36Z
user: login: jesperpedersen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T18:31:59Z
user: login: jesperpedersen
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T01:48:32Z
user: login: Pezz8
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T02:32:46Z
user: login: jesperpedersen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T02:35:52Z
user: login: Pezz8
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T02:39:29Z
user: login: jesperpedersen
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T02:40:13Z

Review comments:
diff_hunk: @@ -0,0 +1,106 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.28 or later
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: lets just go 1.32 here
created_at: 2025-05-14T04:23:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,106 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.28 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.22 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: 0.27
created_at: 2025-05-14T04:23:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,106 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.28 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.22 or later (for local development)
+- PostgreSQL client tools (for database interaction)
+
+For Fedora 36:
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: 42
created_at: 2025-05-14T04:23:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,106 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.28 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.22 or later (for local development)
+- PostgreSQL client tools (for database interaction)
+
+For Fedora 36:
+
+```bash
+dnf install -y git rust rust-std-static cargo rustfmt clippy postgresql
+```
+
+### Installation
+
+1. Clone the repository:
+
+   ```bash
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: Remove the prefix spaces
created_at: 2025-05-14T04:24:08Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,106 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.28 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.22 or later (for local development)
+- PostgreSQL client tools (for database interaction)
+
+For Fedora 36:
+
+```bash
+dnf install -y git rust rust-std-static cargo rustfmt clippy postgresql
+```
+
+### Installation
+
+1. Clone the repository:
+
+   ```bash
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: This applies for all lines
created_at: 2025-05-14T04:24:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,58 @@
+## Accessing the PostgreSQL database instance
+
+This tutorial will show you how to access the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) and [provision](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/02_provision.md) for more detail.
path: doc/tutorial/03_database_access.md
user: login: jesperpedersen
body: URLs
created_at: 2025-05-14T04:25:19Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,58 @@
+## Accessing the PostgreSQL database instance
+
+This tutorial will show you how to access the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) and [provision](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/02_provision.md) for more detail.
+
+### Accessing database
+
+1. Find the PostgreSQL pod name:
+
+   ```bash
path: doc/tutorial/03_database_access.md
user: login: jesperpedersen
body: Prefix spaces
created_at: 2025-05-14T04:25:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,17 @@
+## Retire a PostgreSQL primary setup
+
+This tutorial will show you how to retire the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) and [provision](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/02_provision.md) for more detail.
path: doc/tutorial/04_retire.md
user: login: jesperpedersen
body: URLs
created_at: 2025-05-14T04:26:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,26 @@
+## Generate a shell completion file
+
+This tutorial will show you how to generate a shell completition file for [**pgopr**](https://github.com/pgopr/pgopr).
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) for more detail.
path: doc/tutorial/06_completion.md
user: login: jesperpedersen
body: URL
created_at: 2025-05-14T04:26:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,27 @@
+## Generate YAML resources
+
+This tutorial will show you how to creates Kubernetes YAML resource definitions.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) for more detail.
path: doc/tutorial/07_generate.md
user: login: jesperpedersen
body: URL
created_at: 2025-05-14T04:26:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,106 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.28 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.22 or later (for local development)
+- PostgreSQL client tools (for database interaction)
+
+For Fedora 36:
+
+```bash
+dnf install -y git rust rust-std-static cargo rustfmt clippy postgresql
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: Add rust-analyzer to the list
created_at: 2025-05-14T04:59:29Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,58 @@
+## Accessing the PostgreSQL database instance
+
+This tutorial will show you how to access the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) and [provision](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/02_provision.md) for more detail.
path: doc/tutorial/03_database_access.md
user: login: Pezz8
body: I wanted to reference the other tutorial files. Should I use the https://github.com/pgopr/pgopr/blob/main/doc/tutorials/01_install_operator (I think that's were they would go after the merge) or just not link them at all for now.
created_at: 2025-05-14T18:04:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,58 @@
+## Accessing the PostgreSQL database instance
+
+This tutorial will show you how to access the PostgreSQL database.
+
+### Preface
+
+This tutorial assumes that you have an installation of [**pgopr**](https://github.com/pgopr/pgopr) and that a PostgreSQL primary has been provided.
+
+See [install pgopr](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/01_install_operator.md) and [provision](https://github.com/Pezz8/pgopr/blob/fix/initial_tutorials/doc/tutorial/02_provision.md) for more detail.
path: doc/tutorial/03_database_access.md
user: login: jesperpedersen
body: Use the "final" link once the PR is merged - you can see an example of that here - https://github.com/pgmoneta/pgmoneta/blob/main/doc/GETTING_STARTED.md#tutorials
created_at: 2025-05-14T18:31:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,107 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: You can build a platform based on kind, so remove "(for local development)"
created_at: 2025-05-15T01:45:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,107 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: You need a link to minikube too
created_at: 2025-05-15T01:46:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,107 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: Pezz8
body: Added minikube as well.

Can you explain why we are using both? My understanding is that they both allow to deploy kubernetes kluster locally only using different approaches.
created_at: 2025-05-15T02:32:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,107 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: This is just to explain to people who are new to k8s how to run the operator. There are a lot more advanced k8s platforms, but we will just focus on the 2 smallest ones
created_at: 2025-05-15T02:35:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,107 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: Pezz8
body: Fair enough. Let me know if you need me to do other changes.
created_at: 2025-05-15T02:39:29Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,107 @@
+## Install pgopr
+
+This tutorial will show you how to do a simple installation of [**pgopr**](https://github.com/pgopr/pgopr).
+
+At the end of this tutorial you will have an operator that controls a PostgreSQL cluster and related technologies using Kubernetes 1.28+.
+
+### Prerequisites
+
+Before installing pgopr, ensure you have the following prerequisites:
+
+- [Kubernetes](https://kubernetes.io/) 1.32 or later
+- [Rust](https://www.rust-lang.org/) and [Cargo](https://doc.rust-lang.org/cargo/)
+- [kind](https://kind.sigs.k8s.io/) 0.27 or later (for local development)
path: doc/tutorial/01_install_operator.md
user: login: jesperpedersen
body: For kind, you can get far by using Ingress

```
kubectl apply \
    --filename https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml
```

and k9s

```
https://k9scli.io/
```
created_at: 2025-05-15T02:40:13Z
author_association: CONTRIBUTOR

PR comments:
user: login: jesperpedersen
created_at: 2025-05-13T15:55:40Z
body: @Pezz8 Good start - lets get all the commands a tutorial
author_association: CONTRIBUTOR
user: login: Pezz8
created_at: 2025-05-14T01:19:25Z
body: @jesperpedersen Created a file for each of the commands let me know what you think.
author_association: CONTRIBUTOR
user: login: jesperpedersen
created_at: 2025-05-14T15:21:36Z
body: @Pezz8 PTAL me once you are happy with the pull request
author_association: CONTRIBUTOR
user: login: jesperpedersen
created_at: 2025-05-14T19:15:48Z
body: @Pezz8 You will need kubectl (download / install) in the 01_ tutorial as well - just use https://kubernetes.io/docs/tasks/tools/
author_association: CONTRIBUTOR
user: login: Pezz8
created_at: 2025-05-14T23:30:39Z
body: @jesperpedersen 

> @Pezz8 You will need kubectl (download / install) in the 01_ tutorial as well - just use https://kubernetes.io/docs/tasks/tools/

I have it already installed on my machine.
Are you referring to this: 

![image](https://github.com/user-attachments/assets/7430aff5-8345-471b-b00c-1316a165d336)

Or do you need me to add the link to the install instructions to our tutorial?
author_association: CONTRIBUTOR
user: login: jesperpedersen
created_at: 2025-05-14T23:41:35Z
body: @Pezz8 Yes, add the install instructions
author_association: CONTRIBUTOR
user: login: Pezz8
created_at: 2025-05-14T23:54:55Z
body: @jesperpedersen My last push has the link to the instructions in the 01_install_operator file. I can add the bash commands listed there too if you want and replace yum with dnf. 
author_association: CONTRIBUTOR
user: login: jesperpedersen
created_at: 2025-05-15T11:49:55Z
body: Merged.

Thanks for your contribution !
author_association: CONTRIBUTOR