Skip to content

docs(v1): migrate ConfigMap references to Platform Package - #426

Merged
Andrei Kvapil (kvaps) merged 5 commits into
mainfrom
install-v1-docs
Feb 19, 2026
Merged

Andrei Kvapil (kvaps) merged 5 commits into
mainfrom
install-v1-docs

Conversation

@sircthulhu

@sircthulhu Kirill Ilin (sircthulhu) commented Feb 19, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Replace all ConfigMap-based configuration references across v1 docs with the Package CRD (cozystack.io/v1alpha1)
  • Update install commands from kubectl apply to helm install with OCI registry
  • Expand Platform Package reference page with all parameters from values.yaml, including defaults
  • Add warnings against using --reuse-values on operator Helm upgrades (hardcoded OCI repository references in values cause version mismatch)

Changed files (15)

  • getting-started/install-cozystack.md — ConfigMap → Package, kubectl apply → helm install + kubectl apply Package, external IPs and exposedServices patches
  • operations/configuration/configmap.md — Full Platform Package reference with all values from values.yaml
  • operations/configuration/bundles.md, components.md — ConfigMap examples → Package examples
  • operations/configuration/telemetry.md — --reuse-values removed, version pinning added
  • operations/cluster/upgrade.md — --reuse-values removed with warning
  • operations/oidc/enable_oidc.md, users_and_roles.md — OIDC ConfigMap patches → Package patches
  • virtualization/_index.md, gpu.md, proxmox-migration.md — ConfigMap patches → Package patches
  • install/providers/hetzner.md, install/how-to/kubespan.md — ConfigMap → Package
  • guides/resource-management/_index.md — cpuAllocationRatio ConfigMap → Package
  • operations/troubleshooting/_index.md — deploy/cozystack → deploy/cozystack-operator

Test plan

  • Verify Hugo builds without errors
  • Review rendered pages for correct formatting (tables, code blocks, alerts)
  • Cross-check all Package YAML examples against actual values.yaml structure

Summary by CodeRabbit

  • Documentation Updates

    • Installation, upgrade, and operations docs updated to the new operator-driven workflow and Platform Package configuration model.
    • Guides for OIDC, telemetry, virtualization, bundles, and resource management revised to use the Platform Package structure and commands.
    • Examples, patch/apply instructions, and troubleshooting steps adjusted to the operator + Package lifecycle.
  • Breaking Changes

    • Public configuration examples and field paths moved from the old ConfigMap style to the Platform Package schema.

Replace ConfigMap-based configuration with Package CRD across
installation and upgrade documentation:

- Replace ConfigMap with Package resource in install guide
- Use helm install with OCI registry for operator deployment
- Update all kubectl patch commands to target Package resource
- Rewrite upgrade guide with step-by-step migration from v0.41

Co-Authored-By: Claude <[email protected]>
Signed-off-by: Kirill Ilin <[email protected]>
…ll v1 docs

Migrate all v1 documentation from the legacy ConfigMap-based configuration
to the Package CRD introduced in Cozystack v1. Update install commands
from kubectl apply to helm install, expand Platform Package reference with
all parameters from values.yaml, and add warnings against --reuse-values
on operator upgrades.

Co-Authored-By: Claude <[email protected]>
Signed-off-by: Kirill Ilin <[email protected]>
@netlify

netlify Bot commented Feb 19, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for cozystack ready!

Name Link
🔨 Latest commit fabb0cb
🔍 Latest deploy log https://app.netlify.com/projects/cozystack/deploys/6996b7a34d28580008a9dd7f
😎 Deploy Preview https://deploy-preview-426--cozystack.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Feb 19, 2026 •

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Documentation and examples converted from a ConfigMap-based configuration model to an operator-driven Platform Package model: manifests, commands, and field paths changed from apiVersion: v1 / kind: ConfigMap / data.* to apiVersion: cozystack.io/v1alpha1 / kind: Package / spec.components.*.values.*, and workflows updated to use the Cozystack Operator and Helm OCI.

Changes

Cohort / File(s) Summary
Installation & Getting Started
content/en/docs/v1/getting-started/install-cozystack.md, content/en/docs/v1/install/cozystack/_index.md, content/en/docs/v1/install/providers/hetzner.md
Replaced ConfigMap installer flow with operator + Platform Package. Example manifest renamed to cozystack-platform.yaml (Package CR). Commands updated to install operator via Helm OCI and apply/patch packages.cozystack.io cozystack.cozystack-platform.
Configuration Reference & New Package Doc
content/en/docs/v1/operations/configuration/configmap.md, content/en/docs/v1/operations/configuration/platform-package.md, content/en/docs/v1/operations/configuration/bundles.md
Full migration from ConfigMap data.* to Platform Package spec.* schema. Reorganized parameter tables into Package-level and component-specific sections; added a new Platform Package reference page.
Component Examples & Overwrites
content/en/docs/v1/operations/configuration/components.md, content/en/docs/v1/guides/resource-management/_index.md, content/en/docs/v1/install/how-to/kubespan.md
Examples updated to nest component values under spec.components.*.values.* (e.g., cpuAllocationRatio, kube-ovn.mtu). Paths and examples rewritten to reference the networking/platform components in the Package.
Operations, Upgrades & Troubleshooting
content/en/docs/v1/operations/cluster/upgrade.md, content/en/docs/v1/operations/upgrades/_index.md, content/en/docs/v1/operations/troubleshooting/_index.md
Upgrade and troubleshooting flows converted to operator/Helm-centric actions. Helm upgrade guidance added for the operator; status/log commands now target cozystack-operator; validation uses Package resources instead of ConfigMap checks.
Feature Enablement & Authentication
content/en/docs/v1/operations/configuration/telemetry.md, content/en/docs/v1/operations/oidc/enable_oidc.md, content/en/docs/v1/operations/oidc/users_and_roles.md
Feature toggles and OIDC instructions moved from ConfigMap patches to Platform Package patches or Helm operator flags; payloads and reconciliation notes updated to use spec.components.platform.values.*.
Virtualization, GPU & Storage
content/en/docs/v1/virtualization/_index.md, content/en/docs/v1/virtualization/gpu.md, content/en/docs/v1/virtualization/proxmox-migration.md, content/en/docs/v1/storage/nfs.md
Virtualization and storage enablement steps updated to patch the Platform Package (e.g., publishing.exposedServices, bundles.enabledPackages) and per-package component values; warnings added about JSON Merge Patch replacing arrays.
Provider-specific Flows
content/en/docs/v1/install/providers/hetzner.md
Hetzner guide updated to use operator install + Platform Package manifest; removed previous local installer steps and adjusted status/log commands.
Developer & Misc Docs
content/en/docs/v1/development.md, content/en/docs/v1/kubernetes/backup-and-recovery.md, content/en/docs/v1/networking/vpc.md
References updated from ConfigMap source to Platform Package (cozystack.cozystack-platform); bundle defaults and variant terminology adjusted (paas→isp).
Site Shortcode
layouts/shortcodes/reuse-values-warning.html
New shortcode added to render a reusable upgrade warning about reusing Helm values when upgrading the operator.

Sequence Diagram(s)

sequenceDiagram
    participant User as User
    participant Kctl as kubectl
    participant Op as Cozystack_Operator
    participant PS as PackageSource/OCI
    participant HR as HelmRelease
    participant K8s as Kubernetes

    User->>Kctl: kubectl apply -f cozystack-platform.yaml
    Kctl->>Op: create/update Package CR (packages.cozystack.io)
    Op->>PS: fetch package assets from OCI (PackageSource)
    PS-->>Op: package artifacts (charts/manifests)
    Op->>HR: create/upgrade HelmRelease(s)
    HR->>K8s: deploy charts → Pods/Deployments
    K8s-->>HR: report status
    HR-->>Op: reconcile status
    Op-->>Kctl: Package status becomes Healthy
    Kctl-->>User: kubectl get packages.cozystack.io cozystack.cozystack-platform -o yaml
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐇 I hopped from flat maps to nested trees,

Spec fields rustle in operator breeze,
Packages fetch charts from OCI,
HelmReleases dance, pods multiply,
A rabbit cheers: tidy nests and fewer keys! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly and concisely summarizes the primary change: migrating ConfigMap references to Platform Package across the v1 documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch install-v1-docs

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 and usage tips.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello Kirill Ilin (@sircthulhu), I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly updates the Cozystack documentation to align with the new v1.0 architecture, which transitions from ConfigMap-based configuration to a more robust Platform Package Custom Resource Definition (CRD). The changes streamline installation processes by introducing Helm-based operator deployment and provide comprehensive guidance on managing Cozystack's configuration through the new Package CRD, ensuring consistency and clarity for users.

Highlights

  • Configuration Migration: Migrated all documentation references from Kubernetes ConfigMaps to the new Platform Package Custom Resource Definition (CRD).
  • Installation Process Update: Updated installation instructions to use helm install with OCI registry for the Cozystack operator, replacing previous kubectl apply methods.
  • Enhanced Reference Documentation: Expanded the Platform Package reference page to include all parameters from values.yaml with their defaults, providing a comprehensive guide.
  • Upgrade Warnings: Added warnings against using --reuse-values during operator Helm upgrades due to potential version mismatches with hardcoded OCI repository references.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • content/en/docs/v1/getting-started/install-cozystack.md
    • Updated configuration file name and YAML examples from ConfigMap to Package CRD.
    • Revised installation steps to use Helm for operator deployment and kubectl apply for the Platform Package.
    • Modified patching examples for external IPs and exposed services to target the Platform Package.
    • Adjusted log tracking commands to refer to the cozystack-operator.
  • content/en/docs/v1/guides/resource-management/_index.md
    • Updated the cpu-allocation-ratio configuration example to reflect its new location within the Platform Package.
  • content/en/docs/v1/install/cozystack/_index.md
    • Replaced ConfigMap references with Platform Package resource and updated corresponding YAML examples.
    • Changed installation instructions to use Helm for the operator and kubectl apply for the Platform Package.
    • Added specific instructions for non-Talos OS installations using Helm --set flags.
    • Updated log tracking commands to point to the cozystack-operator.
  • content/en/docs/v1/install/how-to/kubespan.md
    • Updated the example for configuring Kube-OVN MTU to use the Platform Package's networking component.
  • content/en/docs/v1/install/providers/hetzner.md
    • Revised installation steps to incorporate helm install for the operator.
    • Replaced ConfigMap examples with Platform Package YAML, including disabledPackages and enabledPackages.
    • Updated log tracking commands to reference the cozystack-operator.
  • content/en/docs/v1/operations/cluster/upgrade.md
    • Updated instructions to verify the Platform Package instead of the ConfigMap.
    • Replaced kubectl apply for the installer with helm upgrade for the operator.
    • Added a warning against using --reuse-values during Helm upgrades.
    • Adjusted log tracking commands to target the cozystack-operator.
  • content/en/docs/v1/operations/configuration/bundles.md
    • Updated all bundle configuration examples from ConfigMap to the new Package CRD structure, using spec.variant and nested values.
    • Revised internal links to point to the general configuration reference instead of the old ConfigMap reference.
  • content/en/docs/v1/operations/configuration/components.md
    • Updated instructions for overwriting component parameters from ConfigMap data.values-<component> to spec.components in the Platform Package.
    • Modified examples for enabling/disabling components from bundle-enable/bundle-disable to bundles.enabledPackages/bundles.disabledPackages within Platform Package values.
  • content/en/docs/v1/operations/configuration/configmap.md
    • Renamed the document title and link to 'Platform Package Reference'.
    • Completely rewrote the page content to describe the Package custom resource, its structure, and a comprehensive reference table for its fields and values.
    • Replaced the ConfigMap example with a Platform Package example.
  • content/en/docs/v1/operations/configuration/telemetry.md
    • Updated instructions for disabling telemetry from patching ConfigMap to using helm upgrade with the disableTelemetry flag.
    • Added a warning regarding the use of --reuse-values during Helm upgrades.
  • content/en/docs/v1/operations/oidc/enable_oidc.md
    • Updated instructions for enabling OIDC and adding redirect URLs from patching ConfigMap to patching the Platform Package.
  • content/en/docs/v1/operations/oidc/users_and_roles.md
    • Updated the reference for the Keycloak address from the ConfigMap root-host to the Platform Package publishing.host.
  • content/en/docs/v1/operations/troubleshooting/_index.md
    • Updated log tracking commands from deploy/cozystack to deploy/cozystack-operator.
  • content/en/docs/v1/operations/upgrades/_index.md
    • Completely rewrote the upgrade guide for v1.0, detailing the migration process from ConfigMaps to Packages, operator installation, and troubleshooting steps.
  • content/en/docs/v1/virtualization/_index.md
    • Updated instructions for configuring the CDI upload proxy from patching ConfigMap to patching the Platform Package.
  • content/en/docs/v1/virtualization/gpu.md
    • Updated instructions for enabling the GPU Operator from editing ConfigMap to patching the Platform Package's bundles.enabledPackages.
  • content/en/docs/v1/virtualization/proxmox-migration.md
    • Updated instructions for configuring the CDI upload proxy from patching ConfigMap to patching the Platform Package.
Activity
  • No human activity (comments, reviews) was detected on this pull request.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment Gemini (@gemini-code-assist) Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on Gemini (@gemini-code-assist) comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

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.

Code Review

This pull request does an excellent job of migrating the v1 documentation from ConfigMap-based configuration to the new Package CRD. The changes are comprehensive, covering installation, upgrades, and configuration of various components. The new reference pages for the Platform Package and the v1.0 upgrade guide are particularly valuable and well-written. I've identified a couple of minor inconsistencies in the kubectl patch commands for configuring the CDI upload proxy, for which I've provided suggestions. Overall, this is a fantastic and much-needed update to the documentation.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 11

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
content/en/docs/v1/virtualization/proxmox-migration.md (1)

209-209: ⚠️ Potential issue | 🟡 Minor

Stale ConfigMap reference in Troubleshooting section

Line 209 still refers to the old ConfigMap-based configuration:

Ensure Cozystack ConfigMap has expose-services: "dashboard,cdi-uploadproxy"

This directly contradicts the Platform Package migration described earlier in the same file and will confuse users following the updated Prerequisites.

📝 Proposed fix
-- Ensure Cozystack ConfigMap has `expose-services: "dashboard,cdi-uploadproxy"`
+- Ensure the Platform Package exposes `cdi-uploadproxy` (see Prerequisites, step 2)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/virtualization/proxmox-migration.md` at line 209, The
troubleshooting line referencing the old ConfigMap is stale—locate the exact
string 'Ensure Cozystack ConfigMap has `expose-services:
"dashboard,cdi-uploadproxy"`' and replace it with a Platform Package–centric
instruction that matches the migration described earlier (e.g., tell users to
ensure the Cozystack Platform Package has the expose-services setting configured
in its spec or via the Platform Package config, not in a ConfigMap) so the
Troubleshooting section aligns with the Prerequisites and migration guidance.
content/en/docs/v1/guides/resource-management/_index.md (1)

130-146: ⚠️ Potential issue | 🟡 Minor

Stale cpu-allocation-ratio (kebab-case) references were missed in this migration.

Lines 130, 134, and 146 still use the old ConfigMap-style kebab-case notation while the rest of the section has been updated to cpuAllocationRatio. This creates a direct inconsistency within the same page.

📝 Proposed fixes
-  ## actual cpu request: (cpu / cpu-allocation-ratio)
+  ## actual cpu request: (cpu / cpuAllocationRatio)
-### Example 1, default setting: `cpu-allocation-ratio: 10`
+### Example 1, default setting: `cpuAllocationRatio: 10`
-### Example 2: `cpu-allocation-ratio: 4`
+### Example 2: `cpuAllocationRatio: 4`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/guides/resource-management/_index.md` around lines 130 -
146, Replace the remaining kebab-case ConfigMap references of
"cpu-allocation-ratio" with the new camelCase key "cpuAllocationRatio" in this
markdown section so the page is consistent (update the occurrences shown in the
examples and headings that currently say `cpu-allocation-ratio` to
`cpuAllocationRatio`); ensure you update all inline code spans and any table
headings or example captions that reference the old key, e.g., the Example 1
title and Example 2 title and any inline code blocks that still contain
`cpu-allocation-ratio`.
content/en/docs/v1/operations/configuration/configmap.md (1)

159-164: ⚠️ Potential issue | 🟡 Minor

Two orphaned link-reference definitions.

[overwrite-parameters] (line 160) and [telemetry] (line 163) are defined but never referenced in the page body. They appear to be leftover from the ConfigMap reference page that was replaced. Dead reference definitions are harmless in most Markdown renderers but are confusing maintenance overhead and may indicate that content referencing them was inadvertently dropped.

🧹 Proposed cleanup
 [enable-disable]: {{% ref "/docs/v1/operations/configuration/components#enabling-and-disabling-components" %}}
-[overwrite-parameters]: {{% ref "/docs/v1/operations/configuration/components#overwriting-component-parameters" %}}
 [Resource Management]: {{% ref "/docs/v1/guides/resource-management#cpu-allocation-ratio" %}}
 [oidc]: {{% ref "/docs/v1/operations/oidc" %}}
-[telemetry]: {{% ref "/docs/v1/operations/configuration/telemetry" %}}
 [kube-ovn]: https://kubeovn.github.io/docs/en/guide/subnet/#join-subnet

Alternatively, re-add in-text references to [telemetry] and [overwrite-parameters] if the intended coverage was accidentally omitted (e.g., a note directing readers to the telemetry opt-out page and the overwrite-parameters section).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/configuration/configmap.md` around lines 159 -
164, Remove or restore the two orphaned link-reference definitions
`[overwrite-parameters]` and `[telemetry]` in the markdown: either delete those
unused reference lines from the bottom of the file (to clean up dead references)
or reintroduce in-text links that point to them (e.g., a sentence referring
readers to the overwrite-parameters section and the telemetry opt-out page) so
the definitions are actually referenced by the page.
content/en/docs/v1/getting-started/install-cozystack.md (1)

472-516: ⚠️ Potential issue | 🟠 Major

Tutorial has an unnecessary ingresses.apps.cozystack.io CRD patch absent from production guide.

This tutorial includes a third kubectl patch at lines 504–516 targeting ingresses.apps.cozystack.io ingress with externalIPs, but the production guide (install/cozystack/_index.md) achieves the same result with only two patches: the Platform Package and tenant ingress: true. The production guide then confirms externalIPs are applied by checking the service, without patching the Ingress CRD.

Since ingresses is a custom Cozystack CRD (v1alpha1) and the production guide documentation does not include or mention this step, the tutorial's third patch appears redundant. Either the tutorial includes an unnecessary step, or the custom Ingress CRD field being patched is not a documented or supported capability.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/getting-started/install-cozystack.md` around lines 472 -
516, Remove the third kubectl patch block that targets the custom CRD
"ingresses.apps.cozystack.io ingress" (the patch that sets "spec.externalIPs")
since the production guide only requires patching the Platform Package and
setting tenant "ingress: true"; instead either delete that entire code block or
replace it with a short note instructing readers to verify externalIPs on the
Service (e.g., kubectl get svc -n tenant-root) if confirmation is needed, and
ensure references to "externalIPs" and the "ingresses.apps.cozystack.io ingress"
patch are removed so the tutorial matches the production guide.
🧹 Nitpick comments (1)
content/en/docs/v1/operations/cluster/upgrade.md (1)

46-56: Consider adding a --set example to reinforce the warning.

The alert advises against --reuse-values and says to pass custom values with --set, but the code block immediately after shows no --set flag. A brief illustration would make this actionable:

✏️ Suggested enhancement
 ```bash
 helm upgrade cozystack oci://ghcr.io/cozystack/cozystack/cozy-installer \
   --version X.Y.Z \
-  --namespace cozy-system
+  --namespace cozy-system \
+  --set disableTelemetry=true   # pass any custom values explicitly

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @content/en/docs/v1/operations/cluster/upgrade.md around lines 46 - 56, Add a
concrete --set example to the existing helm upgrade invocation shown by the
"helm upgrade cozystack oci://ghcr.io/cozystack/cozystack/cozy-installer"
snippet: modify that command to demonstrate passing a custom value (e.g., "--set
disableTelemetry=true") alongside "--version X.Y.Z" and "--namespace
cozy-system" so readers see exactly how to pass explicit values instead of using
--reuse-values.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Inline comments:
In @content/en/docs/v1/guides/resource-management/_index.md:

  • Around line 109-110: The snippet hardcodes "variant: isp-full" under the spec
    key which can cause users to copy an incorrect deployment variant; update the
    example around the spec -> variant: isp-full entry to either replace the literal
    with a clear placeholder (e.g., ) or add an inline comment
    directly above/beside "variant: isp-full" stating that users must set this to
    the actual installed variant for their environment, and keep the identifier
    "variant: isp-full" so reviewers can find and verify the change.

In @content/en/docs/v1/install/cozystack/_index.md:

In @content/en/docs/v1/install/providers/hetzner.md:

  • Around line 318-323: Replace the hardcoded version in the Helm install snippet
    (the --version 1.0.0-beta.6 value in the helm install cozystack oci://... --version ... command) with the placeholder X.Y.Z and add the same guidance
    note used in telemetry.md telling users to substitute the desired released
    version; ensure the change mirrors the telemetry.md phrasing and keeps the rest
    of the Helm example unchanged.

In @content/en/docs/v1/operations/configuration/bundles.md:

  • Around line 88-111: Add a short clarifying paragraph to the bundles.md doc
    that maps the human-facing section bundle names to the v1 Package variant
    values: explicitly state that the section headings use bundle names (e.g.,
    "paas-full", "paas-hosted") while the Package spec's variant field must use the
    corresponding v1 values ("isp-full", "isp-hosted"); reference the Package field
    name variant and the example YAML snippet shown so readers know to use variant:
    isp-full or variant: isp-hosted rather than variant: paas-full.

In @content/en/docs/v1/operations/configuration/configmap.md:

  • Line 8: Remove the self-referential alias entry in the page's front matter:
    locate the aliases field that includes
    "/docs/v1/operations/configuration/configmap" and either delete that alias or
    replace it with a different external/previous URL; ensure the page front matter
    (aliases) no longer contains the identical canonical URL to avoid generating a
    redirect loop.

In @content/en/docs/v1/operations/upgrades/_index.md:

  • Around line 28-31: The prerequisites list fails to document that the
    --take-ownership flag requires Helm v3.17.0+, so update the Helm bullet (the
    line that currently reads "helm — required for installing the new operator") to
    explicitly state the minimum version (e.g., "helm v3.17.0+ — required for
    installing the new operator; required for the --take-ownership flag introduced
    in v3.17.0"). Ensure the text references the flag name "--take-ownership" and
    the minimum version "v3.17.0+" so users know to upgrade their Helm if they see
    the "unknown flag: --take-ownership" error.
  • Around line 75-82: The helm install example uses a non-prefixed version
    placeholder that conflicts with GHCR tags; update the command's --version
    placeholder in the helm install example (the line containing "--version
    <TARGET_VERSION>") to require the v-prefixed format (e.g., "--version v1.0.0")
    so it matches Cozystack release tags and the other doc example
    (install-cozystack.md) and will resolve correctly against the OCI chart
    registry.

In @content/en/docs/v1/virtualization/_index.md:

  • Around line 70-83: The current kubectl patch uses --type=merge which, because
    JSON Merge Patch replaces arrays, will overwrite the existing exposedServices
    array (removing pre-existing entries like "api"); change the patch to use a JSON
    Patch that appends items (use ops on the "exposedServices" array) or
    alternatively update the docs to show the full desired array so existing entries
    aren't lost; look for the kubectl patch command targeting packages.cozystack.io
    cozystack.cozystack-platform and the exposedServices field to implement the JSON
    Patch append or to replace the example with the complete list.

In @content/en/docs/v1/virtualization/gpu.md:

  • Line 55: The numbered sub-steps under the "1. Install the GPU Operator"
    section have a gap: after step 2 the next item is labeled 4 ("Ensure all pods
    are in a running state... sandbox-validator"), so renumber that item to 3 (and
    renumber any subsequent steps accordingly), update any in-text references to
    step numbers, and verify the ordered list markup is consistent so the sequence
    reads 1, 2, 3, ...; specifically edit the line containing "Ensure all pods are
    in a running state and all validations succeed with the sandbox-validator
    component" to be step 3 and adjust following steps if present.
  • Around line 38-51: The kubectl patch shown uses --type=merge which will
    replace the enabledPackages array instead of appending; update the instructions
    to use a JSON Patch add that appends to the array (using an "add" operation with
    path ending in "/-") or, if you keep --type=merge, add a clear warning that
    enabledPackages will be replaced and show the safe two-step approach (initialize
    enabledPackages to an empty array then merge) so users don't accidentally lose
    existing entries; reference the kubectl patch command, the --type=merge flag,
    and the enabledPackages field when making the change.

In @content/en/docs/v1/virtualization/proxmox-migration.md:

  • Around line 26-38: The patch example uses kubectl patch with --type=merge
    which performs a JSON Merge Patch and will replace arrays like "exposedServices"
    wholesale; update the proxmox-migration.md snippet to add a short inline note
    next to the kubectl patch example warning that JSON Merge Patch replaces arrays
    and that users must include all desired services (e.g., include existing
    "ingress-nginx" as well) or first read the current value (suggest using kubectl
    get ... -o jsonpath or kubectl get -o yaml) before applying the patch so they
    don't accidentally drop entries.

Outside diff comments:
In @content/en/docs/v1/getting-started/install-cozystack.md:

  • Around line 472-516: Remove the third kubectl patch block that targets the
    custom CRD "ingresses.apps.cozystack.io ingress" (the patch that sets
    "spec.externalIPs") since the production guide only requires patching the
    Platform Package and setting tenant "ingress: true"; instead either delete that
    entire code block or replace it with a short note instructing readers to verify
    externalIPs on the Service (e.g., kubectl get svc -n tenant-root) if
    confirmation is needed, and ensure references to "externalIPs" and the
    "ingresses.apps.cozystack.io ingress" patch are removed so the tutorial matches
    the production guide.

In @content/en/docs/v1/guides/resource-management/_index.md:

  • Around line 130-146: Replace the remaining kebab-case ConfigMap references of
    "cpu-allocation-ratio" with the new camelCase key "cpuAllocationRatio" in this
    markdown section so the page is consistent (update the occurrences shown in the
    examples and headings that currently say cpu-allocation-ratio to
    cpuAllocationRatio); ensure you update all inline code spans and any table
    headings or example captions that reference the old key, e.g., the Example 1
    title and Example 2 title and any inline code blocks that still contain
    cpu-allocation-ratio.

In @content/en/docs/v1/operations/configuration/configmap.md:

  • Around line 159-164: Remove or restore the two orphaned link-reference
    definitions [overwrite-parameters] and [telemetry] in the markdown: either
    delete those unused reference lines from the bottom of the file (to clean up
    dead references) or reintroduce in-text links that point to them (e.g., a
    sentence referring readers to the overwrite-parameters section and the telemetry
    opt-out page) so the definitions are actually referenced by the page.

In @content/en/docs/v1/virtualization/proxmox-migration.md:

  • Line 209: The troubleshooting line referencing the old ConfigMap is
    stale—locate the exact string 'Ensure Cozystack ConfigMap has expose-services: "dashboard,cdi-uploadproxy"' and replace it with a Platform Package–centric
    instruction that matches the migration described earlier (e.g., tell users to
    ensure the Cozystack Platform Package has the expose-services setting configured
    in its spec or via the Platform Package config, not in a ConfigMap) so the
    Troubleshooting section aligns with the Prerequisites and migration guidance.

Duplicate comments:
In @content/en/docs/v1/getting-started/install-cozystack.md:

  • Around line 84-92: The helm command snippet uses an inconsistent OCI tag
    format; update the snippet's --version value (in the "helm install cozystack
    ..." block) to match the actual OCI tag format used elsewhere (remove the
    leading "v" so it reads --version 1.0.0 or replace with a placeholder like
    --version <CHART_TAG>) and add a short note telling readers to verify the exact
    tag format with the verification script referenced in the upgrades doc; ensure
    the change keeps the same helm install line and --version flag.

Nitpick comments:
In @content/en/docs/v1/operations/cluster/upgrade.md:

  • Around line 46-56: Add a concrete --set example to the existing helm upgrade
    invocation shown by the "helm upgrade cozystack
    oci://ghcr.io/cozystack/cozystack/cozy-installer" snippet: modify that command
    to demonstrate passing a custom value (e.g., "--set disableTelemetry=true")
    alongside "--version X.Y.Z" and "--namespace cozy-system" so readers see exactly
    how to pass explicit values instead of using --reuse-values.

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

The CDI upload proxy URL should be configured by patching the
cozystack.kubevirt-cdi Package, not the Platform Package.

Co-Authored-By: Claude <[email protected]>
Signed-off-by: Kirill Ilin <[email protected]>

@coderabbitai coderabbitai Bot left a comment

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.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@content/en/docs/v1/virtualization/_index.md`:
- Around line 70-83: The kubectl patch shown uses --type=merge which will
silently replace the exposedServices array
(spec.components.platform.values.publishing.exposedServices) instead of
appending; change the instruction to either use a JSON Patch (kubectl patch
--type=json) that appends items to the exposedServices array (op:add against the
correct JSON path) or explicitly document and show the full desired
exposedServices array so users replace it intentionally; update the example
command and surrounding prose to present Option A (JSON Patch append) or Option
B (explicit full list with a callout) and reference exposedServices and
spec.components.platform.values.publishing in the text so readers know which
field is affected.

- Replace hardcoded 1.0.0-beta.6 with placeholder X.Y.Z and link to
  releases page (install guide, hetzner, getting-started)
- Standardize Helm version format without v prefix across all docs
  to match OCI registry tag format
- Remove self-referential alias in Platform Package reference
- Fix step numbering gap in gpu.md (4 -> 3)
- Add warnings that --type=merge replaces arrays wholesale for
  exposedServices and enabledPackages patches
- Rename paas-full/paas-hosted to isp-full/isp-hosted in bundles.md
  to match actual variant names
- Fix stale ConfigMap reference in proxmox-migration.md troubleshooting
- Remove stale TODO comment in virtualization/_index.md
- Fix CDI customization to patch cozystack.kubevirt-cdi Package directly

Co-Authored-By: Claude <[email protected]>
Signed-off-by: Kirill Ilin <[email protected]>
…ning

- Replace ConfigMap/paas-full references in backup-and-recovery, nfs,
  vpc, and development docs with Platform Package equivalents
- Rename configmap.md to platform-package.md with URL aliases
- Create reuse-values-warning shortcode to DRY the repeated warning
  in upgrade.md and telemetry.md
- Add JSON Merge Patch array-replacement warning to install-cozystack
  section 5.3 for exposedServices

Co-Authored-By: Claude <[email protected]>
Signed-off-by: Kirill Ilin <[email protected]>

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
content/en/docs/v1/networking/vpc.md (1)

10-14: ⚠️ Potential issue | 🟡 Minor

Direct edit to autogenerated file — verify the upstream source was updated.

The file header on lines 10–14 states "Don't edit this file directly; edit sources instead" and lists the true source:

  • packages/apps/vpc/README.md in the upstream cozystack/cozystack repo

The paas-full → isp-full change on line 22 is made here directly. Note that content/en/docs/v1/networking/_include/vpc.md (mentioned in the header metadata) only contains frontmatter and is not the actual content source. The hack/update_apps.sh script regenerates this file from the upstream repository. If the upstream README.md has not been updated with isp-full, the next regeneration will silently revert this change.

Please confirm that the upstream packages/apps/vpc/README.md in cozystack/cozystack has been updated accordingly.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/networking/vpc.md` around lines 10 - 14, This change was
made directly to the autogenerated doc; revert the direct edit and update the
upstream source instead: open packages/apps/vpc/README.md in the
cozystack/cozystack repo and confirm the "paas-full" → "isp-full" change is
present there, update that README if needed, then run hack/update_apps.sh (or
the repository's regeneration process) to regenerate
content/en/docs/v1/networking/vpc.md from
content/en/docs/v1/networking/_include/vpc.md and the upstream README so the
change persists and the header warning remains accurate.
content/en/docs/v1/install/providers/hetzner.md (1)

394-394: ⚠️ Potential issue | 🟡 Minor

Typo: "Cozysatck's" → "Cozystack's".

✏️ Proposed fix
-Hetzner requires using its own RobotLB instead of Cozysatck's default MetalLB.
+Hetzner requires using its own RobotLB instead of Cozystack's default MetalLB.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/install/providers/hetzner.md` at line 394, Fix the typo in
the documentation string "Hetzner requires using its own RobotLB instead of
Cozysatck's default MetalLB." by replacing "Cozysatck's" with "Cozystack's" so
the sentence reads "Hetzner requires using its own RobotLB instead of
Cozystack's default MetalLB."; update the exact phrase in the Markdown content
where it appears.
🧹 Nitpick comments (3)
layouts/shortcodes/reuse-values-warning.html (1)

4-5: Replace <br/><br/> with <p> tags for semantic paragraph separation.

<br/><br/> is a presentational hack; <p> tags convey paragraph structure to screen readers and are easier to style via CSS.

♻️ Proposed refactor
-Do not use <code>--reuse-values</code> when upgrading the Cozystack operator. The Helm chart values contain hardcoded references to the platform OCI repository. Reusing old values would result in the operator pointing to old package versions.
-<br/><br/>
-If you have custom values (e.g., <code>disableTelemetry</code>), pass them explicitly with <code>--set</code>.
+<p>Do not use <code>--reuse-values</code> when upgrading the Cozystack operator. The Helm chart values contain hardcoded references to the platform OCI repository. Reusing old values would result in the operator pointing to old package versions.</p>
+<p>If you have custom values (e.g., <code>disableTelemetry</code>), pass them explicitly with <code>--set</code>.</p>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@layouts/shortcodes/reuse-values-warning.html` around lines 4 - 5, Replace the
presentational line breaks with semantic paragraph elements in the
reuse-values-warning snippet: remove the literal "<br/><br/>" and wrap the
sentence "If you have custom values (e.g., <code>disableTelemetry</code>), pass
them explicitly with <code>--set</code>." in a proper <p>…</p> element so screen
readers and CSS can target a semantic paragraph; ensure the paragraph is
correctly opened and closed within the same snippet.
content/en/docs/v1/storage/nfs.md (1)

14-32: Move the array-clobbering warning to before the code block.

The {{% alert %}} warning about JSON Merge Patch replacing enabledPackages wholesale appears after the kubectl patch command. A user who copies and runs the command before reading the warning will silently wipe any pre-existing entries. Swapping the order ensures the caution is visible before execution.

♻️ Proposed reordering
+{{% alert color="warning" %}}
+JSON Merge Patch (`--type=merge`) replaces arrays wholesale. If you already have entries in `enabledPackages`, include all of them in the patch to avoid losing existing values.
+{{% /alert %}}
+
 ```bash
 kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
   "spec": {
     "components": {
       "platform": {
         "values": {
           "bundles": {
             "enabledPackages": ["nfs-driver"]
           }
         }
       }
     }
   }
 }'

-{{% alert color="warning" %}}
-JSON Merge Patch (--type=merge) replaces arrays wholesale. If you already have entries in enabledPackages, include all of them in the patch to avoid losing existing values.
-{{% /alert %}}

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @content/en/docs/v1/storage/nfs.md around lines 14 - 32, Move the warning
alert (the {{% alert color="warning" %}} block) so it appears immediately before
the kubectl patch code block rather than after it; update the document around
the kubectl patch command and the {{% alert %}} block so the caution about JSON
Merge Patch replacing arrays wholesale is visible above the kubectl patch
example (refer to the kubectl patch command and the {{% alert color="warning"
%}} block to locate the elements to reorder).


</details>

</blockquote></details>
<details>
<summary>content/en/docs/v1/operations/upgrades/_index.md (1)</summary><blockquote>

`95-99`: **Migration script references `main` branch — pin to a release tag for reproducibility.**

The `curl | bash` URL points to the `main` branch of the cozystack repo. If the script is updated after a release (e.g., for v1.1 migration), users running this guide for a v0.41→v1.0 upgrade could silently execute a different script version.



<details>
<summary>♻️ Proposed fix</summary>

```diff
-curl -fsSL https://raw.githubusercontent.com/cozystack/cozystack/main/hack/migrate-to-version-1.0.sh | bash
+curl -fsSL https://raw.githubusercontent.com/cozystack/cozystack/v<TARGET_VERSION>/hack/migrate-to-version-1.0.sh | bash

Apply the same change to the download-and-inspect alternative on lines 112–113.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/upgrades/_index.md` around lines 95 - 99, The
migration instruction currently downloads the script from the repository "main"
branch (the curl | bash URL) which is not reproducible; update the URL to
reference the specific release tag for v1.0 (or the intended release) instead of
"main" so the exact script version is fetched, and make the same change for the
alternate download-and-inspect command mentioned later (the download URL on
lines 112–113) so both examples point to the same pinned release tag.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@content/en/docs/v1/getting-started/install-cozystack.md`:
- Around line 472-491: Add the same array-replacement warning you added for
exposedServices: note that the kubectl patch using --type=merge will replace the
externalIPs array wholesale (externalIPs under publishing) and can remove
existing entries on re-run; advise users to either supply the complete desired
array or use a JSON patch (kubectl patch --type=json) to add/modify individual
elements. Ensure the warning text references externalIPs and --type=merge so
readers understand the exact risk and alternatives.

In `@content/en/docs/v1/install/cozystack/_index.md`:
- Around line 550-570: Add a brief warning that using kubectl patch with
--type=merge on the Platform Package will replace the entire externalIPs array,
so subsequent runs with different IP sets will discard previous entries; update
the docs around the kubectl patch example (the command that patches
packages.cozystack.io cozystack.cozystack-platform and the "externalIPs" field)
to include a short note advising users to append or re-run with the full desired
list (or use a different patch strategy) to avoid unintentionally removing
existing IPs.
- Around line 689-707: The patch example uses --type=merge against the
exposedServices array which will silently replace the entire array
(exposedServices), so add the reuse-values-warning shortcode immediately above
the kubectl patch example and either (A) show a full-array example under the
patch (e.g., include all desired entries like "api" and "dashboard" in the
exposedServices value) or (B) replace the merge strategy with a JSON Patch
(--type=json) that appends an item; reference the kubectl patch command, the
--type=merge/--type=json flag, the exposedServices key, and the
reuse-values-warning shortcode when making the change.

In `@content/en/docs/v1/install/providers/hetzner.md`:
- Around line 356-361: Fix the typo "Cozysatck's" to "Cozystack's" in the
document and add a short clarifying note in the Hetzner `isp-full` Platform
Package section explaining why `joinCIDR` is omitted (reference the `isp-full`
example in bundles.md which includes `joinCIDR: "100.64.0.0/16"`), stating that
Hetzner's vSwitch provides layer‑2 node connectivity so KubeSpan/WireGuard
`joinCIDR` is unnecessary and users should not copy the generic example into
their Hetzner config; mention the keys `joinCIDR`, `isp-full`, and `vSwitch` to
locate where to add the clarification.

In `@content/en/docs/v1/operations/configuration/bundles.md`:
- Line 223: Fix the typo in the sentence fragment "if this your first time
installing Cozystack" by inserting the missing word "is" so the sentence reads
"if this is your first time installing Cozystack"; update the text near the
phrase `isp-full` in the Bundles documentation (the line containing "if this
your first time installing Cozystack") to use the corrected wording.
- Line 58: Update the stale link target for the [kubernetes operators]
reference: replace the old path
"packages/core/platform/templates/bundles/paas.yaml" with the current bundle
path under "packages/core/platform/bundles/" (e.g.,
"packages/core/platform/bundles/isp-hosted.yaml" or
"packages/core/platform/bundles/isp-full.yaml" depending on which bundle is
intended) and verify the referenced file exists in the repo; if the paas.yaml
functionality was removed, remove the link instead.

In `@content/en/docs/v1/operations/configuration/platform-package.md`:
- Around line 159-163: Remove or use the two orphaned link reference
definitions: either delete the `[overwrite-parameters]` and `[telemetry]`
reference lines from the link list or add in-text anchors that point to them
(for example, link the components table rows that discuss overriding parameter
values to `[overwrite-parameters]`, and add a mention of telemetry where
`[telemetry]` is relevant); update the same list entries
(`[overwrite-parameters]` and `[telemetry]`) so only referenced link labels
remain and ensure any added prose uses those exact labels to avoid leaving
unused definitions.

In `@content/en/docs/v1/operations/upgrades/_index.md`:
- Around line 75-82: Replace the generic <TARGET_VERSION> placeholder in the
helm install example with the standard X.Y.Z placeholder and update the example
value to show the v-prefixed form (e.g., v1.0.0); also add a one-line
clarification after the example that the --version must exactly match the
published OCI chart tag (include the leading "v" when the chart is published as
vX.Y.Z). Target the helm install example block and the explanatory line
referencing `1.0.0` so both the placeholder and the note about the v-prefix are
updated.

---

Outside diff comments:
In `@content/en/docs/v1/install/providers/hetzner.md`:
- Line 394: Fix the typo in the documentation string "Hetzner requires using its
own RobotLB instead of Cozysatck's default MetalLB." by replacing "Cozysatck's"
with "Cozystack's" so the sentence reads "Hetzner requires using its own RobotLB
instead of Cozystack's default MetalLB."; update the exact phrase in the
Markdown content where it appears.

In `@content/en/docs/v1/networking/vpc.md`:
- Around line 10-14: This change was made directly to the autogenerated doc;
revert the direct edit and update the upstream source instead: open
packages/apps/vpc/README.md in the cozystack/cozystack repo and confirm the
"paas-full" → "isp-full" change is present there, update that README if needed,
then run hack/update_apps.sh (or the repository's regeneration process) to
regenerate content/en/docs/v1/networking/vpc.md from
content/en/docs/v1/networking/_include/vpc.md and the upstream README so the
change persists and the header warning remains accurate.

---

Duplicate comments:
In `@content/en/docs/v1/operations/configuration/platform-package.md`:
- Around line 7-8: Update the frontmatter aliases/redirects in
platform-package.md so the old URL /docs/v1/operations/configuration/configmap
is listed as a redirect to the new page (platform-package) and remove any entry
that would redirect the new page to itself; specifically edit the
aliases/redirect_from section in
content/en/docs/v1/operations/configuration/platform-package.md to include the
old path (/docs/v1/operations/configuration/configmap) and ensure there is no
self-referential alias pointing platform-package back to platform-package.

In `@content/en/docs/v1/operations/upgrades/_index.md`:
- Around line 28-29: Update the prerequisites line for Helm to specify a minimum
version that supports the --take-ownership flag (Helm v3.17.0); edit the list
entry that currently reads "helm — required for installing the new operator" to
mention "helm (>= v3.17.0) — required for installing the new operator" and
optionally add a short parenthetical note that Step 1 uses the --take-ownership
flag so older Helm versions (<= v3.16.x) will fail.

In `@content/en/docs/v1/virtualization/proxmox-migration.md`:
- Around line 23-57: Update the note and patches so they clearly warn that the
"exposedServices" array replacement will remove any services not listed
(referencing the exposedServices array) and ensure the kubevirt-cdi Package
patch uses the exact package name used elsewhere (cozystack.kubevirt-cdi) to
match virtualization/_index.md; if the canonical package name differs, change
the patch target to the correct package name and call out the uploadProxyURL
value update for the kubevirt-cdi component.

---

Nitpick comments:
In `@content/en/docs/v1/operations/upgrades/_index.md`:
- Around line 95-99: The migration instruction currently downloads the script
from the repository "main" branch (the curl | bash URL) which is not
reproducible; update the URL to reference the specific release tag for v1.0 (or
the intended release) instead of "main" so the exact script version is fetched,
and make the same change for the alternate download-and-inspect command
mentioned later (the download URL on lines 112–113) so both examples point to
the same pinned release tag.

In `@content/en/docs/v1/storage/nfs.md`:
- Around line 14-32: Move the warning alert (the {{% alert color="warning" %}}
block) so it appears immediately before the kubectl patch code block rather than
after it; update the document around the kubectl patch command and the {{% alert
%}} block so the caution about JSON Merge Patch replacing arrays wholesale is
visible above the kubectl patch example (refer to the kubectl patch command and
the {{% alert color="warning" %}} block to locate the elements to reorder).

In `@layouts/shortcodes/reuse-values-warning.html`:
- Around line 4-5: Replace the presentational line breaks with semantic
paragraph elements in the reuse-values-warning snippet: remove the literal
"<br/><br/>" and wrap the sentence "If you have custom values (e.g.,
<code>disableTelemetry</code>), pass them explicitly with <code>--set</code>."
in a proper <p>…</p> element so screen readers and CSS can target a semantic
paragraph; ensure the paragraph is correctly opened and closed within the same
snippet.

Comment on lines +472 to 491
First, patch the Platform Package with the external IPs:

```bash
kubectl patch -n cozy-system configmap cozystack --type=merge -p '{
"data": {
"expose-external-ips": "192.168.100.11,192.168.100.12,192.168.100.13"
kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
"spec": {
"components": {
"platform": {
"values": {
"publishing": {
"externalIPs": [
"192.168.100.11",
"192.168.100.12",
"192.168.100.13"
]
}
}
}
}
}
}'

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.

⚠️ Potential issue | 🟡 Minor

Missing array-replacement warning for externalIPs.

externalIPs is an array field. This --type=merge patch replaces it wholesale — the same concern that prompted the warning added for exposedServices at lines 644–646. While the risk is lower here (the field is empty on first install), adding a consistent note prevents confusion for users who revisit this command later.

📝 Suggested addition
 First, patch the Platform Package with the external IPs:
+
+> **Note:** This patch replaces the entire `externalIPs` array. Include all IPs you want assigned.

 ```bash
 kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
First, patch the Platform Package with the external IPs:
```bash
kubectl patch -n cozy-system configmap cozystack --type=merge -p '{
"data": {
"expose-external-ips": "192.168.100.11,192.168.100.12,192.168.100.13"
kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
"spec": {
"components": {
"platform": {
"values": {
"publishing": {
"externalIPs": [
"192.168.100.11",
"192.168.100.12",
"192.168.100.13"
]
}
}
}
}
}
}'
First, patch the Platform Package with the external IPs:
> **Note:** This patch replaces the entire `externalIPs` array. Include all IPs you want assigned.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/getting-started/install-cozystack.md` around lines 472 -
491, Add the same array-replacement warning you added for exposedServices: note
that the kubectl patch using --type=merge will replace the externalIPs array
wholesale (externalIPs under publishing) and can remove existing entries on
re-run; advise users to either supply the complete desired array or use a JSON
patch (kubectl patch --type=json) to add/modify individual elements. Ensure the
warning text references externalIPs and --type=merge so readers understand the
exact risk and alternatives.

Comment on lines +550 to 570
First, patch the Platform Package with IPs to expose:

```bash
kubectl patch -n cozy-system configmap cozystack --type=merge -p '{
"data": {
"expose-external-ips": "192.168.100.11,192.168.100.12,192.168.100.13"
kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
"spec": {
"components": {
"platform": {
"values": {
"publishing": {
"externalIPs": [
"192.168.100.11",
"192.168.100.12",
"192.168.100.13"
]
}
}
}
}
}
}'
```

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.

⚠️ Potential issue | 🟠 Major

--type=merge replaces the externalIPs array wholesale — note the behavior for subsequent invocations.

If a user adds more nodes later and re-runs this patch with a different set of IPs, the previous list is silently discarded. The PR adds explicit warnings for this behavior in other places; a brief note here would be consistent.

✏️ Proposed fix
+{{% reuse-values-warning %}}
+
 ```bash
 kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/install/cozystack/_index.md` around lines 550 - 570, Add a
brief warning that using kubectl patch with --type=merge on the Platform Package
will replace the entire externalIPs array, so subsequent runs with different IP
sets will discard previous entries; update the docs around the kubectl patch
example (the command that patches packages.cozystack.io
cozystack.cozystack-platform and the "externalIPs" field) to include a short
note advising users to append or re-run with the full desired list (or use a
different patch strategy) to avoid unintentionally removing existing IPs.

Comment on lines +689 to 707
If you included `dashboard` in `publishing.exposedServices` of your Platform Package, the Cozystack Dashboard should already be available.

If the initial configmap did not have this line, patch it with the following command:
If the initial Package did not include it, patch the Platform Package:

```bash
kubectl patch -n cozy-system cm cozystack --type=merge -p '{"data":{
"expose-services": "dashboard"
}}'
kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
"spec": {
"components": {
"platform": {
"values": {
"publishing": {
"exposedServices": ["dashboard"]
}
}
}
}
}
}'
```

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.

⚠️ Potential issue | 🟠 Major

--type=merge will silently replace the entire exposedServices array — add the reuse-values-warning shortcode here.

A user who initially configured exposedServices: [api, dashboard, cdi-uploadproxy, vm-exportproxy] and later runs this patch to add dashboard will end up with exposedServices: ["dashboard"] only — silently removing all other exposed services. The PR explicitly adds a reuse-values-warning shortcode to address this exact array-wholesale-replacement behavior of JSON Merge Patch, but this patch example is missing it.

Options:

  1. Add the reuse-values-warning shortcode above the patch command.
  2. Replace with a JSON Patch (--type=json) that appends rather than replaces, or document that the user must include all desired entries.
✏️ Proposed fix (option 1 — add shortcode + full-array example)
+{{% reuse-values-warning %}}
+
 ```bash
 kubectl patch packages.cozystack.io cozystack.cozystack-platform --type=merge -p '{
   "spec": {
     "components": {
       "platform": {
         "values": {
           "publishing": {
-            "exposedServices": ["dashboard"]
+            "exposedServices": ["dashboard", "api"]
           }
         }
       }
     }
   }
 }'
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion
If the initial Package did not include it, patch the Platform Package:

{{% reuse-values-warning %}}

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/install/cozystack/_index.md` around lines 689 - 707, The
patch example uses --type=merge against the exposedServices array which will
silently replace the entire array (exposedServices), so add the
reuse-values-warning shortcode immediately above the kubectl patch example and
either (A) show a full-array example under the patch (e.g., include all desired
entries like "api" and "dashboard" in the exposedServices value) or (B) replace
the merge strategy with a JSON Patch (--type=json) that appends an item;
reference the kubectl patch command, the --type=merge/--type=json flag, the
exposedServices key, and the reuse-values-warning shortcode when making the
change.

Comment on lines +356 to +361
networking:
## podSubnets from the node config
podCIDR: "10.244.0.0/16"
podGateway: "10.244.0.1"
## serviceSubnets from the node config
serviceCIDR: "10.96.0.0/16"

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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

git ls-files | grep -E "hetzner\.md|bundles\.md" | head -20

Repository: cozystack/website

Length of output: 334


🏁 Script executed:

wc -l content/en/docs/v1/install/providers/hetzner.md

Repository: cozystack/website

Length of output: 112


🏁 Script executed:

sed -n '340,370p' content/en/docs/v1/install/providers/hetzner.md

Repository: cozystack/website

Length of output: 923


🏁 Script executed:

sed -n '390,400p' content/en/docs/v1/install/providers/hetzner.md

Repository: cozystack/website

Length of output: 506


🏁 Script executed:

rg -n "isp-full" content/en/docs/v1/operations/configuration/bundles.md -A 30 | head -60

Repository: cozystack/website

Length of output: 4767


🏁 Script executed:

rg -n "## isp-full|### isp-full" content/en/docs/v1/operations/configuration/bundles.md -A 80 | head -120

Repository: cozystack/website

Length of output: 43


🏁 Script executed:

rg -n "joinCIDR" content/en/docs/v1/operations/configuration/bundles.md

Repository: cozystack/website

Length of output: 100


🏁 Script executed:

sed -n '90,115p' content/en/docs/v1/operations/configuration/bundles.md

Repository: cozystack/website

Length of output: 656


🏁 Script executed:

rg -n "joinCIDR" --type yaml -i content/en/docs/

Repository: cozystack/website

Length of output: 43


🏁 Script executed:

rg -n "KubeSpan\|WireGuard\|joinSubnets" content/en/docs/v1/ -i

Repository: cozystack/website

Length of output: 43


🏁 Script executed:

rg -n "vSwitch\|network\|connectivity" content/en/docs/v1/install/providers/hetzner.md -i -A 2 | head -40

Repository: cozystack/website

Length of output: 43


🏁 Script executed:

head -100 content/en/docs/v1/install/providers/hetzner.md | tail -50

Repository: cozystack/website

Length of output: 2034


Fix typo: "Cozysatck's" → "Cozystack's" at line 394.

Additionally, the Hetzner isp-full Platform Package omits joinCIDR compared to the generic isp-full example in bundles.md (which includes joinCIDR: "100.64.0.0/16"). While this is intentional—Hetzner's vSwitch provides direct layer-2 node connectivity, eliminating the need for KubeSpan/WireGuard—the documentation should clarify this difference to prevent users from incorrectly copying the generic example into their Hetzner configuration.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/install/providers/hetzner.md` around lines 356 - 361, Fix
the typo "Cozysatck's" to "Cozystack's" in the document and add a short
clarifying note in the Hetzner `isp-full` Platform Package section explaining
why `joinCIDR` is omitted (reference the `isp-full` example in bundles.md which
includes `joinCIDR: "100.64.0.0/16"`), stating that Hetzner's vSwitch provides
layer‑2 node connectivity so KubeSpan/WireGuard `joinCIDR` is unnecessary and
users should not copy the generic example into their Hetzner config; mention the
keys `joinCIDR`, `isp-full`, and `vSwitch` to locate where to add the
clarification.

[talos linux]: {{% ref "/docs/v1/guides/platform-stack#talos-linux" %}}
[kubernetes]: {{% ref "/docs/v1/guides/platform-stack#kubernetes" %}}
[kubernetes operators]: https://github.com/cozystack/cozystack/blob/c0f742595f1e942a9bf4921e9655142cc9040551/packages/core/platform/bundles/paas-full.yaml#L185-L243
[kubernetes operators]: https://github.com/cozystack/cozystack/blob/main/packages/core/platform/templates/bundles/paas.yaml

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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for paas.yaml and isp variants in templates/bundles directory
echo "=== Checking for files in templates/bundles ===" 
fd . packages/core/platform/templates/bundles/ 2>/dev/null || echo "Directory not found or inaccessible"

echo -e "\n=== Searching for references to paas.yaml in markdown ===" 
rg "paas\.yaml" --type md

echo -e "\n=== Searching for isp-full and isp-hosted yaml files ===" 
rg "isp-(full|hosted)\.yaml" --type md | head -20

Repository: cozystack/website

Length of output: 976


Fix stale [kubernetes operators] link that still references old paas.yaml path.

The link at line 58 targets packages/core/platform/templates/bundles/paas.yaml, but other bundle references in the same file point to packages/core/platform/bundles/isp-full.yaml and packages/core/platform/bundles/isp-hosted.yaml (without the "templates/" subdirectory). This path structure mismatch indicates the paas.yaml link was not updated during the paas→isp migration and likely points to a stale or nonexistent path. Update it to reference the correct bundle file or remove it if paas.yaml no longer exists.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/configuration/bundles.md` at line 58, Update
the stale link target for the [kubernetes operators] reference: replace the old
path "packages/core/platform/templates/bundles/paas.yaml" with the current
bundle path under "packages/core/platform/bundles/" (e.g.,
"packages/core/platform/bundles/isp-hosted.yaml" or
"packages/core/platform/bundles/isp-full.yaml" depending on which bundle is
intended) and verify the referenced file exists in the repo; if the paas.yaml
functionality was removed, remove the link instead.

To deploy a selected bundle, follow the [Cozystack installation guide]({{% ref "/docs/v1/install/cozystack" %}})
or [provider-specific guides]({{% ref "/docs/v1/install/providers" %}}).
However, if this your first time installing Cozystack, it's best to use the complete bundle `paas-full` and
However, if this your first time installing Cozystack, it's best to use the complete bundle `isp-full` and

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.

⚠️ Potential issue | 🟡 Minor

Typo: missing "is" — "if this your first time" → "if this is your first time".

✏️ Proposed fix
-However, if this your first time installing Cozystack, it's best to use the complete bundle `isp-full` and
+However, if this is your first time installing Cozystack, it's best to use the complete bundle `isp-full` and
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
However, if this your first time installing Cozystack, it's best to use the complete bundle `isp-full` and
However, if this is your first time installing Cozystack, it's best to use the complete bundle `isp-full` and
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/configuration/bundles.md` at line 223, Fix the
typo in the sentence fragment "if this your first time installing Cozystack" by
inserting the missing word "is" so the sentence reads "if this is your first
time installing Cozystack"; update the text near the phrase `isp-full` in the
Bundles documentation (the line containing "if this your first time installing
Cozystack") to use the corrected wording.

Comment on lines +159 to +163
[enable-disable]: {{% ref "/docs/v1/operations/configuration/components#enabling-and-disabling-components" %}}
[overwrite-parameters]: {{% ref "/docs/v1/operations/configuration/components#overwriting-component-parameters" %}}
[Resource Management]: {{% ref "/docs/v1/guides/resource-management#cpu-allocation-ratio" %}}
[oidc]: {{% ref "/docs/v1/operations/oidc" %}}
[telemetry]: {{% ref "/docs/v1/operations/configuration/telemetry" %}}

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.

⚠️ Potential issue | 🟡 Minor

Unused link reference [overwrite-parameters].

[overwrite-parameters] is defined at line 160 but never referenced as a link anchor in the document body. [telemetry] at line 163 appears to be similarly unused. These orphaned definitions should either be removed or linked somewhere in the text.

🛠️ Proposed fix
 [enable-disable]: {{% ref "/docs/v1/operations/configuration/components#enabling-and-disabling-components" %}}
-[overwrite-parameters]: {{% ref "/docs/v1/operations/configuration/components#overwriting-component-parameters" %}}
 [Resource Management]: {{% ref "/docs/v1/guides/resource-management#cpu-allocation-ratio" %}}
 [oidc]: {{% ref "/docs/v1/operations/oidc" %}}
-[telemetry]: {{% ref "/docs/v1/operations/configuration/telemetry" %}}
 [kube-ovn]: https://kubeovn.github.io/docs/en/guide/subnet/#join-subnet

Or add prose references in the table where these links are relevant (e.g., link [overwrite-parameters] from the components table rows that discuss overriding values).

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[enable-disable]: {{% ref "/docs/v1/operations/configuration/components#enabling-and-disabling-components" %}}
[overwrite-parameters]: {{% ref "/docs/v1/operations/configuration/components#overwriting-component-parameters" %}}
[Resource Management]: {{% ref "/docs/v1/guides/resource-management#cpu-allocation-ratio" %}}
[oidc]: {{% ref "/docs/v1/operations/oidc" %}}
[telemetry]: {{% ref "/docs/v1/operations/configuration/telemetry" %}}
[enable-disable]: {{% ref "/docs/v1/operations/configuration/components#enabling-and-disabling-components" %}}
[Resource Management]: {{% ref "/docs/v1/guides/resource-management#cpu-allocation-ratio" %}}
[oidc]: {{% ref "/docs/v1/operations/oidc" %}}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@content/en/docs/v1/operations/configuration/platform-package.md` around lines
159 - 163, Remove or use the two orphaned link reference definitions: either
delete the `[overwrite-parameters]` and `[telemetry]` reference lines from the
link list or add in-text anchors that point to them (for example, link the
components table rows that discuss overriding parameter values to
`[overwrite-parameters]`, and add a mention of telemetry where `[telemetry]` is
relevant); update the same list entries (`[overwrite-parameters]` and
`[telemetry]`) so only referenced link labels remain and ensure any added prose
uses those exact labels to avoid leaving unused definitions.

Create a namespace `cozy-system`, then apply the ConfigMap created in the previous step and the installer configuration:
```bash
helm install cozystack oci://ghcr.io/cozystack/cozystack/cozy-installer \
--version X.Y.Z \

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.

Shuld it be latest?

cc Aleksei Sviridkin (@lexfrei)

Suggested change
--version X.Y.Z \

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.

I think so

"platform": {
"values": {
"publishing": {
"exposedServices": ["dashboard"]

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.

This will disable previusly added

 exposedServices:
     - dashboard
     - api

@kvaps
Andrei Kvapil (kvaps) merged commit bd7b3df into main Feb 19, 2026
6 checks passed
@kvaps
Andrei Kvapil (kvaps) deleted the install-v1-docs branch February 19, 2026 08:52
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