feat: added documentation; restructure installation components; added install scripts#306
Conversation
Overhaul the documentation from a technology-focused structure (docs/pages/) to a journey-based structure (docs/) organized around admin, user, and developer workflows. Add comprehensive architecture documentation for all domains. - Restructure install directory into base/overlays/components layout - Add admin journey docs (setup, environments, orgs, notifications, ops) - Add user journey docs (onboarding, APIs, events, approvals) - Add developer journey docs (contributing, operators, local dev) - Add architecture docs for all domains (admin, api, gateway, identity, etc.) - Add CRD reference generation scripts and remark plugin - Update CI workflows for new docs paths and enable deployment on feat branch - Simplify root README - Add local-setup script in hack/
…teps guides; add install overlay improvements - Replace setup.md with separate quickstart (Kind) and installation (ArgoCD) guides - Add first-steps tutorial for bootstrapping environment, zones, teams, and sample APIs - Expand environments-and-zones with zone setup details and EventConfig configuration - Rewrite notification-templates with selection logic, placeholders, and troubleshooting - Add user-journey features section (traffic management, security, event delivery, filtering) - Add secret-manager architecture page and update resource specs - Add Kustomize component with default notification templates - Rename zone files to .example.yaml; add EventConfig examples for local overlay - Fix install path in .releaserc.mjs; remove deprecated install.sh
…eneration script Add @docusaurus/theme-mermaid for rendering Mermaid diagrams and @easyops-cn/docusaurus-search-local for offline search. Include a new script to generate JSON Schema files from CRD definitions and update .gitignore to exclude the generated output.
… Remote Organizations as planned Rename the user-journey features section for clarity and add "planned feature" notices to Remote Organizations across the admin architecture and reference pages. Add a resource hierarchy diagram to the components overview and remove the redundant feature-support-by-Rover-section table from the API reference. Remove the unused high-level architecture SVG.
Add a new "Platform Governance Features" section to the admin journey with documentation for API Categories, covering category creation, team restrictions, group prefix enforcement, and API linting. Add a JSON Schema reference page listing downloadable schemas for all CRDs with usage instructions for editor autocompletion.
There was a problem hiding this comment.
Pull request overview
This PR restructures the documentation site from a technology-oriented layout into a journey-based information architecture, while updating local installation overlays and samples to match the new install structure and docs paths.
Changes:
- Reorganize and modernize the docs site structure/assets (including scripts and dependencies).
- Refactor
install/into a base/overlays/components model and extend the local overlay with sample admin/org/rover resources. - Update various READMEs and sample manifests to reflect new paths (docs assets, install overlays).
Reviewed changes
Copilot reviewed 144 out of 191 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
README.md |
Simplifies root README and updates logo path to new docs static location. |
rover-server/README.md |
Updates install overlay link to install/overlays/default. |
notification/config/samples/notification_v1_notificationtemplate.yaml |
Fixes logo asset URL to match new docs static path. |
install/overlays/local/kustomization.yaml |
Reworks local overlay to use install/base, adjusts module paths, and enables eventing component. |
install/overlays/local/README.md |
Adds local install documentation and command sequence for applying overlays/resources. |
install/overlays/local/secret-manager-config.yaml |
Formatting-only change in commented config example. |
install/overlays/local/resources/.gitignore |
Ignores locally-copied zone config files to reduce secret-leak risk. |
install/overlays/local/resources/admin/kustomization.yaml |
Adds admin resource bundle (environment + zones). |
install/overlays/local/resources/admin/environment.yaml |
Introduces Environment (and Namespace) sample manifest. |
install/overlays/local/resources/admin/zones/kustomization.yaml |
Adds zone resource bundle referencing local-copied zone configs. |
install/overlays/local/resources/admin/zones/dataplane1.example.yaml |
Adds example Zone manifest template for dataplane1. |
install/overlays/local/resources/admin/zones/dataplane2.example.yaml |
Adds example Zone manifest template for dataplane2. |
install/overlays/local/resources/admin/eventconfigs/README.md |
Adds eventconfig sample documentation. |
install/overlays/local/resources/admin/eventconfigs/kustomization.yaml |
Updates eventconfig resources list (now only dataplane1). |
install/overlays/local/resources/admin/eventconfigs/dataplane1.example.yaml |
Adds example EventConfig manifest template. |
install/overlays/local/resources/org/kustomization.yaml |
Adds org resource bundle (group + team). |
install/overlays/local/resources/org/group.yaml |
Adds sample Group manifest. |
install/overlays/local/resources/org/team.yaml |
Adds sample Team manifest. |
install/overlays/local/resources/rover/kustomization.yaml |
Adds rover sample bundle (ApiSpecification + Rover). |
install/overlays/local/resources/rover/apispec.yaml |
Adds sample ApiSpecification for the local journey. |
install/overlays/local/resources/rover/rover.yaml |
Adds sample Rover exposure/subscription resources. |
install/components/notificationtemplates/onboarding-template-mail.yaml |
Updates/adds notification template manifest (component-provided templates). |
docs/scripts/download-logos.sh |
Adds/updates logo download helper used by docs assets. |
docs/package.json |
Updates docs build dependencies for the new docs site setup. |
Comments suppressed due to low confidence (1)
install/overlays/local/resources/admin/eventconfigs/kustomization.yaml:6
resourcesreferencesdataplane1.yaml, but this directory only containsdataplane1.example.yaml(nodataplane1.yaml), sokustomize build/applywill fail. Either commit a realdataplane1.yaml, or switch the kustomization to reference the example file and/or document a copy step (and gitignore the copied file) similar toadmin/zones/*.example.yaml.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # local zone configs copied from *.example.yaml templates (may contain secrets) | ||
| admin/zones/dataplane1.yaml | ||
| admin/zones/dataplane2.yaml |
There was a problem hiding this comment.
If admin/eventconfigs/dataplane*.yaml files are meant to be created locally from the *.example.yaml templates (they contain credentials/placeholders), they should also be gitignored like the zone configs to reduce the risk of committing secrets. Otherwise, consider committing non-secret sample dataplane*.yaml files and keeping them referenced by kustomize.
| metadata: | ||
| labels: | ||
| cp.ei.telekom.de/environment: env | ||
| name: onboarded--mail | ||
| namespace: env | ||
| spec: |
There was a problem hiding this comment.
These templates hardcode metadata.namespace: env and cp.ei.telekom.de/environment: env. Notifications resolve templates by looking them up in the current environment namespace (from context), so leaving this placeholder will cause template lookup to fail (and may fail apply if namespace env doesn't exist). Make the namespace/environment configurable (e.g., remove the explicit namespace so a parent kustomization can set it, or provide an overlay/patch example) and update all templates in this component consistently.
| "dependencies": { | ||
| "@docusaurus/core": "3.9.2", | ||
| "@docusaurus/preset-classic": "3.9.2", | ||
| "@docusaurus/theme-mermaid": "^3.9.2", | ||
| "@easyops-cn/docusaurus-search-local": "^0.55.1", | ||
| "@mdx-js/react": "^3.0.0", | ||
| "clsx": "^2.0.0", | ||
| "docusaurus-plugin-image-zoom": "^3.0.1", | ||
| "js-yaml": "^4.1.1", |
There was a problem hiding this comment.
@docusaurus/theme-mermaid is version-ranged (^3.9.2) while the core/preset packages are pinned to 3.9.2. This can lead to mismatched Docusaurus package versions after fresh installs. Prefer pinning all @docusaurus/* packages to the same exact version.
| # Event Configuration | ||
|
|
||
| This directory contains sample event configuration which are needed to enable the eventing feature in the controlplane. | ||
| They are zone-specific and need to be applied in each zone where you want to use the eventing feature. |
There was a problem hiding this comment.
Grammar: “sample event configuration which are needed” should be “sample event configurations that are needed” (or similar).
Agent-Logs-Url: https://github.com/telekom/controlplane/sessions/8ec344b1-cd24-4cb8-b6a0-d03a273be52e Co-authored-by: ron96g <46990708+ron96g@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 144 out of 191 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
install/overlays/local/resources/admin/eventconfigs/kustomization.yaml:6
kustomization.yamlreferencesdataplane1.yaml, but this directory only containsdataplane1.example.yamlin the PR. As-is,kubectl apply -k install/overlays/local/resources/admin/eventconfigswill fail due to the missing file. Either add/rename the tracked file todataplane1.yamlor update the kustomization to reference the.example.yaml(and document/ignore the local copy if it may contain secrets).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Fix links pointing to "roverctl" (the root command): | ||
| // In subcommand pages these become broken because the file is now index.md. | ||
| // Replace (roverctl) with (./) but only when it is an exact match — not a | ||
| // prefix like roverctl_apply. | ||
| if (!isRoot) { | ||
| transformed = transformed.replace(/\]\(roverctl\)/g, "](.)"); | ||
| } |
There was a problem hiding this comment.
In subcommand pages, the script replaces links to (roverctl) with ](.), but the comment says it should become (./). (.) is not a valid relative link target in Markdown/Docusaurus and will likely produce broken links to the root command page. Update the replacement to a working relative target (e.g., ./ or ./index) and keep it consistent with how the root file is renamed to index.md.
| This directory contains sample event configuration which are needed to enable the eventing feature in the controlplane. | ||
| They are zone-specific and need to be applied in each zone where you want to use the eventing feature. | ||
| You can apply them after installing the controlplane components. No newline at end of file |
There was a problem hiding this comment.
Grammar: "sample event configuration which are needed" should be plural/agree (e.g., "sample event configurations that are needed"). Also consider consistently spelling the product name as "Control Plane" in prose (currently "controlplane").
stefan-ctrl
left a comment
There was a problem hiding this comment.
Overall create documentation +1
Could we perhabs improve some broken links? Otherwise, I fould feel confident merging it, and further improving it over time
| - **Go 1.25.8** — the primary language for all operators and services | ||
| - **Kubebuilder 4.9.0** — scaffolding and code generation for Kubernetes operators |
There was a problem hiding this comment.
We should not add this here, and instead link to our main ./contributing.md in the root-repo paths, so that we do not double this information.
| ### Operators | ||
|
|
||
| These are Kubebuilder-scaffolded controllers, each managing a specific domain: | ||
|
|
||
| `admin/` · `api/` · `application/` · `approval/` · `event/` · `gateway/` · `identity/` · `notification/` · `organization/` · `pubsub/` · `rover/` | ||
|
|
||
| ### Services | ||
|
|
||
| Backend services that are not Kubernetes operators: | ||
|
|
||
| `common-server/` · `controlplane-api/` · `rover-server/` · `secret-manager/` · `file-manager/` |
There was a problem hiding this comment.
Perhabs be a little bit more abstract and only name them as examples, so that we are more flexible adding new ones, without needing to up this part of the doc?
| ### End-to-End Tests | ||
|
|
||
| ```bash | ||
| make test-e2e | ||
| ``` | ||
|
|
||
| Runs [Ginkgo](https://onsi.github.io/ginkgo/) tests against a Kind cluster. |
There was a problem hiding this comment.
Since we do not have general e2e tests per domain right now, should be perhabs remove that for now?
| @@ -4,4 +4,3 @@ | |||
|
|
|||
| resources: | |||
| - dataplane1.yaml | |||
There was a problem hiding this comment.
Unrelated, but dataplane1.yaml does not exists.
Instead it should be dataplane1.example.yaml
There was a problem hiding this comment.
The example is not useable so this was actually intentional that people copy it and fill in the required values. That the problem with the CP that we cannot provide easy-to-use defaults
| payloadType: Data | ||
| callback: https://analytics.internal:8080/events | ||
| trigger: | ||
| responseFilterMode: INCLUDE |
There was a problem hiding this comment.
Uses responseFilterMode: INCLUDE / EXCLUDE (uppercase). CRD validation expects Include / Exclude (PascalCase). The mapper does a direct cast with no normalization, so uppercase values would fail CRD validation.
| | ----- | ----------- | | ||
| | `security.type` | The authentication method. Use `oauth2` for OAuth2-based authentication or `basicAuth` for username/password authentication. | | ||
| | `security.tokenEndpoint` | The OAuth2 token endpoint URL. Required when using an external identity provider. | | ||
| | `security.grantType` | The OAuth2 grant type. Supported values: `CLIENT_CREDENTIALS`, `PASSWORD`, `REFRESH_TOKEN`. | |
There was a problem hiding this comment.
https://github.com/telekom/controlplane/blob/feat%2Fdocumentation/api/api/v1/security_types.go#L74
Lists REFRESH_TOKEN as a valid grantType but the CRD enum is client_credentials;authorization_code;password. refresh_token would fail validation. Also omits AUTHORIZATION_CODE which is a valid CRD value.
| ## Feature Architecture | ||
|
|
||
| The Gateway operator uses a plugin-based feature system for configuring route behavior: | ||
|
|
||
| | Feature | Description | | ||
| | ------- | ----------- | | ||
| | **PassThrough** | Basic request forwarding. | | ||
| | **AccessControl** | Consumer-based access control. | | ||
| | **RateLimit** | Request rate limiting via Redis. | | ||
| | **ExternalIDP** | External identity provider authentication. | | ||
| | **CustomScopes** | Fine-grained OAuth2 scope enforcement. | | ||
| | **LastMileSecurity** | End-to-end security in cross-mesh scenarios. | |
There was a problem hiding this comment.
Are not all features here listed by design?
- Remove hardcoded version numbers and e2e test references from local development guide - Fix enum casing (Include/Exclude) in event filtering docs and remove unsupported REFRESH_TOKEN grant type - Replace gateway feature table with prose description - Pin @docusaurus/theme-mermaid version and fix CLI docs link generation - Standardize notification templates: use kustomize managed-by label, remove hardcoded namespace - Update install overlay links, gitignore patterns, and minor wording
Overhaul the documentation from a technology-focused structure (docs/pages/)
to a journey-based structure (docs/) organized around admin, user, and
developer workflows. Add comprehensive architecture documentation for all
domains.
Restructure install directory into base/overlays/components layout
Add admin journey docs (setup, environments, orgs, notifications, ops)
Add user journey docs (onboarding, APIs, events, approvals)
Add developer journey docs (contributing, operators, local dev)
Add architecture docs for all domains (admin, api, gateway, identity, etc.)
Add CRD reference generation scripts and remark plugin
Update CI workflows for new docs paths and enable deployment on feat branch
Simplify root README
Add local-setup script in hack/
Already published via https://telekom.github.io/controlplane/