Skip to content

Conversation

@rb-kurrent
Copy link
Contributor

@rb-kurrent rb-kurrent commented Dec 22, 2025

User description

Description

This is the reviewable content delta PR, set to merge into the "big copy" pr (#940), which will merge into master.

Page previews


PR Type

Documentation


Description

  • Update Kubernetes Operator documentation from v1.4.3 to v1.5.0

  • Add comprehensive features for v1.5.0 including Archiver nodes, TLS certificate management, user configuration, and 5-node cluster support

  • Expand configuration reference with new fields for archiver, users, service accounts, telemetry, and manual restart triggers

  • Add new deployment examples for archiving and secure clusters with user management

  • Update installation instructions and version references throughout documentation


Diagram Walkthrough

flowchart LR
  A["v1.4.3 Docs"] -->|Version Update| B["v1.5.0 Docs"]
  B -->|Add Features| C["Archiver Nodes"]
  B -->|Add Features| D["User Management"]
  B -->|Add Features| E["TLS Auto-reload"]
  B -->|Add Features| F["5-node Clusters"]
  B -->|Add Features| G["Manual Restart Keys"]
  C -->|Example| H["Archiving Deployment"]
  D -->|Example| I["Secure Cluster with Users"]
  E -->|Config| J["Certificate Authority Updates"]
Loading

File Walkthrough

Relevant files
Documentation
README.md
Update version in page title                                                         

docs/server/kubernetes-operator/v1.5.0/README.md

  • Update title from v1.4.3 to v1.5.0
+1/-1     
README.md
Add v1.5.0 release notes with major features                         

docs/server/kubernetes-operator/v1.5.0/getting-started/README.md

  • Replace v1.4.0-1.4.3 release notes with comprehensive v1.5.0 feature
    list
  • Add support for Archiver nodes with blob storage offloading
  • Add TLS certificate auto-reload capability with zero downtime
  • Add initial user and password configuration management
  • Add support for 5-node clusters and multiple certificate authorities
  • Add telemetry opt-out, loadBalancerClass, NodePort configuration, and
    manual restart triggers
  • Reformat text for better readability with line wrapping
+45/-50 
installation.md
Update version references in installation guide                   

docs/server/kubernetes-operator/v1.5.0/getting-started/installation.md

  • Update Helm chart version from 1.4.3 to 1.5.0 in installation examples
  • Update startingCSV version from 1.4.3 to 1.5.0 for OLM installation
  • Update version references in upgrade instructions
+4/-4     
resource-types.md
Expand configuration reference with v1.5.0 features           

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md

  • Rename page title from "Supported Resource Types" to "Configuration
    Reference"
  • Add support for 5-node clusters in replicas field documentation
  • Add new fields: EnvironmentSecret, archiver, serviceAccountName,
    telemetryOptOut, users, and restart trigger keys
  • Add new KurrentDBArchiverSpec section with archiver node configuration
    options
  • Add new KurrentDBUsersSpec and KurrentDBUserSpec sections for user
    management
  • Add loadBalancerClass field to KurrentDBLoadBalancer section
  • Enhance KurrentDBSecurity documentation for automatic TLS certificate
    updates and multiple CA support
  • Add nodePort, replicationPort, and nodeTcpPort fields to
    KurrentDBNetwork section
  • Add new "Selecting An Image" section with image registry options and
    Red Hat certified images
  • Update template expansion documentation to include archiver node type
    suffix
  • Add privileged port configuration guidance
+137/-20
database-deployment.md
Add archiving and user configuration deployment examples 

docs/server/kubernetes-operator/v1.5.0/operations/database-deployment.md

  • Add new deployment example for three-node cluster with archiving
  • Add archiver node configuration with S3 storage and IRSA support
  • Add user configuration examples to secure cluster deployments
  • Add password secrets for admin, ops, and custom users
  • Reorganize examples with improved descriptions and links
  • Update terminology from "instance" to "deployment" for consistency
+137/-31
modify-deployments.md
Add manual restart trigger documentation                                 

docs/server/kubernetes-operator/v1.5.0/operations/modify-deployments.md

  • Add new section "Manually Triggering Reload or Restart" explaining
    manual restart keys
  • Document configReloadKey, rollingRestartKey, and fullRestartKey fields
  • Explain use cases for manual restart triggers in testing and
    evaluation scenarios
  • Add note about archiver node restart logic being identical to
    read-only replicas
+26/-0   
versions.json
Add v1.5.0 to version registry                                                     

docs/server/kubernetes-operator/versions.json

  • Add v1.5.0 as the first entry in the versions list
  • Maintain v1.4.3 as the second entry for backward compatibility
+5/-0     

@rb-kurrent rb-kurrent requested a review from a team as a code owner December 22, 2025 23:22
@github-actions
Copy link

github-actions bot commented Dec 22, 2025

@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Dec 22, 2025

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Dec 22, 2025

PR Code Suggestions ✨

Latest suggestions up to 029db62

CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix contradictory field requirements

Update the CertificateSecret table to mark keyName as optional and clarify its
requirement context, resolving a contradiction with the field's description.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [231-237]

 #### CertificateSecret
 
-| Field                     | Required | Description                                                      |
-|---------------------------|----------|------------------------------------------------------------------|
-| `name` _string_           | Yes      | Name of the secret holding the certificate details               |
-| `keyName` _string_        | Yes      | Key within the secret containing the TLS certificate             |
-| `privateKeyName` _string_ | No       | Key within the secret containing the TLS certificate private key |
+| Field                     | Required | Description                                                                 |
+|---------------------------|----------|-----------------------------------------------------------------------------|
+| `name` _string_           | Yes      | Name of the secret holding the certificate details                          |
+| `keyName` _string_        | No       | Key within the secret containing the TLS certificate (required for leaf certs; optional for CA bundles) |
+| `privateKeyName` _string_ | No       | Key within the secret containing the TLS certificate private key            |
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies a contradiction in the documentation where a field is described as optional but defined as required, and the proposed fix resolves this inconsistency, improving documentation correctness.

Medium
Organization
best practice
Align product naming by version

The 23.10–24.10 image is an EventStoreDB image, so the prose/table should use
EventStoreDB naming for those versions and KurrentDB for 25.0+ to avoid
confusing readers.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [330-337]

 ## Selecting an Image
 
-When selecting a KurrentDB image, you may choose from one of Kurrent's standard images:
+Choose an image that matches your database major version:
 
-| Versions           | Image                                                    | Link        |
-|--------------------|----------------------------------------------------------|-------------|
-| 23.10.x to 24.10.x | `docker.eventstore.com/eventstore/eventstoredb-ee:X.Y.Z` | [link][old] |
-| 25.0.0 and greater | `docker.kurrent.io/kurrent-latest/kurrentdb:X.Y.Z`       | [link][std] |
+| Versions             | Product name | Image                                                    | Link        |
+|----------------------|--------------|----------------------------------------------------------|-------------|
+| 23.10.x to 24.10.x   | EventStoreDB | `docker.eventstore.com/eventstore/eventstoredb-ee:X.Y.Z` | [link][old] |
+| 25.0.0 and greater   | KurrentDB    | `docker.kurrent.io/kurrent-latest/kurrentdb:X.Y.Z`       | [link][std] |
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Ensure version-specific docs preserve legacy product naming for older versions while introducing new names for current releases.

Low
Fix incorrect markdown anchor

Fix the new anchor reference to match the generated lowercase heading id (or
remove it if unused) to prevent a broken in-page link.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [159]

-[n0]: #KurrentDBNetwork
+[n0]: #kurrentdbnetwork
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - When adding or changing links/anchors, ensure references resolve correctly to avoid broken navigation.

Low
General
Fix broken table formatting

Fix markdown formatting by adding missing backticks around field names in the
KurrentDBUsersSpec table and correcting the inline code for the default
password.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [239-249]

 #### KurrentDBUsersSpec
 
-| Field                                          | Required | Description                                          |
-|------------------------------------------------|----------|------------------------------------------------------|
-| adminPasswordSecret _[SecretKeySelector][u1]_  | Yes      | Secret containing initial password for `admin` user. |
-| opsPasswordSecret _[SecretKeySelector][u1]_    | Yes      | Secret containing initial password for `ops` user.   |
-| customUsers _[KurrentDBUserSpec][u2] array_    | No       | Custom users to add to the database.                 |
+| Field                                              | Required | Description                                          |
+|----------------------------------------------------|----------|------------------------------------------------------|
+| `adminPasswordSecret` _[SecretKeySelector][u1]_     | Yes      | Secret containing initial password for `admin` user. |
+| `opsPasswordSecret` _[SecretKeySelector][u1]_       | Yes      | Secret containing initial password for `ops` user.   |
+| `customUsers` _[KurrentDBUserSpec][u2]_ array       | No       | Custom users to add to the database.                 |
 
 The `admin` and `ops` passwords are required if users are configured at all.  Those paswords are set
 by initial database creation; when set, the database will never accept the default password
-(`changeit)`.  No deployment should be considered secure without configuring these two passwords.
+(`changeit`).  No deployment should be considered secure without configuring these two passwords.
  • Apply / Chat
Suggestion importance[1-10]: 4

__

Why: The suggestion correctly points out and fixes multiple markdown formatting errors, improving the readability and consistency of the documentation.

Low
  • More

Previous suggestions

Suggestions up to commit a338019
CategorySuggestion                                                                                                                                    Impact
Possible issue
Add missing namespace to ServiceAccount

Add the namespace: kurrent field to the ServiceAccount metadata to match the
namespace of the KurrentDB resource that uses it.

docs/server/kubernetes-operator/v1.5.0/operations/database-deployment.md [162-167]

 apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: my-irsa-service-account
+  namespace: kurrent
   annotations:
     eks.amazonaws.com/role-arn: <MY_AWS_ROLE_ARN>
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies that the ServiceAccount example is missing a namespace, which would cause the example deployment to fail as written.

Medium
Advise against deleting initial user secrets

Revise the documentation to strongly recommend retaining initial user
configuration secrets for disaster recovery, instead of stating they can be
safely deleted.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [254-256]

-The Operator does not currently support updates to the intial user configuration.  The Secrets
-referenced here are not read after the first time the KurrentDB cluster reaches a healhty state,
-and may safely be deleted.
+The Operator does not currently support updates to the initial user configuration. The Secrets
+referenced here are used for initial setup and are not read again after the KurrentDB cluster
+first reaches a healthy state. However, it is strongly recommended to retain these secrets, as
+they may be required for disaster recovery scenarios, such as restoring from a backup or
+recreating the cluster.
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that advising users to delete secrets is risky, as they may be needed for disaster recovery, preventing potential future operational failures.

Medium
Organization
best practice
Fix inconsistent field naming

Use the correct, consistently-cased spec field name (this page elsewhere
references .spec.environmentSecret), and keep wording consistent to prevent
users from configuring a non-existent field.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [27]

-| `EnvironmentSecret` _string_                            | No       | The name of a Secret to populate environment variables.  If the secret changes a rolling restart occurs.                                 |
+| `environmentSecret` _string_                            | No       | The name of a Secret to populate environment variables. If the Secret changes, a rolling restart occurs.                                 |
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Ensure versioned docs use correct, consistent field names/terminology (avoid mismatches that mislead users).

Low
Normalize capitalization and fix typos

Normalize heading capitalization and fix newly introduced spelling/grammar
issues in the surrounding new text (e.g., “privileged”, “passwords”,
“additional”, “initial”, “healthy”, “archiving”) to keep the reference clear and
professional.

docs/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md [330]

-## Selecting An Image
+## Selecting an Image
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Prefer clear, correct, consistent docs language (fix typos/grammar and normalize capitalization in headings and prose).

Low

@rb-kurrent rb-kurrent force-pushed the operator-v1-5-0-content branch from a338019 to ad3b3f3 Compare December 22, 2025 23:24
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Dec 22, 2025

Deploying documentation with  Cloudflare Pages  Cloudflare Pages

Latest commit: 029db62
Status: ✅  Deploy successful!
Preview URL: https://ed4f703d.documentation-21k.pages.dev
Branch Preview URL: https://operator-v1-5-0-content.documentation-21k.pages.dev

View logs

@github-actions
Copy link

@rb-kurrent rb-kurrent force-pushed the operator-v1-5-0-content branch from ad3b3f3 to 029db62 Compare December 22, 2025 23:27
@stktung stktung merged commit 86ba9c3 into operator-v1-5-0 Dec 23, 2025
3 checks passed
@stktung stktung deleted the operator-v1-5-0-content branch December 23, 2025 03:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants