docs(tenants): document the checkbox-then-edit-CR customization pattern#485
docs(tenants): document the checkbox-then-edit-CR customization pattern#485
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughA new documentation section titled "Customizing Tenant Services" was added to the tenants guide, explaining how tenant-level boolean flags generate default application CRs and how to manually edit these resources after creation. Includes examples and guidance on proper customization workflows. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
✅ Deploy Preview for cozystack ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Code Review
This pull request adds a new section to the documentation titled "Customizing Tenant Services," which explains how to modify the configuration of services like etcd, monitoring, and SeaweedFS after they have been enabled. It details a two-step workflow involving enabling the service flag and then editing the resulting application custom resource. A review comment suggests updating the terminology from "HelmRelease YAML" to "Tenant manifest" to ensure clarity for users working directly with the Tenant resource.
| 1. Turn on the flag on the tenant (checkbox in the Dashboard or `etcd: true` / | ||
| `seaweedfs: true` / ... in the HelmRelease YAML). Cozystack creates the |
There was a problem hiding this comment.
The term 'HelmRelease YAML' might be confusing for users who are interacting with the Tenant custom resource directly via kubectl. Since the guide is about the Tenant System and the Tenant resource, it's more accurate to refer to it as the 'Tenant manifest' or 'Tenant YAML'.
| 1. Turn on the flag on the tenant (checkbox in the Dashboard or `etcd: true` / | |
| `seaweedfs: true` / ... in the HelmRelease YAML). Cozystack creates the | |
| 1. Turn on the flag on the tenant (checkbox in the Dashboard or `etcd: true` / | |
| `seaweedfs: true` / ... in the Tenant manifest). Cozystack creates the |
There was a problem hiding this comment.
Applied, but not as a direct suggestion replace — there is no dedicated Tenant CRD; tenants are created through a HelmRelease pointing at the tenant chart. Reworded to "under spec.values in the Tenant HelmRelease manifest you apply with kubectl", which is the object the reader actually writes and keeps the pointer concrete without pretending there is a separate Tenant YAML form.
…anifest Review comment on #485 flagged that 'HelmRelease YAML' is ambiguous in the context of the Tenant System guide — readers may think it refers to some downstream HelmRelease, not the Tenant object they are actually editing. Spell it out: the field lives under spec.values in the Tenant HelmRelease manifest the user applies with kubectl. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Aleksei Sviridkin <f@lex.la>
…anifest Review comment on #485 flagged that 'HelmRelease YAML' is ambiguous in the context of the Tenant System guide — readers may think it refers to some downstream HelmRelease, not the Tenant object they are actually editing. Spell it out: the field lives under spec.values in the Tenant HelmRelease manifest the user applies with kubectl. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Aleksei Sviridkin <f@lex.la>
3c771c8 to
141e925
Compare
Adds a Customizing Tenant Services section to the v1.2 Tenant System guide. Documents the two-step pattern for configuring tenant-level services (etcd, monitoring, ingress, seaweedfs) beyond the boolean flag: enable the flag, then kubectl edit / kubectl patch the generated apps.cozystack.io CR in place. Includes a warning callout naming the two common wrong approaches (preconfiguring CRs before the tenant exists, nesting service-specific spec under the Tenant CR). Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Aleksei Sviridkin <f@lex.la>
141e925 to
18e66e6
Compare
What
Adds a Customizing Tenant Services section to
content/en/docs/v1/guides/tenants/_index.mdthat documents how to configure a tenant-level service (etcd,monitoring,ingress,seaweedfs) beyond the per-tenant boolean flag: flip the flag on, thenkubectl edit(orkubectl patch) the downstreamapps.cozystack.io/v1alpha1CR in place. Also calls out two common wrong approaches in a warning callout.Why
This is one of the most frequent confusions in the community chat. A user turns on
seaweedfs: trueon a tenant, discovers the default configuration does not fit (e.g. needs storage pools, a MultiZone topology, non-default quotas), and cannot find a place in the tenant manifest to put the service-specific spec. Attempts to preconfigure the service by applying its CR manifest before the tenant is created fail with "namespace not found". Attempts to nest service-specific fields under theTenantspec are silently ignored because the tenant-level fields are plain booleans — the per-service spec lives on a separate resource.The working pattern was confirmed in chat by a cozystack maintainer: turn the flag on, then edit the generated application CR in place — manual changes on tenant-service CRs are not overwritten when the tenant reconciles. It already exists as a worked example in
operations/services/object-storage/storage-pools, but a reader has no reason to find that page unless they already know to look in object-storage docs for a general tenant-customization pattern.The new section in the Tenant System guide:
kubectl editandkubectl patchexamples againstseaweedfses.apps.cozystack.io.Verification
packages/apps/tenant/templates/etcd.yaml,seaweedfs.yaml,monitoring.yaml,ingress.yamlat tagrelease-1.2.1. Each template generates aHelmReleasein the tenant namespace that reads values from thecozystack-valuessecret (valuesFrom: cozystack-values) and carriesapps.cozystack.io/application.*labels, so the aggregated API exposes the correspondingapps.cozystack.io/v1alpha1resource (Etcd,SeaweedFS,Monitoring,Ingress).hugobuilds cleanly; the new section renders with the expected code blocks and callout.Summary by CodeRabbit