From d660d2424301b750738da90738c69b9a079e83e0 Mon Sep 17 00:00:00 2001 From: Nafisa Tahasin Date: Mon, 29 Jun 2026 18:17:03 +0300 Subject: [PATCH 1/7] docs: use related reading for Understanding Tool Modes Signed-off-by: Nafisa Tahasin --- content/en/kanvas/designer/understanding-tool-modes/index.md | 2 +- .../en/videos/getting-started/basics/pinning-models-to-dock.md | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/content/en/kanvas/designer/understanding-tool-modes/index.md b/content/en/kanvas/designer/understanding-tool-modes/index.md index f1f868c218e..7fdcc2eb56c 100644 --- a/content/en/kanvas/designer/understanding-tool-modes/index.md +++ b/content/en/kanvas/designer/understanding-tool-modes/index.md @@ -4,7 +4,7 @@ description: > Kanvas Designer offers three modes: Default, Pencil, and Connector, which behave differently based on the context in which they are used. Learn how to interact with components and the canvas in each mode. weight: 3 categories: [Designer] -tags: [designs] +tags: [designs, Dock] aliases: --- diff --git a/content/en/videos/getting-started/basics/pinning-models-to-dock.md b/content/en/videos/getting-started/basics/pinning-models-to-dock.md index 35b9d818082..4607dffa957 100644 --- a/content/en/videos/getting-started/basics/pinning-models-to-dock.md +++ b/content/en/videos/getting-started/basics/pinning-models-to-dock.md @@ -22,6 +22,3 @@ There is no limit to the number of models that you can pin to the dock. When a model is pinned you can still browse all components or search for a specific component. Drag and drop or click to place a new component into your design. When you no longer want a model pinned to the dock, you can remove the pin by revisiting the model in its original location and choosing to “remove from dock”. - -Related Docs: -1. https://docs.layer5.io/kanvas/designer/understanding-tool-modes/ From 2100ec98d70cfcc12d36ef4fbf2b7902020402a9 Mon Sep 17 00:00:00 2001 From: Nafisa Tahasin Date: Fri, 3 Jul 2026 00:01:04 +0300 Subject: [PATCH 2/7] fix(related-reading): include section index pages as Related Reading candidates related-reading.html used .Site.RegularPages.Related, but Hugo's RegularPages structurally excludes every _index.md (section) page. This meant a section landing page (e.g. kanvas/operator/_index.md) could never appear in another page's Related Reading, no matter how its tags/categories lined up. Widen the candidate pool to Pages filtered to Kind in [page, section] before calling .Related. Verified with a before/after build diff across the whole site (dumped Related Reading links for all 1519/1523 pages, before vs after): zero pages lost their Related Reading section, 2 previously-invisible relationships now correctly surface, and the ~66 pages whose list composition shifted did so only because section pages joined the eligible pool, not because of any lost or broken links. Signed-off-by: Nafisa Tahasin --- layouts/partials/related-reading.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/layouts/partials/related-reading.html b/layouts/partials/related-reading.html index e2dd24c895a..f9aa919fe45 100644 --- a/layouts/partials/related-reading.html +++ b/layouts/partials/related-reading.html @@ -4,7 +4,8 @@ {{ $pageTypes := $relatedReadingConfig.pageTypes | default (slice) }} {{ $sections := $relatedReadingConfig.sections | default (slice) }} -{{ $readingPages := .Site.RegularPages.Related . }} +{{ $candidatePages := where .Site.Pages "Kind" "in" (slice "page" "section") }} +{{ $readingPages := $candidatePages.Related . }} {{ if gt (len $pageTypes) 0 }} {{ $readingPages = where $readingPages "Type" "in" $pageTypes }} {{ end }} From 781fce346ff10490be2e684fab5f820909ada925 Mon Sep 17 00:00:00 2001 From: Nafisa Tahasin Date: Fri, 3 Jul 2026 00:02:44 +0300 Subject: [PATCH 3/7] docs: migrate hardcoded Related Docs/See Also blocks to Related Reading Repo-wide follow-up to PR #1129 (issue #1028), applying the same pattern used for Pinning Models to the Dock / Understanding Tool Modes across the rest of the docs: remove hardcoded "Related Docs"/"See Also"/"Related pages"/"Related" link blocks and inline references, and let the site's taxonomy-driven Related Reading partial surface the same connections via categories/tags instead. Migrated: - videos/getting-started/basics/operator-overview.md (-> kanvas/operator/_index.md) - videos/getting-started/basics/designer-overview.md (-> kanvas/designer/_index.md) - videos/getting-started/comments/design-reviews-full.md (-> kanvas/designer/comments/index.md) - kanvas/operator/log-streaming/index.md <-> interactive-terminal/index.md, advanced/performance/index.md - kanvas/operator/interactive-terminal/index.md <-> log-streaming/index.md - kanvas/advanced/render-modes.md <-> autopan.md, performance/index.md, url-parameters/index.md - kanvas/advanced/autopan.md <-> render-modes.md, performance/index.md, url-parameters/index.md - kanvas/advanced/performance/index.md <-> render-modes.md, autopan.md - cloud/guides/organizations/configuration-scenarios/index.md <-> white-labeling, identity-services, organizations (concept), identity-and-security Front matter changes, only where existing categories/tags didn't already establish the connection: - log-streaming + interactive-terminal: added tags: [troubleshooting] (shared category Operator alone is a 7-way tie that doesn't reliably survive the top-6 cutoff) - operator-overview.md + kanvas/operator/_index.md: added tags: [operator-overview] - designer-overview.md + kanvas/designer/_index.md: added tags: [designer-overview] (uncommented/set; was previously commented out) - configuration-scenarios.md, white-labeling/_index.md, identity-services/index.md, identity-and-security/_index.md: added the existing "orgs" tag where missing, so each shares 2-3 tags with configuration-scenarios rather than relying on the generic Identity category alone (13 pages deep, easily crowded out of the top 6) Depends on the related-reading.html section-page fix in the preceding commit for 5 of these links (kanvas/operator/_index.md, kanvas/designer/_index.md, white-labeling/_index.md, organizations/_index.md, identity-and-security/_index.md are all section pages). Verified: hugo build (1523 pages, no errors) and manual inspection of rendered Related Reading output on every migrated page. Signed-off-by: Nafisa Tahasin --- content/en/cloud/concepts/identity-and-security/_index.md | 2 +- .../guides/organizations/configuration-scenarios/index.md | 7 ------- .../self-hosted/planning/identity-services/index.md | 2 +- .../en/cloud/guides/self-hosted/white-labeling/_index.md | 1 + content/en/kanvas/advanced/autopan.md | 6 ------ content/en/kanvas/advanced/performance/index.md | 4 ---- content/en/kanvas/advanced/render-modes.md | 6 ------ content/en/kanvas/designer/_index.md | 2 +- content/en/kanvas/operator/_index.md | 1 + content/en/kanvas/operator/interactive-terminal/index.md | 8 +------- content/en/kanvas/operator/log-streaming/index.md | 8 +------- .../en/videos/getting-started/basics/designer-overview.md | 8 ++------ .../en/videos/getting-started/basics/operator-overview.md | 8 ++------ .../getting-started/comments/design-reviews-full.md | 2 -- 14 files changed, 11 insertions(+), 54 deletions(-) diff --git a/content/en/cloud/concepts/identity-and-security/_index.md b/content/en/cloud/concepts/identity-and-security/_index.md index 45b1cc480f6..dd89236f40b 100755 --- a/content/en/cloud/concepts/identity-and-security/_index.md +++ b/content/en/cloud/concepts/identity-and-security/_index.md @@ -5,7 +5,7 @@ description: > Organizations, teams, users, roles, keychains, keys, sessions, and tokens. weight: 3 categories: [Identity, Security] -tags: [permissions, identity, authentication] +tags: [permissions, identity, authentication, orgs] aliases: - /cloud/identity/ - /cloud/security/ diff --git a/content/en/cloud/guides/organizations/configuration-scenarios/index.md b/content/en/cloud/guides/organizations/configuration-scenarios/index.md index c3fcf2c243a..d6dfadf26e4 100644 --- a/content/en/cloud/guides/organizations/configuration-scenarios/index.md +++ b/content/en/cloud/guides/organizations/configuration-scenarios/index.md @@ -194,10 +194,3 @@ email-domain allowlists, role and team assignment, quotas, and expiry). Any scenario above can be paired with any membership policy. See [Organization Management → Inviting members](/cloud/guides/organizations/org-management/) and [User Invitations](/cloud/concepts/identity-and-security/users/user-invitations/). - -## Related - -- [White-labeling (Rebranding)](/cloud/guides/self-hosted/white-labeling/) — themes, logos, custom domains, and the social-sign-in details. -- [Identity Services](/cloud/guides/self-hosted/planning/identity-services/) — BYOC, OIDC single sign-on, and authentication boundaries. -- [Organizations (concept)](/cloud/concepts/identity-and-security/organizations/) — organizations as the unit of multi-tenancy. -- [Identity and Security → Security Boundaries](/cloud/concepts/identity-and-security/#security-boundaries) — how authentication and authorization boundaries compose. diff --git a/content/en/cloud/guides/self-hosted/planning/identity-services/index.md b/content/en/cloud/guides/self-hosted/planning/identity-services/index.md index d46c830dca2..32c29f7cfd8 100644 --- a/content/en/cloud/guides/self-hosted/planning/identity-services/index.md +++ b/content/en/cloud/guides/self-hosted/planning/identity-services/index.md @@ -2,7 +2,7 @@ title: Identity Services description: "Understand identity services prerequisites and how to integrate your existing identity with OIDC." categories: [Self-Hosted] -tags: [identity] +tags: [identity, byoc, orgs] weight: 3 aliases: - /cloud/self-hosted/planning/identity-services/ diff --git a/content/en/cloud/guides/self-hosted/white-labeling/_index.md b/content/en/cloud/guides/self-hosted/white-labeling/_index.md index 8c39b6aef7e..66512b88cf9 100644 --- a/content/en/cloud/guides/self-hosted/white-labeling/_index.md +++ b/content/en/cloud/guides/self-hosted/white-labeling/_index.md @@ -2,6 +2,7 @@ title: White-labeling (Rebranding) weight: 1 categories: [Self-Hosted] +tags: [white-labeling, custom-domain, orgs] description: > Customize the appearance and branding of your engineering platform powered by Layer5 Cloud. aliases: diff --git a/content/en/kanvas/advanced/autopan.md b/content/en/kanvas/advanced/autopan.md index e16d92d4b5f..01a52b8053d 100644 --- a/content/en/kanvas/advanced/autopan.md +++ b/content/en/kanvas/advanced/autopan.md @@ -107,9 +107,3 @@ If autopan is disabled on a design where you would like it to be active, you hav 1. **Switch to a lower-fidelity render mode.** Wireframe and View-Only raise the threshold to 1,000 nodes. See the [Render Modes]({{< ref "kanvas/advanced/render-modes.md" >}}) page for what each mode costs and what it hides. 2. **Reduce the live listener count.** The [Layers Panel]({{< ref "kanvas/advanced/performance/index.md" >}}) lets you disable layers of visual information (badges, tags, feasibility indicators) that contribute to the pan fan-out. Turning off a layer effectively moves the threshold upward because there are fewer listeners to amplify each pan. 3. **Break the design into smaller designs.** If you are consistently bumping the threshold in your preferred render mode, the design might be past the scale Kanvas targets for interactive editing. Splitting it into referenced sub-designs keeps each one within the sweet spot. - -### Related pages - -- [Render Modes]({{< ref "kanvas/advanced/render-modes.md" >}}) — what each mode renders, what it hides, and how Adaptive Render Mode flips between them automatically. -- [Performance Limits and Tuning]({{< ref "kanvas/advanced/performance/index.md" >}}) — overall Kanvas performance envelope and the Layers Panel. -- [Design Render Quality]({{< ref "kanvas/advanced/url-parameters/index.md" >}}) — overriding the render mode via URL parameters (useful for snapshots and embeds). diff --git a/content/en/kanvas/advanced/performance/index.md b/content/en/kanvas/advanced/performance/index.md index a868d395935..18934371315 100644 --- a/content/en/kanvas/advanced/performance/index.md +++ b/content/en/kanvas/advanced/performance/index.md @@ -103,10 +103,6 @@ To optimize performance, consider the following: As your designs grow in complexity, certain design patterns can impact how smoothly Kanvas responds. Understanding these factors helps you create designs that remain fast and responsive. -{{< alert type="info" title="Related performance controls" >}} -This page covers the design patterns and tuning levers that affect Kanvas performance. For the per-mode rendering ladder (Full, Medium, Wireframe, View-Only) and automatic fidelity management, see [Render Modes]({{< ref "kanvas/advanced/render-modes.md" >}}). For the drag-to-edge viewport pan and its per-render-mode size thresholds, see [Auto-pan on Drag]({{< ref "kanvas/advanced/autopan.md" >}}). -{{< /alert >}} - ### Working with Grouped Components When you create groups of components (placing multiple components inside a parent container), you might notice performance differences as the number of grouped items increases. Here's what you might experience: diff --git a/content/en/kanvas/advanced/render-modes.md b/content/en/kanvas/advanced/render-modes.md index 1cb31992bd9..355384bc919 100644 --- a/content/en/kanvas/advanced/render-modes.md +++ b/content/en/kanvas/advanced/render-modes.md @@ -231,9 +231,3 @@ All four render modes work in both Designer and Operator contexts: - In **Designer mode**, render modes control the fidelity of your editable design canvas. All modes except View Only allow full editing. - In **Operator mode**, the `managed-by-Meshery` and `terminal session` badges follow the same suppression rules as in Designer — they are visible in Full mode and hidden in Medium, Wireframe, and View Only modes. - **View Only mode is particularly useful in Operator** for monitoring dashboards where accidental edits should be prevented. - -## Related pages - -- [Auto-pan on Drag]({{< ref "kanvas/advanced/autopan.md" >}}) — the most visible feature gated per render mode. -- [Performance Limits and Tuning]({{< ref "kanvas/advanced/performance/index.md" >}}) — full performance envelope and the Layers Panel. -- [Design Render Quality]({{< ref "kanvas/advanced/url-parameters/index.md" >}}) — URL parameter overrides for render mode. diff --git a/content/en/kanvas/designer/_index.md b/content/en/kanvas/designer/_index.md index c813ae99caf..429aeddaf84 100644 --- a/content/en/kanvas/designer/_index.md +++ b/content/en/kanvas/designer/_index.md @@ -4,7 +4,7 @@ description: > Designer mode is for those who want to create their own Kanvas, using the palette of components provided by Meshery. weight: 4 categories: [Designer] -# tags: [designs] +tags: [designer-overview] aliases: - /meshmap/designer/ --- diff --git a/content/en/kanvas/operator/_index.md b/content/en/kanvas/operator/_index.md index 4d5c38730d0..821c2d8bee5 100644 --- a/content/en/kanvas/operator/_index.md +++ b/content/en/kanvas/operator/_index.md @@ -4,6 +4,7 @@ weight: 5 description: > Operator mode is for operating your Kubernetes clusters and cloud native infrastructure. categories: [Operator] +tags: [operator-overview] aliases: - /meshmap/operator --- diff --git a/content/en/kanvas/operator/interactive-terminal/index.md b/content/en/kanvas/operator/interactive-terminal/index.md index 1bad4d4f9c2..445185f1d89 100644 --- a/content/en/kanvas/operator/interactive-terminal/index.md +++ b/content/en/kanvas/operator/interactive-terminal/index.md @@ -3,6 +3,7 @@ title: Interactive Terminal description: > Learn about Interactive Terminal in Operator mode categories: [Operator] +tags: [troubleshooting] --- When operating cloud native infrastructure, deep diagnostics often require direct access to the container shell. The **Interactive Terminal** in Kanvas enables you to execute commands and inspect the filesystem of your running containers directly from the visual topology. By integrating terminal sessions into the Kanvas interface, you can troubleshoot issues, verify configurations, and test network connectivity without switching context to external CLI tools like `kubectl`. @@ -72,10 +73,3 @@ While using the interactive terminal, understand that you can only open one sess ![interactive-terminal-sequence-diagram](images/interactive-terminal-sequence-diagram.svg) - -*** - -### See Also - -* **[Log Streaming]({{< ref "kanvas/operator/log-streaming/index.md" >}}):** Learn how to live-tail logs for real-time application monitoring. - diff --git a/content/en/kanvas/operator/log-streaming/index.md b/content/en/kanvas/operator/log-streaming/index.md index a085d8e6470..9b0b591fcc1 100644 --- a/content/en/kanvas/operator/log-streaming/index.md +++ b/content/en/kanvas/operator/log-streaming/index.md @@ -3,6 +3,7 @@ title: Log Streaming description: > Learn about Log Streaming in Operator mode categories: [Operator] +tags: [troubleshooting] --- Efficient troubleshooting requires immediate visibility into your application's behavior. The **Log Streamer** in Kanvas allows you to live-tail logs from your Kubernetes pods and containers directly within the visual topology. Unlike static log files, this feature provides a real-time, multiplexed view of your infrastructure's activities, enabling you to debug interactions between services without leaving the Kanvas interface. @@ -61,10 +62,3 @@ Once the stream is active, the Log Streamer panel will display the output. The Log Streamer utilizes a robust architecture where the **Meshery Operator** signals the **MeshSync** controller to start the log flow. Data is streamed using **NATS** to the Meshery Broker, preprocessed, and then delivered to your browser via a **WebSocket** connection using GraphQL subscriptions. This ensures minimal latency and high performance, even when streaming data from multiple active containers. ![log-stream-sequence-diagram](images/log-stream-sequence-diagram.svg) - -*** - -### See Also - -* **[Interactive Terminal]({{< ref "kanvas/operator/interactive-terminal/index.md" >}}):** Learn how to establish an interactive shell session with your containers. -* **[Performance Management]({{< ref "kanvas/advanced/performance/index.md" >}}):** Run ad-hoc performance tests alongside your log monitoring. diff --git a/content/en/videos/getting-started/basics/designer-overview.md b/content/en/videos/getting-started/basics/designer-overview.md index aff05508ecb..7f7481b5c72 100644 --- a/content/en/videos/getting-started/basics/designer-overview.md +++ b/content/en/videos/getting-started/basics/designer-overview.md @@ -6,12 +6,8 @@ videoId: "qaoYRP3oLok" videoType: youtube categories: [Designer] formats: [video] -tags: [basics] +tags: [basics, designer-overview] duration: "1:38" --- -{{< youtube id=qaoYRP3oLok class="yt-embed-container" >}} - -### Related Docs - -- [Exploring Designer]({{< ref "kanvas/designer/_index.md" >}}) \ No newline at end of file +{{< youtube id=qaoYRP3oLok class="yt-embed-container" >}} \ No newline at end of file diff --git a/content/en/videos/getting-started/basics/operator-overview.md b/content/en/videos/getting-started/basics/operator-overview.md index 75bd411f425..127c3faebe5 100644 --- a/content/en/videos/getting-started/basics/operator-overview.md +++ b/content/en/videos/getting-started/basics/operator-overview.md @@ -6,12 +6,8 @@ videoId: "QANUEikEwQY" videoType: youtube categories: [Operator] formats: [video] -tags: [basics] +tags: [basics, operator-overview] duration: "2:11" --- -{{< youtube id=QANUEikEwQY class="yt-embed-container" >}} - -### Related Docs - -- [Exploring Operator]({{< ref "kanvas/operator/_index.md" >}}) \ No newline at end of file +{{< youtube id=QANUEikEwQY class="yt-embed-container" >}} \ No newline at end of file diff --git a/content/en/videos/getting-started/comments/design-reviews-full.md b/content/en/videos/getting-started/comments/design-reviews-full.md index 5a550a0cabc..891614a9c5b 100644 --- a/content/en/videos/getting-started/comments/design-reviews-full.md +++ b/content/en/videos/getting-started/comments/design-reviews-full.md @@ -17,8 +17,6 @@ duration: "2:47" Use comments to offer feedback to team members, take detailed design notes, capture helpful tips for your team members, and include justification as to your infrastructure and application configuration decisions. Pay it forward to your future self by leaving historical record for reference later. -Related Documentation: [Design Reviews](https://docs.layer5.io/kanvas/designer/comments/) - Lessons learned in this Peer Review module: * **Collaboration is Key:** Kanvas facilitates collaborative design through peer reviews. It emphasizes both asynchronous (commenting, notifications) and synchronous (real-time discussion) methods. From f425262731cd5550e82ea13f30f814e61c5ba435 Mon Sep 17 00:00:00 2001 From: Lenox Wiltshire Date: Sun, 27 Sep 2026 18:36:40 -0400 Subject: [PATCH 4/7] [chore]: normalize taxonomies, update hugo.toml related setting and add taxonomy normalization to related-reading Signed-off-by: Lenox Wiltshire --- content/en/cloud/academy/_index.md | 4 +- .../cloud/academy/creating-content/_index.md | 4 +- .../building-certifications/index.md | 22 ++--- .../creating-your-learning-path/index.md | 86 +++++++++---------- .../extending-the-academy/index.md | 4 +- .../instructor-console-guide/index.md | 4 +- .../integrating-assessments-in-the-academy.md | 4 +- .../using-content-template-creator/index.md | 4 +- .../en/cloud/academy/platform-development.md | 2 +- .../cloud/academy/using-the-academy/index.md | 4 +- content/en/cloud/concepts/catalog/_index.md | 4 +- .../catalog/exploring-the-catalog/index.md | 4 +- .../concepts/catalog/leaderboard/index.md | 4 +- .../cloud/concepts/catalog/metrics/index.md | 4 +- .../concepts/identity-and-security/_index.md | 2 +- .../identity-and-security/keychains.md | 2 +- .../concepts/identity-and-security/keys.md | 2 +- .../organizations/_index.md | 2 +- .../identity-and-security/roles/_index.md | 2 +- .../roles/academy-roles/index.md | 4 +- .../roles/organization-roles.md | 2 +- .../roles/provider-admin-roles.md | 2 +- .../identity-and-security/roles/team-roles.md | 2 +- .../roles/user-role/index.md | 2 +- .../roles/workspace-roles.md | 2 +- .../identity-and-security/sessions.md | 2 +- .../identity-and-security/teams/_index.md | 2 +- .../identity-and-security/users/_index.md | 2 +- .../users/default-permissions.md | 2 +- .../users/notification-preferences/index.md | 2 +- .../users/user-invitations/index.md | 2 +- .../users/user-management/index.md | 2 +- .../concepts/meshery-server-registration.md | 2 +- content/en/cloud/concepts/spaces/_index.md | 2 +- .../en/cloud/concepts/spaces/environments.md | 2 +- .../en/cloud/concepts/spaces/workspaces.md | 2 +- .../cloud/getting-started/meet-five/_index.md | 2 +- .../meet-five/five-narrative-plan.md | 2 +- .../en/cloud/guides/integrations/_index.md | 2 +- .../integrations/github-actions/_index.md | 2 +- .../en/cloud/guides/organizations/_index.md | 2 +- .../configuration-scenarios/index.md | 2 +- .../organizations/org-management/_index.md | 2 +- .../navigating-organizations.md | 2 +- content/en/cloud/guides/self-hosted/_index.md | 2 +- .../self-hosted/customizing-webhooks.md | 2 +- .../guides/self-hosted/deployment/_index.md | 2 +- .../deployment/helm-chart-values.md | 2 +- .../guides/self-hosted/operating/smtp.md | 2 +- .../guides/self-hosted/planning/_index.md | 2 +- .../planning/identity-services/index.md | 2 +- .../guides/self-hosted/planning/monitoring.md | 2 +- .../peer-to-peer-communication/index.md | 2 +- .../self-hosted/white-labeling/_index.md | 2 +- .../tutorials/assigning-user-badges/index.md | 2 +- .../guides/tutorials/promoting-a-design.md | 2 +- .../guides/tutorials/sharing-a-workspace.md | 2 +- content/en/cloud/guides/workspaces/_index.md | 2 +- .../workspaces/managing-workspaces/index.md | 2 +- content/en/cloud/reference/_index.md | 2 +- .../cloud/reference/api-reference/_index.md | 2 +- .../en/cloud/reference/api-reference/rest.md | 2 +- .../en/cloud/reference/default-permissions.md | 4 +- content/en/cloud/reference/releases/_index.md | 2 +- .../contributing-to-video-gallary.md | 10 +-- content/en/kanvas/advanced/autopan.md | 2 +- .../en/kanvas/advanced/performance/index.md | 10 ++- content/en/kanvas/advanced/render-modes.md | 2 +- .../kanvas/advanced/url-parameters/index.md | 2 +- content/en/kanvas/concepts/_index.md | 2 +- .../en/kanvas/concepts/relationships/index.md | 2 +- content/en/kanvas/designer/_index.md | 4 +- content/en/kanvas/designer/comments/index.md | 2 +- .../designer/embedding-designs/index.md | 2 +- .../kanvas/designer/export-designs/index.md | 2 +- .../interpreting-component-badges/index.md | 2 +- .../designer/pin-model-to-dock/index.md | 4 +- .../designer/publishing-designs/index.md | 2 +- .../designer/relationship-evaluation.md | 2 +- content/en/kanvas/designer/sharing/index.md | 2 +- content/en/kanvas/designer/tagsets/index.md | 2 +- .../understanding-design-component/index.md | 2 +- .../designer/understanding-edges/index.md | 2 +- .../understanding-tool-modes/index.md | 4 +- .../en/kanvas/designer/whiteboarding/index.md | 2 +- content/en/kanvas/getting-started/_index.md | 2 +- .../creating-relationships/index.md | 2 +- .../getting-started/import-designs/index.md | 2 +- .../getting-started/starting-scratch.md | 2 +- .../working-with-components/index.md | 2 +- content/en/kanvas/operator/_index.md | 2 +- .../operator/interactive-terminal/index.md | 2 +- .../en/kanvas/operator/log-streaming/index.md | 2 +- .../kanvas/operator/resource-details/index.md | 2 +- content/en/kanvas/operator/views/index.md | 2 +- .../en/kanvas/reference/releases/_index.md | 2 +- .../tasks/designs/cloning-a-design/index.md | 2 +- .../tasks/designs/deploying-designs/index.md | 2 +- .../designs/dry-running-a-design/index.md | 2 +- .../designs/undeploying-designs/index.md | 2 +- .../tasks/designs/validating-designs/index.md | 2 +- content/en/kanvas/tasks/whiteboarding.md | 2 +- .../kanvas/tutorials/collaborative-editing.md | 2 +- .../en/kanvas/tutorials/data-pipeline-gcp.md | 2 +- .../tutorials/kubernetes-request-flow.md | 2 +- .../en/kanvas/tutorials/kubernetes/_index.md | 2 +- .../kubernetes/kubernetes-services.md | 2 +- .../kanvas/tutorials/stellar-saas-platform.md | 2 +- .../videos/features/kanvas/design-review.md | 2 +- .../basics/designer-overview.md | 8 +- .../basics/operator-overview.md | 8 +- .../basics/pinning-models-to-dock.md | 4 +- .../comments/adding-comments.md | 2 +- .../comments/design-reviews-full.md | 2 +- .../comments/publish-design.md | 2 +- .../template-category/sub-category/video-1.md | 2 +- hugo.toml | 18 ++-- layouts/partials/related-reading.html | 4 +- 118 files changed, 212 insertions(+), 208 deletions(-) diff --git a/content/en/cloud/academy/_index.md b/content/en/cloud/academy/_index.md index 79bff8068db..ac34dca8f16 100644 --- a/content/en/cloud/academy/_index.md +++ b/content/en/cloud/academy/_index.md @@ -3,8 +3,8 @@ title: Academy weight: 4 description: > Learn how to use, build, manage, and extend the Layer5 Academy. -categories: [Academy] -tags: [Academy] +categories: [academy] +tags: [academy] --- [Layer5 Academy](https://cloud.layer5.io/academy/) is a platform that provides a comprehensive learning experience for anyone beginning their journey into cloud native infrastructure or advancing along that path. diff --git a/content/en/cloud/academy/creating-content/_index.md b/content/en/cloud/academy/creating-content/_index.md index b9780431568..0c82f8055a7 100644 --- a/content/en/cloud/academy/creating-content/_index.md +++ b/content/en/cloud/academy/creating-content/_index.md @@ -3,8 +3,8 @@ title: "Content Creator Guide" weight: 2 description: > Learn how to create, manage, and publish learning paths, challenges, and certifications on the Layer5 Academy platform. -categories: [Academy] -tags: [Academy] +categories: [academy] +tags: [academy] aliases: - /cloud/academy/extending-the-academy/ --- diff --git a/content/en/cloud/academy/creating-content/building-certifications/index.md b/content/en/cloud/academy/creating-content/building-certifications/index.md index 91bdf56d191..5b797514ce8 100644 --- a/content/en/cloud/academy/creating-content/building-certifications/index.md +++ b/content/en/cloud/academy/creating-content/building-certifications/index.md @@ -3,8 +3,8 @@ title: Building Certifications weight: 5 description: > A step-by-step guide to building a professional certification in the Academy. -categories: [Academy] -tags: [Academy] +categories: [academy] +tags: [academy] --- In [Layer5 Academy](https://cloud.layer5.io/academy/), a **Certification** is a formal assessment designed to validate a learner's professional skills in a specific domain. Unlike a Learning Path, which guides a user through a curriculum, a Certification's primary goal is evaluation. @@ -92,8 +92,8 @@ banner: "images/layer5-icon.svg" weight: 1 tags: [layer5, cloud, infrastructure] level: "beginner" -categories: "platform" -badge: +categories: [platform] +badge: png: "https://images.credly.com/images/f28f1d88-428a-47f6-95b5-7da1dd6c1000/twitter_thumb_201604_KCNA_badge.png" svg: "https://images.credly.com/images/f28f1d88-428a-47f6-95b5-7da1dd6c1000/twitter_thumb_201604_KCNA_badge.png" title: "Layer5 Certified" @@ -145,7 +145,7 @@ To ensure even division, the **total number of questions** must be a **multiple* By default, the **number of retries** is set to the number of generated sets. However, you can increase it, in which case the question sets will **cycle** through repeatedly across attempts. {{< alert type="warning" title="Multi-Exam Certification Settings" >}} -For certifications containing multiple exams, each exam may have its own test bank, question count, and retry settings. +For certifications containing multiple exams, each exam may have its own test bank, question count, and retry settings. These configurations are defined per test and may differ across exams within the same certification. {{< /alert >}} @@ -175,36 +175,36 @@ A key feature unique to the Certification content type is that while the learnin
Can my certification have only one exam? - + Yes, it can. The simplest form of a certification consists of a single final exam. You can also include multiple independent exams if you wish to assess different skills.
When should I choose to create a "Certification" instead of a "Learning Path"? - + You should choose a Certification when your primary goal is to **test and assess** a learner's existing knowledge, rather than **teaching them** from scratch. A Learning Path focuses on instruction, while a Certification focuses on assessment.
What does an "Optional" exam mean, and how does it affect a learner's progress? - + An optional exam is supplementary material. Learners can take it, but they **do not** have to pass it to earn the final certificate. Its score **does not count** towards the certification's passing requirements. This is typically used for extra practice or to test non-core knowledge.
How do I set an exam as "Optional"? - + You need to add a specific field, `isOptional: true`, to the front matter of the exam's `.md` file. This field tells the system that the exam is not a mandatory requirement to pass the certification.
Can I control the order of multiple exams within a certification? - + Yes, you can. Each exam file's front matter has a `weight` field. Lower numbers result in an earlier display order. If you don't set a `weight`, the exams will be sorted alphabetically by file title by default.
As a content creator, do I need to handle the certificate payment process? - + No, you don't. The payment and certificate issuance process is handled by the Layer5 platform. You only need to focus on creating high-quality assessment content.
diff --git a/content/en/cloud/academy/creating-content/creating-your-learning-path/index.md b/content/en/cloud/academy/creating-content/creating-your-learning-path/index.md index 36aae4d272a..9359e50753c 100644 --- a/content/en/cloud/academy/creating-content/creating-your-learning-path/index.md +++ b/content/en/cloud/academy/creating-content/creating-your-learning-path/index.md @@ -3,8 +3,8 @@ title: Creating Content for the Academy weight: 3 description: > A hands-on tutorial that walks you through creating, structuring, and testing custom content (learning paths, certifications, and challenges) for the Layer5 Academy. -categories: [Academy] -tags: [Academy] +categories: [academy] +tags: [academy] aliases: - /cloud/academy/creating-your-learning-path/ - /cloud/academy/creating-academy-content/ @@ -16,11 +16,11 @@ This guide provides a step-by-step walkthrough for creating and organizing new c ### Prerequisites -Before you dive into creating your first Academy content, it's helpful to be familiar with the core technologies and concepts used by the Academy platform. +Before you dive into creating your first Academy content, it's helpful to be familiar with the core technologies and concepts used by the Academy platform. - **Git and GitHub**: All learning content is managed in a Git repository. -- **Markdown**: All content is written in standard Markdown. -- **Hugo**: The entire Academy platform is built on the [Hugo](https://gohugo.io/) static site generator. +- **Markdown**: All content is written in standard Markdown. +- **Hugo**: The entire Academy platform is built on the [Hugo](https://gohugo.io/) static site generator. - **Academy Template & Theme**: We provide an `academy-example` repository that serves as a pre-configured template. [Layer5 Academy theme](https://github.com/layer5io/academy-theme) to ensure your content is styled correctly right out of the box. - **A Layer5 Cloud Account**: Required to obtain your Organization ID and Personal Access Token for publishing. @@ -35,7 +35,7 @@ Start by preparing a dedicated Git repository for your learning content. Using o ### 2. Clone Your Fork Locally -- Use the `git clone` command to download your forked repository. +- Use the `git clone` command to download your forked repository. - Example: ```bash # Replace `` with your actual GitHub username @@ -47,11 +47,11 @@ Start by preparing a dedicated Git repository for your learning content. Using o ### 3. Update the Go Module Path 1. Open the `go.mod` file located at the root of your `academy-example` project. -2. The first line will be: +2. The first line will be: ```go module github.com/layer5io/academy-example ``` -3. Change this line to match your fork's path: +3. Change this line to match your fork's path: ```go module github.com// ``` @@ -119,18 +119,18 @@ A high-level view of the learning path structure looks like this: ```text learning-paths/ - └── {learning-path-name}/ - ├── _index.md + └── {learning-path-name}/ + ├── _index.md ├── course-1/ - │ └── _index.md - └── course-2/ - ├── _index.md - ├── course-exam.md - └── module-1/ - ├── _index.md + │ └── _index.md + └── course-2/ + ├── _index.md + ├── course-exam.md + └── module-1/ + ├── _index.md ├── page-1/ - │ └── _index.md - ├── test.md + │ └── _index.md + ├── test.md ``` #### Certification Structure @@ -139,9 +139,9 @@ A **Certification** typically contains one or more **Exams** and optional study ```text certifications/ └── {certification-name}/ - ├── _index.md + ├── _index.md ├── exam/ - │ ├── _index.md + │ ├── _index.md ├── test-1/ ├── test-2/ └── test-3/ @@ -153,11 +153,11 @@ A **Challenge** is typically a single scenario-based task with lab and exam comp ```text challenges/ └── {challenge-name}/ - ├── _index.md + ├── _index.md ├── lab/ - │ ├── _index.md + │ ├── _index.md ├── exam/ - │ ├── _index.md + │ ├── _index.md └── content/ ├── description/ ├── getting-started/ @@ -188,7 +188,7 @@ weight: 5 banner: "kubernetes-icon.svg" id: "" tags: [kubernetes, infrastructure] -categories: "cloud" +categories: [cloud] level: "beginner" # Table of content covered in the test @@ -197,7 +197,7 @@ level: "beginner" competencies: - title: "Domain 1" percentage: 10 # Weightage of this domain in the test - items: + items: - "Subdomain 1" - "Subdomain 2" @@ -225,17 +225,17 @@ prerequisiteKnowledge: - title: "Basic knowledge of Linux command line" link: "https://linuxcommand.org/" -# List of additional resources for further reading +# List of additional resources for further reading relatedResources: - title: "Documentation" link: "https://docs.example.com/" - title: "Instructions" link: "https://instructions.example.com/" - title: "YouTube Channel" - link: "https://www.youtube.com/c/example" + link: "https://www.youtube.com/c/example" # Additional attributes about the test -additionalAttributes: +additionalAttributes: - title: "Retake Policy" description: "One Retake allowed after 30 days" - title: "Labs" @@ -243,7 +243,7 @@ additionalAttributes: --- ``` - + **Summary of Required Fields** > In this table, fields marked with ✅ are required, while those marked with – are optional. @@ -288,7 +288,7 @@ While there's no hard-coded size limit, we enforce these practical constraints: ### How to Add an Image -1. Place your image file (e.g., `hugo-logo.png`) in the **same directory** as your Markdown file (e.g., `01-pods.md`). +1. Place your image file (e.g., `hugo-logo.png`) in the **same directory** as your Markdown file (e.g., `01-pods.md`). 2. In your `01-pods.md` file, embed the image using a **standard Markdown link**. The path should just be the filename. @@ -391,17 +391,17 @@ Now, create the two required secrets in your repository. 1. Navigate to your GitHub repository and go to `Settings` > `Secrets and variables` > `Actions`. 2. Ensure you are on the **Secrets** tab. 3. Click `New repository secret` to add the following two secrets: - 1. **Name:** `ACADEMY_ORG_ID` + 1. **Name:** `ACADEMY_ORG_ID` **Value:** Paste your unique Organization ID string. - 2. **Name:** `ACADEMY_TOKEN` + 2. **Name:** `ACADEMY_TOKEN` **Value:** Paste the personal access token generated from Layer5 Cloud by following the instructions below. {{< alert type="info" title="How to Correctly Copy Your Token" >}} When you generate a token from the [Layer5 Cloud Tokens page](https://cloud.layer5.io/security/tokens), you will get a JSON object like this: -`{"meshery-provider":"Meshery","token":"eyj...your-long-token-string..."}` You must copy only the token string itself—the value inside the quotes for the `"token"` key. +`{"meshery-provider":"Meshery","token":"eyj...your-long-token-string..."}` You must copy only the token string itself—the value inside the quotes for the `"token"` key. Do NOT include the curly braces `{}`, the `"token":` key, or the surrounding quotes. The value you paste into the secret should begin with `eyj...`. {{< /alert >}} @@ -440,13 +440,13 @@ Once your content is live, you may need to perform routine tasks to keep your lo ### Updating the Academy Theme The [`academy-theme`](https://github.com/layer5io/academy-theme) provides the core layout, style, and features for your Academy content. Regularly updating it ensures you benefit from the latest improvements and bug fixes. -To upgrade to the latest theme version, run: +To upgrade to the latest theme version, run: ```bash make theme-update ``` You will see output similar to this as Hugo fetches the new modules: -```bash +```bash hugo mod get -u hugo: collected modules in 1707 ms go: downloading github.com/layer5io/academy-theme v0.1.6 @@ -470,25 +470,25 @@ make clean
1. Why is my workflow failing with a 401 Unauthorized or User must be logged in error? - + This error indicates an issue with your ACADEMY_TOKEN. Please ensure you have correctly copied only the token string and not the entire JSON object from the downloaded file.
2. Why is my workflow failing with a URL containing a double slash ( // )? - + A double slash in the URL (e.g., .../api/academy//update/...) means your ACADEMY_ORG_ID was not found. This typically happens when the secret name in your repository does not exactly match the name expected by the workflow file (e.g., ORG_ID).
3. How do I handle updates or corrections after my content is live? - + All content updates are managed through your Git repository. Simply commit and push your changes, then create a new GitHub Release with a new version number (e.g., v1.0.2). This automatically triggers the publishing workflow and updates your content on the Academy platform.
4. What happens if my new content has an error? - + The publishing process is designed to be safe. If your new content causes a build error, the workflow will fail, and the previously working version of the Academy will remain unchanged. Your broken update will not be published.
@@ -500,13 +500,13 @@ The structure is defined by your folder hierarchy. A learning path is a director
6. Why does my local build fail when adding large videos? - + The ideal size should be less than 10MB for our service performance and sustainability, and server resource management. If your asset size is larger than 10MB, we recommend using external hosting as listed.
- +
7. How to securely host private training videos? - + Use AWS S3 with signed URLs: ```html