Skip to content

docs: publicize systemd orchestrator#432

Open
GabriellePoncey wants to merge 7 commits into
mainfrom
docs/PLAT-658/systemd-orchestrator
Open

docs: publicize systemd orchestrator#432
GabriellePoncey wants to merge 7 commits into
mainfrom
docs/PLAT-658/systemd-orchestrator

Conversation

@GabriellePoncey

@GabriellePoncey GabriellePoncey commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Update concepts, installation index, and the Docker Swarm installation guide to present systemd alongside Docker Swarm as a deployment model.

Changes

-Rewrite the Orchestrators section in concepts.md to describe
both orchestrators and who each is suited for; qualify the
feature parity claim with a link to systemd-specific limitations

  • Replace the installation index bullet list with a comparison
    table and accurate descriptions; remove the stale "only RPMs"
    caveat
  • Rename installation.md → swarm-installation.md and systemd.md →
    systemd-installation.md; update all cross-doc links and
    mkdocs.yml nav accordingly
  • Retitle the Docker Swarm installation guide
    (swarm-installation.md) and add a tip callout pointing readers to
    the systemd path; fix bare "here" link to use descriptive text
  • Simplify systemd-installation.md by removing the prerequisites
    section (now covered in prerequisites/index.md)
  • Consolidate systemd upgrade instructions into upgrading.md
    alongside the Docker Swarm upgrade guide; add missing Deb package
    upgrade section
  • Scope Docker install requirement and Swarm-specific ports
    (2377, 7946, 4789) in prerequisites/index.md
  • Add note to upgrade-db.md that API-driven minor upgrades are
    not supported on systemd clusters
  • Label docker_swarm.* config settings as Docker Swarm only; add
    missing systemd.* settings (instance_data_dir, pgbackrest_path,
    patroni_path) to the configuration reference with verified
    defaults
  • Scope disaster recovery guide to Docker Swarm with a note that
    systemd recovery guidance is not yet available
  • Add Docker Swarm redeploy step and scoped systemd restart
    command to mtls.md

PLAT-658

 Update concepts, installation index, and the Docker Swarm
  installation guide to present systemd alongside Docker Swarm
  as a deployment model.

PLAT-658
@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The documentation now presents Docker Swarm and systemd as Control Plane deployment models, with separate installation, configuration, mTLS, navigation, and upgrade guidance.

Changes

Orchestrator Documentation

Layer / File(s) Summary
Orchestrator model and supported deployment methods
docs/index.md, docs/prerequisites/*, docs/version.md
Documents Docker Swarm as the default model and systemd as a preview alternative, including prerequisites, ports, platforms, and shared capabilities.
Installation paths and deployment guides
docs/installation/index.md, docs/installation/swarm-installation.md, docs/installation/systemd-installation.md, docs/disaster-recovery/disaster-recovery.md, mkdocs.yml
Compares deployment methods, updates installation navigation and links, revises package guidance, and points to the Swarm guide.
Configuration and mTLS paths
docs/installation/configuration.md, docs/installation/mtls.md
Adds systemd configuration properties and documents separate certificate configuration paths for Docker Swarm and systemd.
Orchestrator-specific upgrade procedures
docs/installation/upgrading.md, docs/using/upgrade-db.md, docs/installation/systemd-installation.md
Adds systemd package and Postgres upgrade procedures, scopes existing upgrade links to Docker Swarm, and documents systemd upgrade limitations.

Poem

A rabbit hops where containers flow,
Then systemd services softly grow.
Swarm guides twirl, packages gleam,
Certificates guard the Control Plane dream.
Upgrade paths now clearly beam.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title matches the PR’s main change: documenting systemd as an additional orchestrator.
Description check ✅ Passed The description covers Summary and Changes well, but it omits the Testing, Checklist, and Notes for Reviewers sections from the template.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/PLAT-658/systemd-orchestrator

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/index.md`:
- Line 17: Synchronize systemd deployment wording with its documented preview
status: update docs/version.md accordingly, revise the feature claim in
docs/index.md lines 17-17, and update docs/installation/index.md lines 5-15 to
describe systemd consistently as a preview deployment model.

In `@docs/installation/installation.md`:
- Line 10: Update the high-availability documentation link in the installation
text to replace the generic “here” label with descriptive text identifying the
linked deployment best practices, while preserving the existing destination.

In `@docs/prerequisites/concepts.md`:
- Line 48: Update the feature-description sentence in the concepts documentation
to avoid claiming complete parity across all orchestrators. State that they
share the core API and common capabilities, while explicitly qualifying
systemd-specific limitations or linking to the relevant limitations section.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2e1d690d-7e5d-434a-9e0c-486ebb9e46ea

📥 Commits

Reviewing files that changed from the base of the PR and between d48fe83 and 25d7885.

📒 Files selected for processing (4)
  • docs/index.md
  • docs/installation/index.md
  • docs/installation/installation.md
  • docs/prerequisites/concepts.md

Comment thread docs/index.md Outdated
Comment thread docs/installation/installation.md Outdated
Comment thread docs/prerequisites/concepts.md Outdated
@GabriellePoncey GabriellePoncey changed the title docs: elevate systemd as a first-class orchestrator option docs: publicize systemd orchestrator option Jul 13, 2026
@GabriellePoncey GabriellePoncey changed the title docs: publicize systemd orchestrator option docs: publicize systemd orchestrator Jul 14, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/installation/configuration.md`:
- Around line 53-54: Update the configuration table entries for
systemd.pgbackrest_path and systemd.patroni_path to document their runtime
defaults as /usr/bin/pgbackrest and /usr/bin/patroni respectively, while
preserving that both values must be non-empty.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 537d2287-e2ff-4618-8c54-f833193d3a82

📥 Commits

Reviewing files that changed from the base of the PR and between 25d7885 and 7d06456.

📒 Files selected for processing (7)
  • docs/index.md
  • docs/installation/configuration.md
  • docs/installation/installation.md
  • docs/prerequisites/concepts.md
  • docs/prerequisites/index.md
  • docs/using/upgrade-db.md
  • docs/version.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/index.md
  • docs/installation/installation.md

Comment thread docs/installation/configuration.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/installation/mtls.md`:
- Around line 35-51: Update the deployment-specific instructions in the mTLS
documentation: scope the existing service restart guidance explicitly to
systemd, and add that Docker Swarm users must redeploy the stack after changing
environment variables or volume mounts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 02a57cdc-7b76-46bf-afde-8a926e5e763b

📥 Commits

Reviewing files that changed from the base of the PR and between 7d06456 and c06e37e.

📒 Files selected for processing (3)
  • docs/installation/configuration.md
  • docs/installation/mtls.md
  • docs/installation/upgrading.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/installation/configuration.md

Comment thread docs/installation/mtls.md Outdated
@GabriellePoncey
GabriellePoncey marked this pull request as ready for review July 15, 2026 14:01
@GabriellePoncey
GabriellePoncey requested a review from mmols July 15, 2026 14:29
Comment thread docs/installation/index.md Outdated

* [Installing via Docker Swarm](swarm-installation.md) covers deploying the Control Plane as Docker containers across a set of hosts. This is the default, production-ready installation method.

* [Installing via System Packages](systemd-installation.md) covers installing the Control Plane as a native Linux service using RPM or Deb packages, without Docker. This uses systemd to manage Postgres instances directly on the host. This is a **preview feature**.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd flip the order that you present here and lead with systemd, and not frame it as "without Docker". It should be listed above it.

Comment thread docs/installation/index.md Outdated
| **How it works** | Control Plane and Postgres run as Docker containers | Control Plane and Postgres run as native Linux services |
| **Best for** | Container-based infrastructure | Bare metal or VMs without Docker |
| **Package format** | Docker image | RPM or Deb system packages |
| **Status** | Generally available | Preview |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

systemd won't be in Preview when the next release lands, so let's adjust that here and elsewhere in this PR.

Comment thread docs/installation/swarm-installation.md Outdated
@@ -1,8 +1,13 @@
# Installing the pgEdge Control Plane
# Installing the pgEdge Control Plane (Docker Swarm)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would mirror the naming of the systemd one here - i would use with <orchestrator rather than the parenthesis

Comment thread docs/installation/upgrading.md Outdated
@@ -1,7 +1,6 @@
# Upgrading the Control Plane

# Upgrading the Control Plane (Docker Swarm)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would split these into two articles similar to installation.

Comment thread docs/prerequisites/concepts.md Outdated
**Docker Swarm** is the default orchestrator. Each host corresponds to a Docker Swarm node, with the Control Plane running as a Docker container. Each database instance runs as a separate Docker container within the Swarm environment.

We plan to support additional orchestration approaches in the near future, including direct deployment to hosts without containerization.
**systemd** is available as an alternative orchestrator for deployments on bare metal or VMs where you prefer not to use containers. With the systemd orchestrator, the Control Plane runs as a native Linux service and manages each Postgres instance as a systemd unit. This is a good fit for organizations with existing infrastructure built around system package managers, or for environments where standard Linux processes are preferred over containers. See [Installing via System Packages](../installation/systemd-installation.md) for setup instructions.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another spot to flip the order - systemd is not an alternative and i dont think we should frame either as the default. systemd should be listed first and framed equally.

Comment thread docs/prerequisites/concepts.md Outdated
We plan to support additional orchestration approaches in the near future, including direct deployment to hosts without containerization.
**systemd** is available as an alternative orchestrator for deployments on bare metal or VMs where you prefer not to use containers. With the systemd orchestrator, the Control Plane runs as a native Linux service and manages each Postgres instance as a systemd unit. This is a good fit for organizations with existing infrastructure built around system package managers, or for environments where standard Linux processes are preferred over containers. See [Installing via System Packages](../installation/systemd-installation.md) for setup instructions.

Both orchestrators share the same core API and capabilities: declarative database management, Patroni-based high availability, and pgBackRest backup/restore integration. The systemd orchestrator has some limitations not present in Docker Swarm; see the [systemd installation guide](../installation/systemd-installation.md#limitations) for details.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this line about limitations - that context isn't needed on this page from my view.

Comment thread docs/index.md Outdated

The pgEdge Control Plane supports:

- flexible orchestrator support: run Postgres as Docker containers via **Docker Swarm**, or as native Linux services via **systemd** on bare metal or VMs without containers.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would flip the order here again and put this towards the end. This page should lead with the features of the system, not with the installation method.

Comment thread mkdocs.yml Outdated
- Installing Control Plane:
- Deployment Options: installation/index.md
- Installing Control Plane on Your Host: installation/installation.md
- Installing Control Plane on Your Host: installation/swarm-installation.md

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The names here should be the same as the title of the page (in general, unless there it a length problem).

```


//include with installation guide

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this an artifact for a future PR? or just accidentally included?

@moizpgedge

Copy link
Copy Markdown
Contributor

Ordering is mixed. Most pages lead with systemd, but the comparison table at index.md:9 still puts Docker Swarm in the first column (and disagrees with the bullets at index.md:19 to 21 in the same file), and version.md lists Docker Swarm first at line 16 before systemd at line 18. Please put systemd first in the index.md:9 table and swap version.md:16 and 18 so the order matches the rest.

Comment thread docs/prerequisites/concepts.md Outdated
The Control Plane is architected to support multiple orchestrators, giving you flexibility in how database instances are deployed and managed.

For the Docker Swarm orchestrator, each host corresponds to a Docker Swarm node, with the Control Plane running as a Docker container. Each database instance runs as a separate Docker container within the Swarm environment.
**systemd**he Control Plane and Postgres instances run as native Linux services managed by systemd units. This is a good fit for organizations that prefer system package managers over containers. See [Installing via System Packages](../installation/systemd-installation.md) for setup instructions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you fix this. The word "The" got mangled

# Installing the pgEdge Control Plane via System Packages

!!! warning "Preview Feature"
!!! tip "Preview Feature"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page still has a "Preview Feature" tip,

@@ -1,8 +1,13 @@
# Installing the pgEdge Control Plane
# Installing the pgEdge Control Plane with Swarm

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four install/upgrade page titles name the orchestrators four different ways: "with Swarm" (swarm-installation.md:1), "via System Packages" (systemd-installation.md:1), "with Docker Swarm" (swarm-upgrading.md:1), and "with systemd" (systemd-upgrading.md:1). Please use one pattern, for example "with Docker Swarm" and "with systemd" for both install and upgrade, and update the matching mkdocs.yml nav labels (lines 62, 64, 65, 67) to keep them in sync.

@moizpgedge

Copy link
Copy Markdown
Contributor

Thanks for the updates. Ordering, titles, and Preview look good now. Two things from last round are still open: concepts.md:46 ("Docker Swarm Orchestrator in which…" is missing a verb, should be "is an orchestrator") and systemd-installation.md:30 (typos "Postgress" and "it's", should be "Postgres" and "its"). Fix those two and it is good to go. Everything technical still checks out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants