From 3b14dee42b308667a1ceea6f518363f609fcc98c Mon Sep 17 00:00:00 2001 From: Raunak Madan Date: Sun, 7 Jun 2026 07:02:16 +0530 Subject: [PATCH 1/2] Restructure the docs Signed-off-by: Raunak Madan --- .github/workflows/build-and-preview-docs.yml | 1 + Makefile | 5 +- assets/scss/_fonts_project.scss | 40 ++++++------- assets/scss/_landing_project.scss | 10 ++-- content/en/_index.md | 30 +++++----- content/en/charts/_index.md | 8 +-- content/en/cloud/_index.md | 6 +- .../building-certifications/index.md | 2 +- .../extending-the-academy/index.md | 4 +- .../instructor-console-guide/index.md | 6 +- ...integrating-assessments-in-the-academy.md} | 0 .../index.md => platform-development.md} | 2 +- content/en/cloud/concepts/_index.md | 2 +- content/en/cloud/concepts/catalog/_index.md | 6 +- .../images/card-view.png | Bin .../images/catalog-view.gif | Bin .../images/design-edit.png | Bin .../images/design-view.gif | Bin .../index.md} | 20 +++---- .../images/leaderboard-action.png | Bin .../images/leaderboard-page.gif | Bin .../images/leaderboard_button.png | Bin .../{leaderboard.md => leaderboard/index.md} | 8 +-- .../catalog/{ => metrics}/images/cards.png | Bin .../catalog/{metrics.md => metrics/index.md} | 6 +- .../concepts/identity-and-security/_index.md | 8 +-- .../identity-and-security/keychains.md | 6 +- .../concepts/identity-and-security/keys.md | 14 ++--- .../organizations/_index.md | 8 +-- .../images/organization_units.svg | 0 .../identity-and-security/roles/_index.md | 18 +++--- .../academy-roles}/images/academy-admin.svg | 0 .../academy-roles}/images/learner.svg | 0 .../index.md} | 10 ++-- .../{ => roles}/images/organization-roles.svg | 0 .../images/role-provider-admin.svg | 0 .../{ => roles}/images/roles-overview.svg | 0 .../{ => roles}/images/team-roles.svg | 0 .../{ => roles}/images/workspace-roles.svg | 0 .../roles/organization-roles.md | 6 +- .../roles/provider-admin-roles.md | 2 +- .../identity-and-security/roles/team-roles.md | 4 +- .../user-role}/images/user-role.svg | 0 .../{user-role.md => user-role/index.md} | 4 +- .../roles/workspace-roles.md | 4 +- .../identity-and-security/teams/_index.md | 10 ++-- .../teams/{ => images}/open_team_invite.gif | Bin .../teams/images}/team-of-fives.svg | 0 .../concepts/identity-and-security/tokens.md | 2 +- .../identity-and-security/users/_index.md | 12 ++-- .../users/default-permissions.md | 2 +- .../users/{ => images}/Slide41.svg | 0 .../images}/notification-preferences.gif | Bin .../index.md} | 2 +- .../users/user-invitations/index.md | 2 +- .../{ => user-management/images}/add-user.gif | Bin .../images}/create-user.gif | Bin .../images}/org_invite.png | Bin .../images}/remove_user.png | Bin .../index.md} | 14 ++--- .../en/cloud/concepts/spaces/environments.md | 6 +- .../en/cloud/concepts/spaces/workspaces.md | 8 +-- content/en/cloud/getting-started/_index.md | 4 +- .../getting-started-with-layer5-account.md | 6 +- .../images/github/add_repo.png | Bin .../images/github/add_workflows.png | Bin .../images/github/authorize.png | Bin .../images/github/catalog.png | Bin .../images/github/configure_secrets.png | Bin .../images/github/connections.png | Bin .../images/github/dashboard.png | Bin .../images/github/delete_connection.png | Bin .../images/github/extensions.png | Bin .../images/github/finish.png | Bin .../images/github/github.png | Bin .../images/github/install_meshery.png | Bin .../images/github/integrations.png | Bin .../images/github/select-repo.png | Bin .../images/github/select_connection.png | Bin .../images/github/select_design.png | Bin .../images/github/select_file.png | Bin .../images/github/show_all_files.png | Bin .../images/github/spaces.png | Bin .../images/github/workflow_exists.png | Bin .../index.md} | 40 ++++++------- .../cloud/getting-started/meet-five/_index.md | 14 ++--- .../meet-five/five-narrative-plan.md | 6 +- .../meet-five}/images/five/3.svg | 0 .../meet-five}/images/five/4.svg | 0 .../meet-five}/images/five/5.svg | 0 content/en/cloud/getting-started/support.md | 2 +- .../integrations/github-actions/_index.md | 2 +- .../organizations/org-management/_index.md | 10 ++-- .../{ => images}/create_org.png | Bin .../{ => images}/delete_org.png | Bin .../org-management/{ => images}/edit_org.png | Bin .../{ => images}/org_open_invite.gif | Bin .../{ => images}/org_overview.png | Bin .../index.md => navigating-organizations.md} | 2 +- .../guides/self-hosted/planning/_index.md | 2 +- .../images/self-hosted-deployment.svg | 0 .../index.md} | 14 ++--- .../kanvas-collaboration-networking.svg | 0 .../index.md} | 2 +- .../self-hosted/white-labeling/_index.md | 8 +-- .../images/embedding-badges-modal.svg | 0 .../index.md} | 2 +- .../guides/tutorials/promoting-a-design.md | 6 +- .../guides/tutorials/sharing-a-workspace.md | 4 +- .../images/assign-designs-views.gif | Bin .../images/assign-teams.gif | Bin .../images/assign_environment.png | Bin .../images/create-workspace.gif | Bin .../images/delete-workspace.gif | Bin .../images/edit-workspace.gif | Bin .../images/grid-view.png | Bin .../images/security-audit.png | Bin .../images/table-view.png | Bin .../index.md} | 36 ++++++------ .../{concepts/catalog => }/images/Slide51.svg | 0 .../en/cloud}/images/five/1.svg | 0 .../en/cloud}/images/five/2.svg | 0 .../layer5-five-mascot-means-business.svg | 0 .../cloud/reference/api-reference/_index.md | 4 +- .../en/cloud/reference/default-permissions.md | 2 +- .../en/contributing/contributing-to-docs.md | 33 +++++++++-- .../en}/images/landing/discuss.png | Bin content/en/kanvas/_index.md | 14 ++--- .../advanced/{autopan/index.md => autopan.md} | 12 ++-- .../performance/{ => images}/layers-panel.png | Bin .../en/kanvas/advanced/performance/index.md | 18 +++--- .../index.md => render-modes.md} | 16 +++--- .../{ => images}/no-tagsets.png | Bin .../{ => images}/with-tagsets.png | Bin .../kanvas/advanced/url-parameters/index.md | 8 +-- .../images/helm-chart-color.svg | 0 .../index.md} | 2 +- .../images/kanvas-icon-color.svg | 0 .../images/kanvas-snapshot.png | Bin .../index.md} | 4 +- .../{ => images}/EdgeMountRelationship.svg | 0 .../{ => images}/EdgeNetworkRelationship.svg | 0 .../Hierachical_Inventory_Relationships.svg | 0 .../Hierarchical_Parent_Relationship.svg | 0 .../edge_firewall_relationship_pod_to_pod.svg | 0 ...ationship_cluster_role_service_account.svg | 0 .../reference-deployment-configmap.png | Bin .../relationships/{ => images}/tags.png | Bin .../en/kanvas/concepts/relationships/index.md | 16 +++--- content/en/kanvas/designer/_index.md | 2 +- .../comments/{ => images}/Right-click.png | Bin .../comments/{ => images}/Toolbar1.png | Bin .../comments/{ => images}/Toolbar2.png | Bin .../comments/{ => images}/comment-canvas.png | Bin .../{ => images}/comment-cloud-manage.png | Bin .../comments/{ => images}/comment-copy.gif | Bin .../comments/{ => images}/comment-dock.png | Bin .../{ => images}/comment-notificationBell.png | Bin .../comments/{ => images}/comments-color.png | Bin .../{ => images}/comments-conversation.gif | Bin .../{ => images}/comments-grouped.png | Bin .../comments/{ => images}/comments-hide.png | Bin .../{ => images}/comments-unresolved.gif | Bin .../{ => images}/conversation-screenshot.png | Bin .../example-notification-email.png | Bin .../{ => images}/grouping -comments.gif | Bin .../{ => images}/kanvas-annotations.gif | Bin .../comments/{ => images}/kanvas-comment.png | Bin .../comments/{ => images}/locking-comment.gif | Bin .../comments/{ => images}/naming-comments.png | Bin content/en/kanvas/designer/comments/index.md | 36 ++++++------ .../{ => images}/embed-designs.gif | Bin .../designer/embedding-designs/index.md | 2 +- .../{ => images}/embed-code.png | Bin .../{ => images}/export-modal.gif | Bin .../kanvas/designer/export-designs/index.md | 4 +- .../{ => images}/pin-to-dock.png | Bin .../{ => images}/pinned-model-location.png | Bin .../{ => images}/unpin-model-1.png | Bin .../{ => images}/unpin-model-2.png | Bin .../use-pinned-models-components.png | Bin .../designer/pin-model-to-dock/index.md | 10 ++-- .../designer/publishing-designs/index.md | 10 ++-- .../index.md => relationship-evaluation.md} | 6 +- .../sharing/{ => images}/model-where.gif | Bin .../sharing/{ => images}/share-model.png | Bin content/en/kanvas/designer/sharing/index.md | 12 ++-- .../designer/tagsets/{ => images}/tagsets.gif | Bin content/en/kanvas/designer/tagsets/index.md | 4 +- .../{ => images}/click.png | Bin .../{ => images}/click_and_drag.gif | Bin .../{ => images}/click_move_ptm.gif | Bin .../{ => images}/click_release_ptm.gif | Bin .../click_while_connecting_ptm.gif | Bin .../{ => images}/customize_end.gif | Bin .../{ => images}/default.gif | Bin .../{ => images}/double_click.png | Bin .../{ => images}/draw_line.gif | Bin .../{ => images}/mouse_down.gif | Bin .../{ => images}/mouse_down_plus_cmd.gif | Bin .../{ => images}/mouse_down_plus_shift.gif | Bin .../{ => images}/mouse_up.gif | Bin .../{ => images}/pen_hover.gif | Bin .../{ => images}/pencil.gif | Bin .../{ => images}/pencil_hover.gif | Bin .../{ => images}/pencil_ink.gif | Bin .../{ => images}/right_click.png | Bin .../{ => images}/scroll_left_right.gif | Bin .../{ => images}/scroll_up_down.gif | Bin .../{ => images}/select.gif | Bin .../{ => images}/text-box-double-click.gif | Bin .../{ => images}/tool-mode-placeholder.svg | 0 .../{ => images}/zoom_in_out.gif | Bin .../understanding-tool-modes/index.md | 40 ++++++------- .../{ => images}/canvas-preferences.png | Bin .../whiteboarding/{ => images}/comment.gif | Bin .../{ => images}/line-editing.gif | Bin .../{ => images}/marching-ants.gif | Bin .../whiteboarding/{ => images}/overview.png | Bin .../whiteboarding/{ => images}/section.gif | Bin .../{ => images}/shapes_introduction.gif | Bin .../{ => images}/text-customization.png | Bin .../whiteboarding/{ => images}/textbox.gif | Bin .../whiteboarding/{ => images}/tooltip.png | Bin .../en/kanvas/designer/whiteboarding/index.md | 14 ++--- content/en/kanvas/getting-started/_index.md | 2 +- .../images/relationships/EdgeNetwork.gif | Bin .../relationships/create-inventory-wallet.gif | Bin .../relationships/create-matchlabels.gif | Bin .../relationships/create-parent-child.gif | Bin .../images/relationships/delete-edge.gif | Bin .../relationships/delete-parent-child.gif | Bin .../layers-panel-relationships.gif | Bin .../index.md} | 16 +++--- .../images/importing-designs/cloud-url.gif | Bin .../images/importing-designs/drag-drop.gif | Bin .../images/importing-designs/file-import.gif | Bin .../index.md} | 10 ++-- .../configuration-panel.png | Bin .../copy-paste-rightclick-paste.png | Bin .../copy-paste-rightclick-select.png | Bin .../copy-paste-save.png | Bin .../working-with-components/copy-paste.png | Bin .../working-with-components/radial-menu.png | Bin .../index.md} | 14 ++--- .../tagsets => images}/group-components.png | Bin content/en/kanvas/operator/_index.md | 4 +- .../interactive-terminal-sequence-diagram.svg | 0 .../index.md} | 6 +- .../images/log-stream-sequence-diagram.svg | 0 .../index.md} | 6 +- .../images/operator-container-details.png | Bin .../images/operator-node-details.png | Bin .../index.md} | 4 +- .../{ => views}/images/ActionsIcon.png | Bin .../{ => views}/images/DeleteView.png | Bin .../{ => views}/images/ExportView2.png | Bin .../operator/{ => views}/images/SaveView.png | Bin .../{ => views}/images/ShareModal.PNG | Bin .../operator/{ => views}/images/ShareView.png | Bin .../operator/{ => views}/images/ViewInfo.png | Bin .../operator/{ => views}/images/Views.svg | 0 .../{ => views}/images/Visibility.png | Bin .../operator/{views.md => views/index.md} | 18 +++--- .../kanvas/reference/releases/v0.7.119-4.md | 16 +++--- .../kanvas/reference/releases/v0.7.122-1.md | 54 +++++++++--------- .../images/deploy-designs/clone-design.gif | Bin .../images/deploy-designs/my-designs.gif | Bin .../index.md} | 4 +- .../images/deploy-designs/empty-ls.png | Bin .../images/deploy-designs/error-code.png | Bin .../images/deploy-designs/missing-ns.png | Bin .../deploy-designs/notification-center.png | Bin .../images/deploy-designs/notification.png | Bin .../images/deploy-designs/success-deploy.png | Bin .../index.md} | 12 ++-- .../invalid-field-value-1.png | Bin .../invalid-field-value-2.png | Bin .../dry-running-designs/missing-field.png | Bin .../dry-running-designs/missing-resource.png | Bin .../index.md} | 8 +-- .../images/undeploying-designs/undeploy.png | Bin .../index.md} | 2 +- .../performing-validation-1.png | Bin .../performing-validation-2.png | Bin .../successful-validation.png | Bin .../validating-designs/validation-error.png | Bin .../index.md} | 8 +-- content/en/kanvas/tutorials/_index.md | 2 +- .../publish-to-artifacthub/2024-07-30_1.png | Bin .../publish-to-artifacthub/2024-07-30_2.png | Bin .../publish-to-artifacthub/2024-07-30_3.png | Bin .../publish-to-artifacthub/2024-07-30_4.png | Bin .../publish-to-artifacthub/2024-07-30_5.png | Bin .../publish-to-artifacthub/add_repo.png | Bin .../artifacthub_control_panel.png | Bin .../kind_design_repo.png | Bin .../index.md} | 16 +++--- .../images/aws-controllers/aws-connection.png | Bin .../aws-controllers/configure-secret.png | Bin .../aws-controllers/controller-chart.png | Bin .../controller-operator-mode.png | Bin .../index.md} | 14 ++--- .../clone-azure-operator.png | Bin .../configure-secret-settings.png | Bin .../deploy-azure-operator.png | Bin .../search-azure-operator.png | Bin .../start-from-template.png | Bin .../index.md} | 10 ++-- .../config-storage-account.png | Bin .../deploy-storage-account.png | Bin .../search-storage-account.png | Bin .../select-components.png | Bin .../en/kanvas/tutorials/data-pipeline-gcp.md | 2 +- .../tutorials/kubernetes-request-flow.md | 4 +- .../images/screenshots/cassandra-1.png | Bin .../images/screenshots/cassandra-2.png | Bin .../images/screenshots/cassandra-3.png | Bin .../images/screenshots/cassandra-4.png | Bin .../images/screenshots/cassandra-5.png | Bin .../images/screenshots/cassandra-6.png | Bin .../images/screenshots/cassandra-7.png | Bin .../images/screenshots/cassandra-8.png | Bin .../images/screenshots/cassandra-9.png | Bin .../index.md} | 20 +++---- .../images/screenshots/app-canvas.png | Bin .../screenshots/operate-layers-expand.png | Bin .../images/screenshots/operate-layers.png | Bin .../images/screenshots/operate-logs-menu.png | Bin .../images/screenshots/operate-logs.png | Bin .../images/screenshots/operate.png | Bin .../screenshots/redis-leader-deployment.png | Bin .../redis-php-guestbook-deploy.png | Bin .../redis-php-guestbook-deployment.png | Bin .../redis-php-guestbook-dryrun.png | Bin .../redis-php-guestbook-finalize.png | Bin .../redis-php-guestbook-identify.png | Bin .../redis-php-guestbook-validate.png | Bin .../index.md} | 28 ++++----- .../images/app-deploy.png | Bin .../images/click-deploy.png | Bin .../images/click-import.png | Bin .../configuration-menu-design-import.png | Bin .../images/delete.png | Bin .../images/deploy-app.png | Bin .../images/deploy-success.png | Bin .../images/deploy.png | Bin .../images/design-auto-save.png | Bin .../images/design-cronjob.png | Bin .../images/navigate-kanvas.png | Bin .../images/save-app.png | Bin .../images/save.png | Bin .../images/scale.png | Bin .../images/select-cronjob.png | Bin .../images/tool-bar.png | Bin .../images/toolbar-cronjob.png | Bin .../images/view.png | Bin .../index.md} | 38 ++++++------ .../2024-04-16_00-13.png | Bin .../2024-04-16_00-18.png | Bin .../2024-04-16_00-42.png | Bin .../2024-04-16_00-56.png | Bin .../2024-04-16_00-57.png | Bin .../2024-04-16_01-00.png | Bin .../2024-04-16_01-19.png | Bin .../2024-04-16_01-25.png | Bin .../2024-04-16_01-27.png | Bin .../2024-04-16_01-29.png | Bin .../2024-04-16_18-03.png | Bin .../2024-04-16_18-19.png | Bin .../2024-04-16_18-25.png | Bin .../2024-04-16_18-26.png | Bin .../2024-04-17_20-01.png | Bin .../index.md} | 32 +++++------ .../2025-02-27_16-59.png | Bin .../2025-02-27_17-03.png | Bin .../2025-02-27_17-16.png | Bin .../2025-02-27_17-20.png | Bin .../2025-02-27_17-51.png | Bin .../2025-02-27_17-55.png | Bin .../2025-02-27_18-00.png | Bin .../2025-02-27_18-03.png | Bin .../2025-02-27_18-08.png | Bin .../2025-02-27_18-09.png | Bin .../2025-02-27_18-21.png | Bin .../2025-02-27_18-23.png | Bin .../2025-02-27_18-26.png | Bin .../2025-02-27_18-27.png | Bin .../2025-02-27_18-32.png | Bin .../2025-02-27_22-20.png | Bin .../2025-02-27_22-22.png | Bin .../2025-02-28_15-03.png | Bin .../2025-02-28_15-10.png | Bin .../index.md} | 40 ++++++------- .../kubernetes-pods/2024-02-22_18-20.png | Bin .../kubernetes-pods/2024-02-22_18-32.png | Bin .../kubernetes-pods/2024-02-22_18-35.png | Bin .../kubernetes-pods/2024-02-23_11-54.png | Bin .../kubernetes-pods/2024-02-23_11-54_1.png | Bin .../kubernetes-pods/2024-02-23_11-57.png | Bin .../kubernetes-pods/2024-02-23_19-52.png | Bin .../kubernetes-pods/2024-02-23_19-54.png | Bin .../kubernetes-pods/2024-02-23_19-56.png | Bin .../kubernetes-pods/2024-02-25_17-38.png | Bin .../kubernetes-pods/2024-02-25_18-18.png | Bin .../kubernetes-pods/2024-02-25_18-22.png | Bin .../kubernetes-pods/2024-02-25_18-25.png | Bin .../kubernetes-pods/2024-02-28_11-05.png | Bin .../kubernetes-pods/2024-02-28_11-10.png | Bin .../kubernetes-pods/2024-02-28_11-11.png | Bin .../kubernetes-pods/2024-02-28_11-33.png | Bin .../kubernetes-pods/2024-02-28_11-35.png | Bin .../kubernetes-pods/2024-02-28_11-37.png | Bin .../kubernetes-pods/2024-02-28_11-45.png | Bin .../kubernetes-pods/2024-02-28_11-48.png | Bin .../kubernetes-pods/2024-02-28_11-53.png | Bin .../kubernetes-pods/2024-02-29_20-37.png | Bin .../index.md} | 46 +++++++-------- .../kubernetes/kubernetes-request-flow.md | 4 +- .../wordpress-mysql-persistentvolume/wp1.png | Bin .../wordpress-mysql-persistentvolume/wp10.png | Bin .../wordpress-mysql-persistentvolume/wp11.png | Bin .../wordpress-mysql-persistentvolume/wp12.png | Bin .../wordpress-mysql-persistentvolume/wp13.png | Bin .../wordpress-mysql-persistentvolume/wp14.png | Bin .../wordpress-mysql-persistentvolume/wp15.png | Bin .../wordpress-mysql-persistentvolume/wp16.png | Bin .../wordpress-mysql-persistentvolume/wp17.png | Bin .../wordpress-mysql-persistentvolume/wp18.png | Bin .../wordpress-mysql-persistentvolume/wp19.png | Bin .../wordpress-mysql-persistentvolume/wp2.png | Bin .../wordpress-mysql-persistentvolume/wp20.png | Bin .../wordpress-mysql-persistentvolume/wp21.png | Bin .../wordpress-mysql-persistentvolume/wp22.png | Bin .../wordpress-mysql-persistentvolume/wp23.png | Bin .../wordpress-mysql-persistentvolume/wp3.png | Bin .../wordpress-mysql-persistentvolume/wp4.png | Bin .../wordpress-mysql-persistentvolume/wp5.png | Bin .../wordpress-mysql-persistentvolume/wp6.png | Bin .../wordpress-mysql-persistentvolume/wp7.png | Bin .../wordpress-mysql-persistentvolume/wp8.png | Bin .../wordpress-mysql-persistentvolume/wp9.png | Bin .../index.md} | 48 ++++++++-------- .../kanvas/tutorials/stellar-saas-platform.md | 4 +- .../add-custom-html.png | Bin .../add-embedded-html.png | Bin .../embedding-design-in-wordpress/copy-js.png | Bin .../copy-script.png | Bin .../embedded-design-preview.png | Bin .../embeddesign-HTML.png | Bin .../expand-designs-kanvas.png | Bin .../quickaction-exportdesign.png | Bin .../index.md} | 16 +++--- content/en/videos/_index.md | 2 +- .../basics/designer-overview.md | 2 +- .../basics/operator-overview.md | 2 +- hugo.toml | 2 +- layouts/partials/breadcrumb.html | 29 ++++++++++ layouts/partials/favicon.html | 16 +++--- layouts/partials/feature-info.html | 4 +- layouts/partials/footer.html | 2 +- layouts/partials/head-css.html | 4 +- layouts/partials/navbar-version-selector.html | 18 ++++++ layouts/partials/navbar.html | 28 ++++----- layouts/partials/search-input-nav.html | 2 +- layouts/partials/search-input.html | 4 +- layouts/partials/video-landing-page.html | 12 ++-- layouts/partials/video-section-index.html | 2 +- layouts/shortcodes/csvtable-roles.html | 2 +- layouts/shortcodes/csvtable.html | 2 +- layouts/shortcodes/local-video.html | 2 +- layouts/shortcodes/meshery-design-embed.html | 3 + layouts/shortcodes/static.html | 1 + layouts/video/video.html | 6 +- package.json | 4 +- static/favicons/browserconfig.xml | 2 +- 476 files changed, 736 insertions(+), 650 deletions(-) rename content/en/cloud/academy/creating-content/{integrating-assessments-in-the-academy/index.md => integrating-assessments-in-the-academy.md} (100%) rename content/en/cloud/academy/{platform-development/index.md => platform-development.md} (98%) rename content/en/cloud/concepts/catalog/{ => exploring-the-catalog}/images/card-view.png (100%) rename content/en/cloud/concepts/catalog/{ => exploring-the-catalog}/images/catalog-view.gif (100%) rename content/en/cloud/concepts/catalog/{ => exploring-the-catalog}/images/design-edit.png (100%) rename content/en/cloud/concepts/catalog/{ => exploring-the-catalog}/images/design-view.gif (100%) rename content/en/cloud/concepts/catalog/{exploring-the-catalog.md => exploring-the-catalog/index.md} (91%) rename content/en/cloud/concepts/catalog/{ => leaderboard}/images/leaderboard-action.png (100%) rename content/en/cloud/concepts/catalog/{ => leaderboard}/images/leaderboard-page.gif (100%) rename content/en/cloud/concepts/catalog/{ => leaderboard}/images/leaderboard_button.png (100%) rename content/en/cloud/concepts/catalog/{leaderboard.md => leaderboard/index.md} (82%) rename content/en/cloud/concepts/catalog/{ => metrics}/images/cards.png (100%) rename content/en/cloud/concepts/catalog/{metrics.md => metrics/index.md} (89%) rename content/en/cloud/concepts/identity-and-security/{ => organizations}/images/organization_units.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles/academy-roles}/images/academy-admin.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles/academy-roles}/images/learner.svg (100%) rename content/en/cloud/concepts/identity-and-security/roles/{academy-roles.md => academy-roles/index.md} (81%) rename content/en/cloud/concepts/identity-and-security/{ => roles}/images/organization-roles.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles}/images/role-provider-admin.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles}/images/roles-overview.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles}/images/team-roles.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles}/images/workspace-roles.svg (100%) rename content/en/cloud/concepts/identity-and-security/{ => roles/user-role}/images/user-role.svg (100%) rename content/en/cloud/concepts/identity-and-security/roles/{user-role.md => user-role/index.md} (82%) rename content/en/cloud/concepts/identity-and-security/teams/{ => images}/open_team_invite.gif (100%) rename {static/images/five => content/en/cloud/concepts/identity-and-security/teams/images}/team-of-fives.svg (100%) rename content/en/cloud/concepts/identity-and-security/users/{ => images}/Slide41.svg (100%) rename content/en/cloud/concepts/identity-and-security/users/{ => notification-preferences/images}/notification-preferences.gif (100%) rename content/en/cloud/concepts/identity-and-security/users/{notification-preferences.md => notification-preferences/index.md} (94%) rename content/en/cloud/concepts/identity-and-security/users/{ => user-management/images}/add-user.gif (100%) rename content/en/cloud/concepts/identity-and-security/users/{ => user-management/images}/create-user.gif (100%) rename content/en/cloud/concepts/identity-and-security/users/{ => user-management/images}/org_invite.png (100%) rename content/en/cloud/concepts/identity-and-security/users/{ => user-management/images}/remove_user.png (100%) rename content/en/cloud/concepts/identity-and-security/users/{user-management.md => user-management/index.md} (83%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/add_repo.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/add_workflows.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/authorize.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/catalog.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/configure_secrets.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/connections.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/dashboard.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/delete_connection.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/extensions.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/finish.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/github.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/install_meshery.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/integrations.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/select-repo.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/select_connection.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/select_design.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/select_file.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/show_all_files.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/spaces.png (100%) rename content/en/cloud/getting-started/{ => github-integration}/images/github/workflow_exists.png (100%) rename content/en/cloud/getting-started/{github-integration.md => github-integration/index.md} (85%) rename {static => content/en/cloud/getting-started/meet-five}/images/five/3.svg (100%) rename {static => content/en/cloud/getting-started/meet-five}/images/five/4.svg (100%) rename {static => content/en/cloud/getting-started/meet-five}/images/five/5.svg (100%) rename content/en/cloud/guides/organizations/org-management/{ => images}/create_org.png (100%) rename content/en/cloud/guides/organizations/org-management/{ => images}/delete_org.png (100%) rename content/en/cloud/guides/organizations/org-management/{ => images}/edit_org.png (100%) rename content/en/cloud/guides/organizations/org-management/{ => images}/org_open_invite.gif (100%) rename content/en/cloud/guides/organizations/org-management/{ => images}/org_overview.png (100%) rename content/en/cloud/guides/organizations/org-management/{navigating-organizations/index.md => navigating-organizations.md} (98%) rename content/en/cloud/guides/self-hosted/planning/{ => identity-services}/images/self-hosted-deployment.svg (100%) rename content/en/cloud/guides/self-hosted/planning/{identity-services.md => identity-services/index.md} (79%) rename content/en/cloud/guides/self-hosted/planning/{ => peer-to-peer-communication}/images/kanvas-collaboration-networking.svg (100%) rename content/en/cloud/guides/self-hosted/planning/{peer-to-peer-communication.md => peer-to-peer-communication/index.md} (94%) rename content/en/cloud/guides/tutorials/{ => assigning-user-badges}/images/embedding-badges-modal.svg (100%) rename content/en/cloud/guides/tutorials/{assigning-user-badges.md => assigning-user-badges/index.md} (97%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/assign-designs-views.gif (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/assign-teams.gif (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/assign_environment.png (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/create-workspace.gif (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/delete-workspace.gif (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/edit-workspace.gif (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/grid-view.png (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/security-audit.png (100%) rename content/en/cloud/guides/workspaces/{ => managing-workspaces}/images/table-view.png (100%) rename content/en/cloud/guides/workspaces/{managing-workspaces.md => managing-workspaces/index.md} (83%) rename content/en/cloud/{concepts/catalog => }/images/Slide51.svg (100%) rename {static => content/en/cloud}/images/five/1.svg (100%) rename {static => content/en/cloud}/images/five/2.svg (100%) rename {static => content/en/cloud}/images/five/layer5-five-mascot-means-business.svg (100%) rename {static => content/en}/images/landing/discuss.png (100%) rename content/en/kanvas/advanced/{autopan/index.md => autopan.md} (88%) rename content/en/kanvas/advanced/performance/{ => images}/layers-panel.png (100%) rename content/en/kanvas/advanced/{render-modes/index.md => render-modes.md} (95%) rename content/en/kanvas/advanced/url-parameters/{ => images}/no-tagsets.png (100%) rename content/en/kanvas/advanced/url-parameters/{ => images}/with-tagsets.png (100%) rename content/en/kanvas/concepts/{ => helm-kanvas-snapshot}/images/helm-chart-color.svg (100%) rename content/en/kanvas/concepts/{helm-kanvas-snapshot.md => helm-kanvas-snapshot/index.md} (84%) rename content/en/kanvas/concepts/{ => kanvas-snapshot}/images/kanvas-icon-color.svg (100%) rename content/en/kanvas/concepts/{ => kanvas-snapshot}/images/kanvas-snapshot.png (100%) rename content/en/kanvas/concepts/{kanvas-snapshot.md => kanvas-snapshot/index.md} (95%) rename content/en/kanvas/concepts/relationships/{ => images}/EdgeMountRelationship.svg (100%) rename content/en/kanvas/concepts/relationships/{ => images}/EdgeNetworkRelationship.svg (100%) rename content/en/kanvas/concepts/relationships/{ => images}/Hierachical_Inventory_Relationships.svg (100%) rename content/en/kanvas/concepts/relationships/{ => images}/Hierarchical_Parent_Relationship.svg (100%) rename content/en/kanvas/concepts/relationships/{ => images}/edge_firewall_relationship_pod_to_pod.svg (100%) rename content/en/kanvas/concepts/relationships/{ => images}/edge_permission_relationship_cluster_role_service_account.svg (100%) rename content/en/kanvas/concepts/relationships/{ => images}/reference-deployment-configmap.png (100%) rename content/en/kanvas/concepts/relationships/{ => images}/tags.png (100%) rename content/en/kanvas/designer/comments/{ => images}/Right-click.png (100%) rename content/en/kanvas/designer/comments/{ => images}/Toolbar1.png (100%) rename content/en/kanvas/designer/comments/{ => images}/Toolbar2.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comment-canvas.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comment-cloud-manage.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comment-copy.gif (100%) rename content/en/kanvas/designer/comments/{ => images}/comment-dock.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comment-notificationBell.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comments-color.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comments-conversation.gif (100%) rename content/en/kanvas/designer/comments/{ => images}/comments-grouped.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comments-hide.png (100%) rename content/en/kanvas/designer/comments/{ => images}/comments-unresolved.gif (100%) rename content/en/kanvas/designer/comments/{ => images}/conversation-screenshot.png (100%) rename content/en/kanvas/designer/comments/{ => images}/example-notification-email.png (100%) rename content/en/kanvas/designer/comments/{ => images}/grouping -comments.gif (100%) rename content/en/kanvas/designer/comments/{ => images}/kanvas-annotations.gif (100%) rename content/en/kanvas/designer/comments/{ => images}/kanvas-comment.png (100%) rename content/en/kanvas/designer/comments/{ => images}/locking-comment.gif (100%) rename content/en/kanvas/designer/comments/{ => images}/naming-comments.png (100%) rename content/en/kanvas/designer/embedding-designs/{ => images}/embed-designs.gif (100%) rename content/en/kanvas/designer/export-designs/{ => images}/embed-code.png (100%) rename content/en/kanvas/designer/export-designs/{ => images}/export-modal.gif (100%) rename content/en/kanvas/designer/pin-model-to-dock/{ => images}/pin-to-dock.png (100%) rename content/en/kanvas/designer/pin-model-to-dock/{ => images}/pinned-model-location.png (100%) rename content/en/kanvas/designer/pin-model-to-dock/{ => images}/unpin-model-1.png (100%) rename content/en/kanvas/designer/pin-model-to-dock/{ => images}/unpin-model-2.png (100%) rename content/en/kanvas/designer/pin-model-to-dock/{ => images}/use-pinned-models-components.png (100%) rename content/en/kanvas/designer/{relationship-evaluation/index.md => relationship-evaluation.md} (96%) rename content/en/kanvas/designer/sharing/{ => images}/model-where.gif (100%) rename content/en/kanvas/designer/sharing/{ => images}/share-model.png (100%) rename content/en/kanvas/designer/tagsets/{ => images}/tagsets.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/click.png (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/click_and_drag.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/click_move_ptm.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/click_release_ptm.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/click_while_connecting_ptm.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/customize_end.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/default.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/double_click.png (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/draw_line.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/mouse_down.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/mouse_down_plus_cmd.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/mouse_down_plus_shift.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/mouse_up.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/pen_hover.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/pencil.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/pencil_hover.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/pencil_ink.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/right_click.png (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/scroll_left_right.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/scroll_up_down.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/select.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/text-box-double-click.gif (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/tool-mode-placeholder.svg (100%) rename content/en/kanvas/designer/understanding-tool-modes/{ => images}/zoom_in_out.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/canvas-preferences.png (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/comment.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/line-editing.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/marching-ants.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/overview.png (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/section.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/shapes_introduction.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/text-customization.png (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/textbox.gif (100%) rename content/en/kanvas/designer/whiteboarding/{ => images}/tooltip.png (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/EdgeNetwork.gif (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/create-inventory-wallet.gif (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/create-matchlabels.gif (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/create-parent-child.gif (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/delete-edge.gif (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/delete-parent-child.gif (100%) rename content/en/kanvas/getting-started/{ => creating-relationships}/images/relationships/layers-panel-relationships.gif (100%) rename content/en/kanvas/getting-started/{creating-relationships.md => creating-relationships/index.md} (89%) rename content/en/kanvas/getting-started/{ => import-designs}/images/importing-designs/cloud-url.gif (100%) rename content/en/kanvas/getting-started/{ => import-designs}/images/importing-designs/drag-drop.gif (100%) rename content/en/kanvas/getting-started/{ => import-designs}/images/importing-designs/file-import.gif (100%) rename content/en/kanvas/getting-started/{import-designs.md => import-designs/index.md} (95%) rename content/en/kanvas/getting-started/{ => working-with-components}/images/working-with-components/configuration-panel.png (100%) rename content/en/kanvas/getting-started/{ => working-with-components}/images/working-with-components/copy-paste-rightclick-paste.png (100%) rename content/en/kanvas/getting-started/{ => working-with-components}/images/working-with-components/copy-paste-rightclick-select.png (100%) rename content/en/kanvas/getting-started/{ => working-with-components}/images/working-with-components/copy-paste-save.png (100%) rename content/en/kanvas/getting-started/{ => working-with-components}/images/working-with-components/copy-paste.png (100%) rename content/en/kanvas/getting-started/{ => working-with-components}/images/working-with-components/radial-menu.png (100%) rename content/en/kanvas/getting-started/{working-with-components.md => working-with-components/index.md} (91%) rename content/en/kanvas/{designer/tagsets => images}/group-components.png (100%) rename {static => content/en/kanvas/operator/interactive-terminal}/images/interactive-terminal-sequence-diagram.svg (100%) rename content/en/kanvas/operator/{interactive-terminal.md => interactive-terminal/index.md} (93%) rename {static => content/en/kanvas/operator/log-streaming}/images/log-stream-sequence-diagram.svg (100%) rename content/en/kanvas/operator/{log-streaming.md => log-streaming/index.md} (92%) rename content/en/kanvas/operator/{ => resource-details}/images/operator-container-details.png (100%) rename content/en/kanvas/operator/{ => resource-details}/images/operator-node-details.png (100%) rename content/en/kanvas/operator/{resource-details.md => resource-details/index.md} (86%) rename content/en/kanvas/operator/{ => views}/images/ActionsIcon.png (100%) rename content/en/kanvas/operator/{ => views}/images/DeleteView.png (100%) rename content/en/kanvas/operator/{ => views}/images/ExportView2.png (100%) rename content/en/kanvas/operator/{ => views}/images/SaveView.png (100%) rename content/en/kanvas/operator/{ => views}/images/ShareModal.PNG (100%) rename content/en/kanvas/operator/{ => views}/images/ShareView.png (100%) rename content/en/kanvas/operator/{ => views}/images/ViewInfo.png (100%) rename content/en/kanvas/operator/{ => views}/images/Views.svg (100%) rename content/en/kanvas/operator/{ => views}/images/Visibility.png (100%) rename content/en/kanvas/operator/{views.md => views/index.md} (82%) rename content/en/kanvas/{getting-started => tasks/designs/cloning-a-design}/images/deploy-designs/clone-design.gif (100%) rename content/en/kanvas/{getting-started => tasks/designs/cloning-a-design}/images/deploy-designs/my-designs.gif (100%) rename content/en/kanvas/tasks/designs/{cloning-a-design.md => cloning-a-design/index.md} (98%) rename content/en/kanvas/{getting-started => tasks/designs/deploying-designs}/images/deploy-designs/empty-ls.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/deploying-designs}/images/deploy-designs/error-code.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/deploying-designs}/images/deploy-designs/missing-ns.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/deploying-designs}/images/deploy-designs/notification-center.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/deploying-designs}/images/deploy-designs/notification.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/deploying-designs}/images/deploy-designs/success-deploy.png (100%) rename content/en/kanvas/tasks/designs/{deploying-designs.md => deploying-designs/index.md} (96%) rename content/en/kanvas/{getting-started => tasks/designs/dry-running-a-design}/images/dry-running-designs/invalid-field-value-1.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/dry-running-a-design}/images/dry-running-designs/invalid-field-value-2.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/dry-running-a-design}/images/dry-running-designs/missing-field.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/dry-running-a-design}/images/dry-running-designs/missing-resource.png (100%) rename content/en/kanvas/tasks/designs/{dry-running-a-design.md => dry-running-a-design/index.md} (80%) rename content/en/kanvas/{getting-started => tasks/designs/undeploying-designs}/images/undeploying-designs/undeploy.png (100%) rename content/en/kanvas/tasks/designs/{undeploying-designs.md => undeploying-designs/index.md} (99%) rename content/en/kanvas/{getting-started => tasks/designs/validating-designs}/images/validating-designs/performing-validation-1.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/validating-designs}/images/validating-designs/performing-validation-2.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/validating-designs}/images/validating-designs/successful-validation.png (100%) rename content/en/kanvas/{getting-started => tasks/designs/validating-designs}/images/validating-designs/validation-error.png (100%) rename content/en/kanvas/tasks/designs/{validating-designs.md => validating-designs/index.md} (96%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/2024-07-30_1.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/2024-07-30_2.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/2024-07-30_3.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/2024-07-30_4.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/2024-07-30_5.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/add_repo.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/artifacthub_control_panel.png (100%) rename content/en/kanvas/tutorials/{ => artifacthub/publish-to-artifacthub}/images/publish-to-artifacthub/kind_design_repo.png (100%) rename content/en/kanvas/tutorials/artifacthub/{publish-to-artifacthub.md => publish-to-artifacthub/index.md} (77%) rename content/en/kanvas/tutorials/{ => aws/deploy-aws-ec2-instances-with-meshery}/images/aws-controllers/aws-connection.png (100%) rename content/en/kanvas/tutorials/{ => aws/deploy-aws-ec2-instances-with-meshery}/images/aws-controllers/configure-secret.png (100%) rename content/en/kanvas/tutorials/{ => aws/deploy-aws-ec2-instances-with-meshery}/images/aws-controllers/controller-chart.png (100%) rename content/en/kanvas/tutorials/{ => aws/deploy-aws-ec2-instances-with-meshery}/images/aws-controllers/controller-operator-mode.png (100%) rename content/en/kanvas/tutorials/aws/{deploy-aws-ec2-instances-with-meshery.md => deploy-aws-ec2-instances-with-meshery/index.md} (88%) rename content/en/kanvas/tutorials/{ => azure/deploy-azure-resources-with-meshery}/images/deploy-azure-resources-with-meshery/clone-azure-operator.png (100%) rename content/en/kanvas/tutorials/{ => azure/deploy-azure-resources-with-meshery}/images/deploy-azure-resources-with-meshery/configure-secret-settings.png (100%) rename content/en/kanvas/tutorials/{ => azure/deploy-azure-resources-with-meshery}/images/deploy-azure-resources-with-meshery/deploy-azure-operator.png (100%) rename content/en/kanvas/tutorials/{ => azure/deploy-azure-resources-with-meshery}/images/deploy-azure-resources-with-meshery/search-azure-operator.png (100%) rename content/en/kanvas/tutorials/{ => azure/deploy-azure-resources-with-meshery}/images/deploy-azure-resources-with-meshery/start-from-template.png (100%) rename content/en/kanvas/tutorials/azure/{deploy-azure-resources-with-meshery.md => deploy-azure-resources-with-meshery/index.md} (92%) rename content/en/kanvas/tutorials/{ => azure}/images/deploy-azure-storage-account-with-meshery/config-storage-account.png (100%) rename content/en/kanvas/tutorials/{ => azure}/images/deploy-azure-storage-account-with-meshery/deploy-storage-account.png (100%) rename content/en/kanvas/tutorials/{ => azure}/images/deploy-azure-storage-account-with-meshery/search-storage-account.png (100%) rename content/en/kanvas/tutorials/{ => azure}/images/deploy-azure-storage-account-with-meshery/select-components.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-1.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-2.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-3.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-4.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-5.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-6.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-7.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-8.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-apache-cassandra-with-statefulset}/images/screenshots/cassandra-9.png (100%) rename content/en/kanvas/tutorials/kubernetes/{deploy-apache-cassandra-with-statefulset.md => deploy-apache-cassandra-with-statefulset/index.md} (86%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/app-canvas.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/operate-layers-expand.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/operate-layers.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/operate-logs-menu.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/operate-logs.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/operate.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-leader-deployment.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-php-guestbook-deploy.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-php-guestbook-deployment.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-php-guestbook-dryrun.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-php-guestbook-finalize.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-php-guestbook-identify.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/deploy-php-redis}/images/screenshots/redis-php-guestbook-validate.png (100%) rename content/en/kanvas/tutorials/kubernetes/{deploy-php-redis.md => deploy-php-redis/index.md} (80%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/app-deploy.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/click-deploy.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/click-import.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/configuration-menu-design-import.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/delete.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/deploy-app.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/deploy-success.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/deploy.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/design-auto-save.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/design-cronjob.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/navigate-kanvas.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/save-app.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/save.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/scale.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/select-cronjob.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/tool-bar.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/toolbar-cronjob.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/exploring-kubernetes-cronjobs}/images/view.png (100%) rename content/en/kanvas/tutorials/kubernetes/{exploring-kubernetes-cronjobs.md => exploring-kubernetes-cronjobs/index.md} (80%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_00-13.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_00-18.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_00-42.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_00-56.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_00-57.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_01-00.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_01-19.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_01-25.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_01-27.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_01-29.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_18-03.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_18-19.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_18-25.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-16_18-26.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-configmaps-secrets}/images/kubernetes-configmaps-secrets/2024-04-17_20-01.png (100%) rename content/en/kanvas/tutorials/kubernetes/{kubernetes-configmaps-secrets.md => kubernetes-configmaps-secrets/index.md} (79%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_16-59.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_17-03.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_17-16.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_17-20.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_17-51.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_17-55.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-00.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-03.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-08.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-09.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-21.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-23.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-26.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-27.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_18-32.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_22-20.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-27_22-22.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-28_15-03.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-deployments}/images/kubernetes-deployments/2025-02-28_15-10.png (100%) rename content/en/kanvas/tutorials/kubernetes/{kubernetes-deployments.md => kubernetes-deployments/index.md} (78%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-22_18-20.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-22_18-32.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-22_18-35.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-23_11-54.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-23_11-54_1.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-23_11-57.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-23_19-52.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-23_19-54.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-23_19-56.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-25_17-38.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-25_18-18.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-25_18-22.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-25_18-25.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-05.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-10.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-11.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-33.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-35.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-37.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-45.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-48.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-28_11-53.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/kubernetes-pods}/images/kubernetes-pods/2024-02-29_20-37.png (100%) rename content/en/kanvas/tutorials/kubernetes/{kubernetes-pods.md => kubernetes-pods/index.md} (81%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp1.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp10.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp11.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp12.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp13.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp14.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp15.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp16.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp17.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp18.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp19.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp2.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp20.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp21.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp22.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp23.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp3.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp4.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp5.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp6.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp7.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp8.png (100%) rename content/en/kanvas/tutorials/{ => kubernetes/wordpress-mysql-persistentvolume}/images/wordpress-mysql-persistentvolume/wp9.png (100%) rename content/en/kanvas/tutorials/kubernetes/{wordpress-mysql-persistentvolume.md => wordpress-mysql-persistentvolume/index.md} (80%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/add-custom-html.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/add-embedded-html.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/copy-js.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/copy-script.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/embedded-design-preview.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/embeddesign-HTML.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/expand-designs-kanvas.png (100%) rename content/en/kanvas/tutorials/{ => wordpress/embedding-meshery-design-in-wordpress}/images/embedding-design-in-wordpress/quickaction-exportdesign.png (100%) rename content/en/kanvas/tutorials/wordpress/{embedding-meshery-design-in-wordpress.md => embedding-meshery-design-in-wordpress/index.md} (73%) create mode 100644 layouts/partials/breadcrumb.html create mode 100644 layouts/partials/navbar-version-selector.html create mode 100644 layouts/shortcodes/static.html diff --git a/.github/workflows/build-and-preview-docs.yml b/.github/workflows/build-and-preview-docs.yml index 3ea042c285d..1f64d80de2a 100644 --- a/.github/workflows/build-and-preview-docs.yml +++ b/.github/workflows/build-and-preview-docs.yml @@ -71,6 +71,7 @@ jobs: - name: Build PR preview if: github.event.action != 'closed' env: + BASE_URL: /${{ github.event.repository.name }}/pr-preview/pr-${{ github.event.pull_request.number }}/ HUGO_PREVIEW: 'true' run: | npm run build:preview diff --git a/Makefile b/Makefile index 1b3f5fdd2e3..05a333703ef 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,9 @@ site: check-go build: hugo +docs-build-production: + npm run build:production + ## Empty build cache and run docs.layer5.io on your local machine. clean: hugo --cleanDestinationDir @@ -45,4 +48,4 @@ docker: ## Format code using Prettier format: - npm run format \ No newline at end of file + npm run format diff --git a/assets/scss/_fonts_project.scss b/assets/scss/_fonts_project.scss index 8dca4895683..4ac9d920dee 100644 --- a/assets/scss/_fonts_project.scss +++ b/assets/scss/_fonts_project.scss @@ -1,27 +1,27 @@ @font-face { font-family: "Qanelas Soft Black"; - src: url('/fonts/qanelas-soft/QanelasSoftBlack.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftBlack.otf") format('opentype'); font-weight: normal; font-display: swap; } @font-face { font-family: "Qanelas Soft Black Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftBlackItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftBlackItalic.otf") format('opentype'); font-style: italic; font-display: swap; } @font-face { font-family: "Qanelas Soft Heavy"; - src: url('/fonts/qanelas-soft/QanelasSoftHeavy.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftHeavy.otf") format('opentype'); font-weight: 900; font-display: swap; } @font-face { font-family: "Qanelas Soft Heavy Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftHeavyItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftHeavyItalic.otf") format('opentype'); font-weight: 900; font-style: italic; font-display: swap; @@ -29,14 +29,14 @@ @font-face { font-family: "Qanelas Soft ExtraBold"; - src: url('/fonts/qanelas-soft/QanelasSoftExtraBold.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftExtraBold.otf") format('opentype'); font-weight: 800; font-display: swap; } @font-face { font-family: "Qanelas Soft ExtraBold Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftExtraBoldItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftExtraBoldItalic.otf") format('opentype'); font-weight: 800; font-style: italic; font-display: swap; @@ -44,14 +44,14 @@ @font-face { font-family: "Qanelas Soft Bold"; - src: url('/fonts/qanelas-soft/QanelasSoftBold.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftBold.otf") format('opentype'); font-weight: bold; font-display: swap; } @font-face { font-family: "Qanelas Soft Bold Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftBoldItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftBoldItalic.otf") format('opentype'); font-weight: bold; font-style: italic; font-display: swap; @@ -59,14 +59,14 @@ @font-face { font-family: "Qanelas Soft"; - src: url('/fonts/qanelas-soft/QanelasSoftSemiBold.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftSemiBold.otf") format('opentype'); font-weight: 600; font-display: swap; } @font-face { font-family: "Qanelas Soft SemiBold Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftSemiBoldItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftSemiBoldItalic.otf") format('opentype'); font-weight: 600; font-style: italic; font-display: swap; @@ -74,14 +74,14 @@ @font-face { font-family: "Qanelas Soft Medium"; - src: url('/fonts/qanelas-soft/QanelasSoftMedium.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftMedium.otf") format('opentype'); font-weight: 500; font-display: swap; } @font-face { font-family: "Qanelas Soft Medium Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftMediumItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftMediumItalic.otf") format('opentype'); font-weight: 500; font-style: italic; font-display: swap; @@ -89,14 +89,14 @@ @font-face { font-family: "Qanelas Soft"; - src: url('/fonts/qanelas-soft/QanelasSoftRegular.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftRegular.otf") format('opentype'); font-weight: 400; font-display: swap; } @font-face { font-family: "Qanelas Soft Regular Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftRegularItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftRegularItalic.otf") format('opentype'); font-weight: 400; font-style: italic; font-display: swap; @@ -104,14 +104,14 @@ @font-face { font-family: "Qanelas Soft Light"; - src: url('/fonts/qanelas-soft/QanelasSoftLight.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftLight.otf") format('opentype'); font-weight: 300; font-display: swap; } @font-face { font-family: "Qanelas Soft Light Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftLightItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftLightItalic.otf") format('opentype'); font-weight: 300; font-style: italic; font-display: swap; @@ -119,14 +119,14 @@ @font-face { font-family: "Qanelas Soft UltraLight"; - src: url('/fonts/qanelas-soft/QanelasSoftUltraLight.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftUltraLight.otf") format('opentype'); font-weight: 200; font-display: swap; } @font-face { font-family: "Qanelas Soft UltraLight Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftUltraLightItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftUltraLightItalic.otf") format('opentype'); font-weight: 200; font-style: italic; font-display: swap; @@ -134,14 +134,14 @@ @font-face { font-family: "Qanelas Soft Thin"; - src: url('/fonts/qanelas-soft/QanelasSoftThin.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftThin.otf") format('opentype'); font-weight: 100; font-display: swap; } @font-face { font-family: "Qanelas Soft Thin Italic"; - src: url('/fonts/qanelas-soft/QanelasSoftThinItalic.otf') format('opentype'); + src: url("../fonts/qanelas-soft/QanelasSoftThinItalic.otf") format('opentype'); font-weight: 100; font-style: italic; font-display: swap; diff --git a/assets/scss/_landing_project.scss b/assets/scss/_landing_project.scss index 10810fd56bf..2dd5652a296 100644 --- a/assets/scss/_landing_project.scss +++ b/assets/scss/_landing_project.scss @@ -81,10 +81,10 @@ } .playground-section { &.playground-logo { - background-image: url("/images/logos/black-semi-opaque.svg"), url("/images/logos/meshery-light-icon.svg"); + background-image: url("../images/logos/black-semi-opaque.svg"), url("../images/logos/meshery-light-icon.svg"); } &.video-play-logo { - background-image: url("/images/logos/black-semi-opaque.svg"), url("/images/video-play.svg"); + background-image: url("../images/logos/black-semi-opaque.svg"), url("../images/video-play.svg"); } &.playground-logo, &.video-play-logo { background-repeat: no-repeat; @@ -102,13 +102,13 @@ .catalog-section { &.catalog-logo { - background-image: url("/images/logos/black-semi-opaque.svg"), url("/images/logos/catalog.svg"); + background-image: url("../images/logos/black-semi-opaque.svg"), url("../images/logos/catalog.svg"); } &.academy-logo{ - background-image: url("/images/logos/black-semi-opaque.svg"), url("/images/logos/academy.svg"); + background-image: url("../images/logos/black-semi-opaque.svg"), url("../images/logos/academy.svg"); } &.recognition-program-logo{ - background-image: url("/images/logos/black-semi-opaque.svg"), url("/images/logos/recognition-program.png"); + background-image: url("../images/logos/black-semi-opaque.svg"), url("../images/logos/recognition-program.png"); } &.catalog-logo, &.academy-logo , &.recognition-program-logo { background-repeat: no-repeat; diff --git a/content/en/_index.md b/content/en/_index.md index cf1084b862e..bff01b6339e 100644 --- a/content/en/_index.md +++ b/content/en/_index.md @@ -14,27 +14,31 @@ description: >

Explore tutorials & documentation

- - Layer5 Cloud Docs Logo +}}" aria-label="Cloud Docs" +data-hover='{{< static "images/logos/layer5-light.svg" >}}' data-default='{{< static "images/logos/5-light-no-trim.svg" >}}' +onmouseover="changeImage('layer5', this.dataset.hover)" onmouseout="restoreImage('layer5', this.dataset.default)"> + Layer5 Cloud Docs Logo Cloud Docs - - Layer5 Kanvas Docs Logo +}}" aria-label="Kanvas Docs" +data-hover='{{< static "images/logos/kanvas-light.svg" >}}' data-default='{{< static "images/logos/kanvas-icon-color.svg" >}}' +onmouseover="changeImage('Kanvas', this.dataset.hover)" onmouseout="restoreImage('Kanvas', this.dataset.default)"> + Layer5 Kanvas Docs Logo Kanvas Docs - Meshery Docs Logo +data-hover='{{< static "images/logos/meshery-light.svg" >}}' data-default='{{< static "images/logos/meshery-light-icon.svg" >}}' +onmouseover="changeImage('meshery', this.dataset.hover)" onmouseout="restoreImage('meshery', this.dataset.default)"> + Meshery Docs Logo Meshery Docs - Layer5 Nighthawk Docs Logo +data-hover='{{< static "images/logos/nighthawk-light.svg" >}}' data-default='{{< static "images/logos/nighthawk-logo.svg" >}}' +onmouseover="changeImage('nighthawk', this.dataset.hover)" onmouseout="restoreImage('nighthawk', this.dataset.default)"> + Layer5 Nighthawk Docs Logo Nighthawk Docs @@ -48,7 +52,7 @@ onmouseover="changeImage('meshery', 'images/logos/meshery-light.svg')" onmouseou @@ -223,4 +227,4 @@ function restoreImage(imgId, originalSrc) { animate(); } - \ No newline at end of file + diff --git a/content/en/charts/_index.md b/content/en/charts/_index.md index 3fb1a38bf77..86f95b75a50 100644 --- a/content/en/charts/_index.md +++ b/content/en/charts/_index.md @@ -12,19 +12,19 @@ cascade: {{< alert type="info" title="Repository Only">}} This page only contains a brief synopsis of the Helm repository. -See the [Self-Hosted section](/cloud/guides/self-hosted/) of the Layer5 Cloud documentation for deployment prerequisites, considerations, and instructions. +See the [Self-Hosted section]({{< ref "cloud/guides/self-hosted/_index.md" >}}) of the Layer5 Cloud documentation for deployment prerequisites, considerations, and instructions. {{< /alert >}} ## Repository Contents -Contained in the Layer5 Helm repository is the [Meshery Remote Provider](https://docs.meshery.io/extensibility/providers) charts (and it's subcharts) for Layer5 Cloud. See the repository's full index of Layer5 Helm charts. +Contained in the Layer5 Helm repository is the [Meshery Remote Provider](https://docs.meshery.io/extensibility/providers) charts (and it's subcharts) for Layer5 Cloud. See the repository's [full index]({{< static "charts/index.yaml" >}}) of Layer5 Helm charts. ## Chart Source

The source for this chart is located in the layer5io/meshery-cloud repository under install/kubernetes/.

{{< alert type="info" title="Complete Deployment Instructions">}} -Layer5 Cloud's Helm chart supports a number of [configuration options]({{}}) +Layer5 Cloud's Helm chart supports a number of [configuration options]({{}}) -See the [Self-Hosted section](/cloud/guides/self-hosted/) of the Layer5 Cloud documentation for deployment prerequisites, considerations, and instructions. +See the [Self-Hosted section]({{< ref "cloud/guides/self-hosted/_index.md" >}}) of the Layer5 Cloud documentation for deployment prerequisites, considerations, and instructions. {{< /alert >}} diff --git a/content/en/cloud/_index.md b/content/en/cloud/_index.md index 4003789717e..5ed03f7db28 100755 --- a/content/en/cloud/_index.md +++ b/content/en/cloud/_index.md @@ -58,10 +58,10 @@ cascade:
- +}}">
- kanvas logo + kanvas logo
Kanvas delivers a collaborative experience similar to how Google Workplace transforms the digital work environment and how Figma democratizes UX design tooling. Kanvas simplifies the complexity of Kubernetes and multi-cloud infrastructure management accessible to all. Kanvas provides a visual, multi-player experience that allows you to create, configure, deploy, and manage modern infrastructure with confidence. @@ -76,7 +76,7 @@ cascade: Layer5 Cloud is the centralized management console and identity provider for the Layer5 ecosystem — specifically for **Kanvas** and **Meshery** deployments. It provides an extensible, highly flexible authorization framework that enables organizations to govern complex, multi-cloud infrastructure with confidence. Think of it as the command center where your teams, workspaces, and cloud-native assets come together under a single, unified platform. -Layer5 Cloud is available both as a fully managed service and as a [self-hosted](/cloud/guides/self-hosted/) deployment, giving organizations the flexibility to meet their own security and compliance requirements. +Layer5 Cloud is available both as a fully managed service and as a [self-hosted]({{< ref "cloud/guides/self-hosted/_index.md" >}}) deployment, giving organizations the flexibility to meet their own security and compliance requirements. ## Why use Layer5 Cloud? 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 ea42b0632a4..91bdf56d191 100644 --- a/content/en/cloud/academy/creating-content/building-certifications/index.md +++ b/content/en/cloud/academy/creating-content/building-certifications/index.md @@ -128,7 +128,7 @@ A certification is primarily composed of exams. However, you can also include st {{< alert type="info" title="How to Create and Configure Exams" >}} Every "Exam" file within a certification follows the unified Academy assessment standard. -For detailed instructions on how to write an exam file, define various question types, set scoring and passing percentages, and use advanced options, please refer to our comprehensive [Integrating Assessments in the Academy](../integrating-assessments-in-the-academy/) guide. +For detailed instructions on how to write an exam file, define various question types, set scoring and passing percentages, and use advanced options, please refer to our comprehensive [Integrating Assessments in the Academy]({{< ref "cloud/academy/creating-content/integrating-assessments-in-the-academy.md" >}}) guide. {{< /alert >}} ### 4. Managing Question Pools and Test Attempts diff --git a/content/en/cloud/academy/creating-content/extending-the-academy/index.md b/content/en/cloud/academy/creating-content/extending-the-academy/index.md index dac7aff95fd..478c4530ab1 100644 --- a/content/en/cloud/academy/creating-content/extending-the-academy/index.md +++ b/content/en/cloud/academy/creating-content/extending-the-academy/index.md @@ -49,7 +49,7 @@ For example, a **Learning Path** named **"Mastering Kubernetes"** might contain: * **Module 2: "Networking Principles"**, containing a **Page** that covers "Services and Ingress" and a **Tests** on networking concepts. {{< alert type="warning" title="Content Isolation" >}} -To ensure security and isolation, all of your content files must be placed within a directory named for your organization UUID. You'll learn the specifics of how to do this in our [hands-on tutorial](/cloud/academy/creating-your-learning-path/). +To ensure security and isolation, all of your content files must be placed within a directory named for your organization UUID. You'll learn the specifics of how to do this in our [hands-on tutorial]({{< ref "cloud/academy/creating-content/creating-your-learning-path/index.md" >}}). {{< /alert >}} ### Advanced Content Features @@ -172,7 +172,7 @@ The Layer5 Academy platform supports all Hugo shortcode features. For more advan ### Branded Email Communications -When using the Academy with [white-labeling](/cloud/guides/self-hosted/white-labeling) enabled, all system-generated emails (badge awards, certificate awards, challenge registrations) automatically reflect your organization's branding. +When using the Academy with [white-labeling]({{< ref "cloud/guides/self-hosted/white-labeling/_index.md" >}}) enabled, all system-generated emails (badge awards, certificate awards, challenge registrations) automatically reflect your organization's branding. Below is an example email template showing how badge award notifications appear when white-labeling is enabled. The parts enclosed in `{{}}` are automatically replaced with your organization's specific information: diff --git a/content/en/cloud/academy/creating-content/instructor-console-guide/index.md b/content/en/cloud/academy/creating-content/instructor-console-guide/index.md index 87689faf56e..86c5b9eebc9 100644 --- a/content/en/cloud/academy/creating-content/instructor-console-guide/index.md +++ b/content/en/cloud/academy/creating-content/instructor-console-guide/index.md @@ -37,12 +37,12 @@ This tool walks you through three quick steps to create your content's boilerpla 2. **Content Details**: Next, you'll refine additional properties for the content. -> Need help understanding these properties? [Learn more](/cloud/academy/creating-content/creating-your-learning-path/#2-structure-your-learning-path). +> Need help understanding these properties? [Learn more]({{< ref "cloud/academy/creating-content/creating-your-learning-path/index.md#2-structure-your-learning-path" >}}). 3. **Copy Template**: Finally, the Creation Tool presents you with a **"Generated Front Matter & Setup Guide"**. You'll copy this YAML configuration and place it at the top of the corresponding `_index.md` file in your content repository. {{< alert type="info" title="Console Creation Tool vs. Full Guides" >}} -Think of the console's creation tool as a 'quick start' generator. It generates the necessary configuration boilerplate, but the detailed work of writing, structuring files, and publishing your content is done in your Git repository. For that, you'll need to follow our [comprehensive guides](/cloud/academy/creating-content/). +Think of the console's creation tool as a 'quick start' generator. It generates the necessary configuration boilerplate, but the detailed work of writing, structuring files, and publishing your content is done in your Git repository. For that, you'll need to follow our [comprehensive guides]({{< ref "cloud/academy/creating-content/_index.md" >}}). {{< /alert >}} ## Understanding the Dashboard @@ -85,7 +85,7 @@ This widget provides a quick inventory of your academy's content: {{< alert type="info" title="Content Versioning and Release Process" >}} If you've recently published new content but don't see the version number updated here, it is likely due to the platform's two-stage release process. Your updates become fully live only after both your content repository's GitHub Release is created and the subsequent Layer5 Cloud release is deployed. -For a complete walkthrough of this workflow, see the [Publishing Your Content Guide](/cloud/academy/creating-content/creating-your-learning-path/#5-publishing-your-learning-path). +For a complete walkthrough of this workflow, see the [Publishing Your Content Guide]({{< ref "cloud/academy/creating-content/creating-your-learning-path/index.md#5-publishing-your-learning-path" >}}). {{< /alert >}} ### Learner Registration diff --git a/content/en/cloud/academy/creating-content/integrating-assessments-in-the-academy/index.md b/content/en/cloud/academy/creating-content/integrating-assessments-in-the-academy.md similarity index 100% rename from content/en/cloud/academy/creating-content/integrating-assessments-in-the-academy/index.md rename to content/en/cloud/academy/creating-content/integrating-assessments-in-the-academy.md diff --git a/content/en/cloud/academy/platform-development/index.md b/content/en/cloud/academy/platform-development.md similarity index 98% rename from content/en/cloud/academy/platform-development/index.md rename to content/en/cloud/academy/platform-development.md index cf4bcf0eb88..e6ecc34aecc 100644 --- a/content/en/cloud/academy/platform-development/index.md +++ b/content/en/cloud/academy/platform-development.md @@ -33,7 +33,7 @@ Content repositories automatically import this theme as a Go Module. As a conten This is the "starter kit" for anyone new to creating Academy content. It provides a pre-configured site that new organizations can fork to get started quickly. -> [Learn How](../creating-your-learning-path/) to create your own learning path +> [Learn How]({{< ref "cloud/academy/creating-content/creating-your-learning-path/index.md" >}}) to create your own learning path This content repository doesn't build the final website itself. Instead, it uses an automated workflow to act as a "gatekeeper" for new content. When you create a new GitHub Release, it triggers the following process: diff --git a/content/en/cloud/concepts/_index.md b/content/en/cloud/concepts/_index.md index 3767458d1b0..9f53c0801fe 100644 --- a/content/en/cloud/concepts/_index.md +++ b/content/en/cloud/concepts/_index.md @@ -38,4 +38,4 @@ To get the most out of Layer5 Cloud, it is important to understand how these com | **Design to Catalog** | Many-to-One | Designs can be published to a catalog for broader consumption and version control. | ### Next Steps -For a deeper dive into the technical implementation of these concepts, please refer to our [Architecture Documentation](/docs/architecture). +For a deeper dive into the technical implementation of these concepts, please refer to our [Architecture Documentation](https://docs.meshery.io/architecture). diff --git a/content/en/cloud/concepts/catalog/_index.md b/content/en/cloud/concepts/catalog/_index.md index 6d8a8863b1b..3ef1f3d7236 100644 --- a/content/en/cloud/concepts/catalog/_index.md +++ b/content/en/cloud/concepts/catalog/_index.md @@ -14,13 +14,13 @@ aliases: Public Catalog: https://cloud.layer5.io/catalog {{%/pageinfo%}} - + -Delivering-catalog-content +Delivering-catalog-content The Cloud Catalog is a web-based, public catalog to facilitate easy discovery of existing designs. Designs that are published into the catalog can be, but are not always curated for known best practices and patterns. Content is published at [cloud.layer5.io/catalog](https://cloud.layer5.io/catalog), and one-click import of catalog content into Meshery Server is seamlessly integrated. -![Flow for sharing design](./images/Slide51.svg) +![Flow for sharing design](../../images/Slide51.svg) ### Content Visibility diff --git a/content/en/cloud/concepts/catalog/images/card-view.png b/content/en/cloud/concepts/catalog/exploring-the-catalog/images/card-view.png similarity index 100% rename from content/en/cloud/concepts/catalog/images/card-view.png rename to content/en/cloud/concepts/catalog/exploring-the-catalog/images/card-view.png diff --git a/content/en/cloud/concepts/catalog/images/catalog-view.gif b/content/en/cloud/concepts/catalog/exploring-the-catalog/images/catalog-view.gif similarity index 100% rename from content/en/cloud/concepts/catalog/images/catalog-view.gif rename to content/en/cloud/concepts/catalog/exploring-the-catalog/images/catalog-view.gif diff --git a/content/en/cloud/concepts/catalog/images/design-edit.png b/content/en/cloud/concepts/catalog/exploring-the-catalog/images/design-edit.png similarity index 100% rename from content/en/cloud/concepts/catalog/images/design-edit.png rename to content/en/cloud/concepts/catalog/exploring-the-catalog/images/design-edit.png diff --git a/content/en/cloud/concepts/catalog/images/design-view.gif b/content/en/cloud/concepts/catalog/exploring-the-catalog/images/design-view.gif similarity index 100% rename from content/en/cloud/concepts/catalog/images/design-view.gif rename to content/en/cloud/concepts/catalog/exploring-the-catalog/images/design-view.gif diff --git a/content/en/cloud/concepts/catalog/exploring-the-catalog.md b/content/en/cloud/concepts/catalog/exploring-the-catalog/index.md similarity index 91% rename from content/en/cloud/concepts/catalog/exploring-the-catalog.md rename to content/en/cloud/concepts/catalog/exploring-the-catalog/index.md index 36d6a02edd6..a6eb1e8a17c 100644 --- a/content/en/cloud/concepts/catalog/exploring-the-catalog.md +++ b/content/en/cloud/concepts/catalog/exploring-the-catalog/index.md @@ -11,7 +11,7 @@ aliases: The [Cloud Catalog](https://cloud.layer5.io/catalog) is the central hub for well-architected cloud and cloud native patterns and best practices templates. Here, you can discover and share designs with the wider community. -![Catalog main page view](/cloud/concepts/catalog/images/catalog-view.gif) +![Catalog main page view](images/catalog-view.gif) ## Viewing Catalog Items @@ -19,13 +19,13 @@ Meshery Catalog displays all published designs in an organized, searchable forma ### Top Performers -At the top of the page, you can find the **Top Performers** section. This provides a snapshot of the **Leaderboard**, highlighting the most popular designs based on various [metrics](/cloud/concepts/catalog/metrics/). +At the top of the page, you can find the **Top Performers** section. This provides a snapshot of the **Leaderboard**, highlighting the most popular designs based on various [metrics]({{< ref "cloud/concepts/catalog/metrics/index.md" >}}). - To see the complete rankings, click the **Open Leaderboard** button. - You can toggle the visibility of this section using the **Hide Performers** / **Show Performers** button. {{< alert type="info" title="Learn More About Leaderboard" >}} -To learn more about Leaderboard, see the [Leaderboard documentation](/cloud/concepts/catalog/leaderboard/). +To learn more about Leaderboard, see the [Leaderboard documentation]({{< ref "cloud/concepts/catalog/leaderboard/index.md" >}}). {{< /alert >}} ### Grid View @@ -39,10 +39,10 @@ Each card provides key information at a glance: - **Metrics:** A row of icons at the bottom displays key usage statistics (Opens, Downloads, Deploys, Clones, Shares) - **Detailed Information (on hover):** When you hover over a card, it flips to reveal more details, including the author, design version, technologies used, and the last updated time -Card View +Card View {{< alert type="info" title="Understanding Design Metrics" >}} -To better understand what these Metrics represent, you can learn more about [design metrics](/cloud/concepts/catalog/metrics/). +To better understand what these Metrics represent, you can learn more about [design metrics]({{< ref "cloud/concepts/catalog/metrics/index.md" >}}). {{< /alert >}} ### Table View @@ -51,7 +51,7 @@ Table view provides a dense, list-based format that's ideal for sorting and comp To customize the information displayed in this view, click the **View Columns icon** and select the attributes you want to see, such as Author, Created At, or Downloads. -![Catalog table view](/cloud/concepts/catalog/images/design-view.gif) +![Catalog table view](images/design-view.gif) ## Filtering and Sorting Catalog Items @@ -84,7 +84,7 @@ These filters correspond to the metadata authors provide when they publish desig When you click on any design, you'll see its detail page. This page provides a complete overview of the design's purpose, technical details, and how you can use it. -![Catalog modal](/cloud/concepts/catalog/images/design_model.png) +![Catalog modal](../images/design_model.png) ### Key Information @@ -117,7 +117,7 @@ When you clone a design: The **Download** button allows you to save the design as a `Design (YAML)` file. This is useful for offline backups or sharing the file directly. -> For more advanced use cases, Meshery also supports exporting designs into other formats. To learn more, see the guide on [Exporting Designs](/kanvas/designer/export-designs/). +> For more advanced use cases, Meshery also supports exporting designs into other formats. To learn more, see the guide on [Exporting Designs]({{< ref "kanvas/designer/export-designs/index.md" >}}). {{< alert type="warning" title="Metadata Not Included in Download" >}} Design downloads include only the core YAML definition, excluding associated catalog metadata such as descriptions, technology, or class. @@ -127,7 +127,7 @@ Design downloads include only the core YAML definition, excluding associated cat After you've published a design, you might need to update its metadata or description. Clicking the **Edit** button opens a dialog where you can make your changes. -![Design edit modal](/cloud/concepts/catalog/images/design-edit.png) +![Design edit modal](images/design-edit.png) You can modify the following fields: @@ -148,5 +148,5 @@ Some properties of a published design are immutable and cannot be changed: If you no longer want a design to be published in the catalog, you can use the **Unpublish** button. This action will remove the design from Meshery Catalog but does **not delete** it. The design will remain as a private design in your account. {{< alert type="info" title="Permissions Required" >}} -Editing/Unpublish published designs requires specific user roles and permissions. Learn more: [Default Permissions documentation](/cloud/reference/default-permissions/). +Editing/Unpublish published designs requires specific user roles and permissions. Learn more: [Default Permissions documentation]({{< ref "cloud/reference/default-permissions.md" >}}). {{< /alert >}} diff --git a/content/en/cloud/concepts/catalog/images/leaderboard-action.png b/content/en/cloud/concepts/catalog/leaderboard/images/leaderboard-action.png similarity index 100% rename from content/en/cloud/concepts/catalog/images/leaderboard-action.png rename to content/en/cloud/concepts/catalog/leaderboard/images/leaderboard-action.png diff --git a/content/en/cloud/concepts/catalog/images/leaderboard-page.gif b/content/en/cloud/concepts/catalog/leaderboard/images/leaderboard-page.gif similarity index 100% rename from content/en/cloud/concepts/catalog/images/leaderboard-page.gif rename to content/en/cloud/concepts/catalog/leaderboard/images/leaderboard-page.gif diff --git a/content/en/cloud/concepts/catalog/images/leaderboard_button.png b/content/en/cloud/concepts/catalog/leaderboard/images/leaderboard_button.png similarity index 100% rename from content/en/cloud/concepts/catalog/images/leaderboard_button.png rename to content/en/cloud/concepts/catalog/leaderboard/images/leaderboard_button.png diff --git a/content/en/cloud/concepts/catalog/leaderboard.md b/content/en/cloud/concepts/catalog/leaderboard/index.md similarity index 82% rename from content/en/cloud/concepts/catalog/leaderboard.md rename to content/en/cloud/concepts/catalog/leaderboard/index.md index 1c216d61c4a..a183c0b3968 100644 --- a/content/en/cloud/concepts/catalog/leaderboard.md +++ b/content/en/cloud/concepts/catalog/leaderboard/index.md @@ -12,10 +12,10 @@ aliases: Leaderboard provides a clear and engaging way to view and compare the performance of different Designs, highlighting the most popular and actively used ones within the Cloud. -![Leaderboard page overview](/cloud/concepts/catalog/images/leaderboard-page.gif) +![Leaderboard page overview](images/leaderboard-page.gif) {{< alert type="info" title="Understanding Metrics" >}} -Metrics are quantifiable measures used to track and assess the status, progress, and performance of various activities and user interactions with Designs. Learn more about [Metrics](/cloud/concepts/catalog/metrics/) +Metrics are quantifiable measures used to track and assess the status, progress, and performance of various activities and user interactions with Designs. Learn more about [Metrics]({{< ref "cloud/concepts/catalog/metrics/index.md" >}}) {{< /alert >}} ### How to Access the Leaderboard @@ -25,7 +25,7 @@ You can reach the Leaderboard page in two ways: 1. **Global Navigation Bar:** Click the Leaderboard icon in the main navigation bar for quick access. 2. **From the Catalog Page:** While Browse the Catalog, you can click the 'Open Leaderboard' button in the **Top Performers** section -![Leaderboard Button](/cloud/concepts/catalog/images/leaderboard_button.png) +![Leaderboard Button](images/leaderboard_button.png) ### Using the Leaderboard Page @@ -36,4 +36,4 @@ The Leaderboard page offers several ways to explore and interact with: - **Customize Your View:** Click the **View Columns** icon to show or hide specific metric columns. - **Take Actions:** Click the **Actions** icon to download, share, or perform other actions. -![Leaderboard action menu](/cloud/concepts/catalog/images/leaderboard-action.png) +![Leaderboard action menu](images/leaderboard-action.png) diff --git a/content/en/cloud/concepts/catalog/images/cards.png b/content/en/cloud/concepts/catalog/metrics/images/cards.png similarity index 100% rename from content/en/cloud/concepts/catalog/images/cards.png rename to content/en/cloud/concepts/catalog/metrics/images/cards.png diff --git a/content/en/cloud/concepts/catalog/metrics.md b/content/en/cloud/concepts/catalog/metrics/index.md similarity index 89% rename from content/en/cloud/concepts/catalog/metrics.md rename to content/en/cloud/concepts/catalog/metrics/index.md index c6cf83d9bd0..405d92afa1a 100644 --- a/content/en/cloud/concepts/catalog/metrics.md +++ b/content/en/cloud/concepts/catalog/metrics/index.md @@ -16,16 +16,16 @@ The design catalog can be accessed from the _Layer5 Cloud_ catalog page at [Laye {{< alert type="info" title="Design Capabilities" >}} -Designs can be imported, exported, versioned, forked, merged, snapshotted, published, shared, embedded, templatized, and more. Learn more about [Designs](/kanvas/getting-started/) +Designs can be imported, exported, versioned, forked, merged, snapshotted, published, shared, embedded, templatized, and more. Learn more about [Designs]({{< ref "kanvas/getting-started/_index.md" >}}) {{< /alert >}} You can view the metrics of a Design in two ways: 1. Below each Design's catalog card, you can see its metrics. -![Catalog card](/cloud/concepts/catalog/images/cards.png) +![Catalog card](images/cards.png) 2. By clicking on the catalog card, a modal will pop up displaying all the information about the Design, including its metrics. -![Catalog modal](/cloud/concepts/catalog/images/design_model.png) +![Catalog modal](../images/design_model.png) Here’s a detailed explanation of each metric we track: diff --git a/content/en/cloud/concepts/identity-and-security/_index.md b/content/en/cloud/concepts/identity-and-security/_index.md index cf408989bfe..45b1cc480f6 100755 --- a/content/en/cloud/concepts/identity-and-security/_index.md +++ b/content/en/cloud/concepts/identity-and-security/_index.md @@ -55,8 +55,8 @@ Access is granted through Role-Based Access Control (RBAC). Roles are assigned a It is tempting to assume that organization membership alone decides what a user can see and do. It does not. Identity, access, and authorization in Layer5 Cloud are decided by a *combination* of three independent mechanisms that compose on top of the organization: -* **Authentication — the organization's connected identity provider (IdP).** Each organization is connected to an identity provider that establishes *who* a user is. More than one organization can — and commonly does — share the same identity provider. An organization may instead **bring its own** identity provider (BYOC), in which case it authenticates against its own dedicated provider. See [Identity Services](/cloud/guides/self-hosted/planning/identity-services/). -* **Generic authorization — keys → keychains → roles.** Permission [keys](/cloud/concepts/identity-and-security/keys/) roll up into [keychains](/cloud/concepts/identity-and-security/keychains/), which are assigned to [roles](/cloud/concepts/identity-and-security/roles/), which are assigned to users. This decides *what operations* a user may perform — and it is evaluated per organization. The same person can hold different roles, and therefore a different effective set of capabilities, in each organization they belong to. +* **Authentication — the organization's connected identity provider (IdP).** Each organization is connected to an identity provider that establishes *who* a user is. More than one organization can — and commonly does — share the same identity provider. An organization may instead **bring its own** identity provider (BYOC), in which case it authenticates against its own dedicated provider. See [Identity Services]({{< ref "cloud/guides/self-hosted/planning/identity-services/index.md" >}}). +* **Generic authorization — keys → keychains → roles.** Permission [keys]({{< ref "cloud/concepts/identity-and-security/keys.md" >}}) roll up into [keychains]({{< ref "cloud/concepts/identity-and-security/keychains.md" >}}), which are assigned to [roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}), which are assigned to users. This decides *what operations* a user may perform — and it is evaluated per organization. The same person can hold different roles, and therefore a different effective set of capabilities, in each organization they belong to. * **Granular access — resource-access mappings.** A specific resource (for example, a single design) can be shared with an individual user. These mappings grant access to that one resource and **deliberately cross organizational boundaries**: a user does not need to be a member of an organization to open a resource in it when a mapping grants that access. This is by design — it is what makes cross-organization collaboration possible. The practical consequence is that the same human can be a member of several organizations and have a *different* set of capabilities in each, while also being able to reach individual shared resources in organizations they do not belong to at all. @@ -73,7 +73,7 @@ Because identity and authorization are layered, "where is the boundary?" has two > **Same identity provider source means the same security boundary.** -Organizations that share an identity provider — typical for the canonical host and for custom subdomains that use the shared, central provider — sit within the *same* authentication boundary. An organization that brings its own identity provider (BYOC) is a *distinct* authentication boundary, regardless of how its host is named. The DNS shape of the host is not the boundary; the identity provider behind it is. See [Identity Services](/cloud/guides/self-hosted/planning/identity-services/) and [Social sign-in on a custom domain](/cloud/guides/self-hosted/white-labeling/#social-sign-in-on-a-custom-domain) for how this plays out across host types. +Organizations that share an identity provider — typical for the canonical host and for custom subdomains that use the shared, central provider — sit within the *same* authentication boundary. An organization that brings its own identity provider (BYOC) is a *distinct* authentication boundary, regardless of how its host is named. The DNS shape of the host is not the boundary; the identity provider behind it is. See [Identity Services]({{< ref "cloud/guides/self-hosted/planning/identity-services/index.md" >}}) and [Social sign-in on a custom domain]({{< ref "cloud/guides/self-hosted/white-labeling/_index.md#social-sign-in-on-a-custom-domain" >}}) for how this plays out across host types. ## Key Management and Tokens @@ -96,4 +96,4 @@ Tokens provide temporary, secure access to the platform. ### Need more detail? -Check out the [Roles Reference](/cloud/concepts/identity-and-security/roles/) for a complete matrix of permissions for each role. +Check out the [Roles Reference]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}) for a complete matrix of permissions for each role. diff --git a/content/en/cloud/concepts/identity-and-security/keychains.md b/content/en/cloud/concepts/identity-and-security/keychains.md index d5998790286..fbe71e8bdb0 100644 --- a/content/en/cloud/concepts/identity-and-security/keychains.md +++ b/content/en/cloud/concepts/identity-and-security/keychains.md @@ -9,7 +9,7 @@ aliases: --- -In Layer5 Cloud, a collection of permissions is represented as a keychain. One or more keychains can are grouped together and assigned to a [role](/cloud/concepts/identity-and-security/roles). Later, a role can be assigned to a user. This is the general flow of how keychains are assigned to a user. +In Layer5 Cloud, a collection of permissions is represented as a keychain. One or more keychains can are grouped together and assigned to a [role]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). Later, a role can be assigned to a user. This is the general flow of how keychains are assigned to a user. For instance, consider a system shipped default keychain `Team Management`, which is a collection of eight keys: `View All Teams`, `Add User to Team`, `Invite User to Team`, `Remove User from Team`, `Create Team`, `Delete Team`, `Remove User Role from Team`, and `Assign User Role in a Team`. This implies that you can perform all these operations only if your user account possesses a role to which `Team Management` keychain is assigned in a given organization. @@ -67,9 +67,9 @@ If you don't have permission to view keychains for your selected organization, y 1. Select the organization for which you wish to assign keychains to users. You can do this by selecting the organization from the organization context switcher in the top navigation bar. 2. Navigate to the [Roles](https://cloud.layer5.io/security/roles) page. -3. Choose from the existing set of roles or create a new role to which you want to assign the keychain. For more information, see [Roles](/cloud/concepts/identity-and-security/roles). +3. Choose from the existing set of roles or create a new role to which you want to assign the keychain. For more information, see [Roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). 4. Navigate to [Users](https://cloud.layer5.io/identity/users) page. -5. Select the user to whom you want to assign the role with a new set of permissions. Alternatively, you can invite a new user and assign the role with the new set of permissions separately. For more information, see [Users](/cloud/concepts/identity-and-security/users). +5. Select the user to whom you want to assign the role with a new set of permissions. Alternatively, you can invite a new user and assign the role with the new set of permissions separately. For more information, see [Users]({{< ref "cloud/concepts/identity-and-security/users/_index.md" >}}). {{< alert title="Note" >}} diff --git a/content/en/cloud/concepts/identity-and-security/keys.md b/content/en/cloud/concepts/identity-and-security/keys.md index ea26d890a5d..e50aacf4537 100644 --- a/content/en/cloud/concepts/identity-and-security/keys.md +++ b/content/en/cloud/concepts/identity-and-security/keys.md @@ -9,7 +9,7 @@ aliases: --- -In Layer5 Cloud, permissions are represented as keys, each serving as a unique identifier for a specific permission. One or more keys can be grouped together and assigned to a [keychain](/cloud/concepts/identity-and-security/keychains). Then this keychain can be assigned to a [role](/cloud/concepts/identity-and-security/roles) and that role can be assigned to a user. This is the general flow of how keys are assigned to a user. +In Layer5 Cloud, permissions are represented as keys, each serving as a unique identifier for a specific permission. One or more keys can be grouped together and assigned to a [keychain]({{< ref "cloud/concepts/identity-and-security/keychains.md" >}}). Then this keychain can be assigned to a [role]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}) and that role can be assigned to a user. This is the general flow of how keys are assigned to a user. For instance, consider a system shipped default key `Create Organization`, which corresponds to the permission to create an organization in the Cloud. This implies that to create an organization, you need to have `Create Organization` key assigned to a keychain, which, in turn, is assigned to a role that's associated with your user account for a given organization. @@ -21,7 +21,7 @@ For instance, consider a system shipped default key `Create Organization`, which {{< /alert >}} -Because every key is evaluated in the context of an organization, a user's *effective* set of keys can — and will — differ from one organization to another. The same person holds whatever capabilities their role(s) grant them **within each specific organization**, so being able to perform an action in one organization implies nothing about the same action in another. This is why an organization context is itself an authorization boundary. For how this fits with authentication and cross-organization resource sharing, see [Identity and Security → Security Boundaries](/cloud/concepts/identity-and-security/#security-boundaries). +Because every key is evaluated in the context of an organization, a user's *effective* set of keys can — and will — differ from one organization to another. The same person holds whatever capabilities their role(s) grant them **within each specific organization**, so being able to perform an action in one organization implies nothing about the same action in another. This is why an organization context is itself an authorization boundary. For how this fits with authentication and cross-organization resource sharing, see [Identity and Security → Security Boundaries]({{< ref "cloud/concepts/identity-and-security/_index.md#security-boundaries" >}}). ### Keys Types @@ -32,13 +32,13 @@ Generally, there are four types of keys: 3. **Update** - Update keys permit you to update resources. For instance, `Update Organization` key allows you to update an organization details. 4. **Delete** - Delete keys permit you to delete resources. For instance, `Delete Organization` key allows you to delete an organization. -There are also some special types of keys which don't fall into the standard CRUD (CREATE, READ, UPDATE, DELETE) category. For example, the `Approve Catalog Request` key allows you to approve a catalog request to publish a cloud native design to [Cloud Catalog](/cloud/concepts/catalog) or `Connect Github Account to Workspace` key enables you to connect your GitHub Account to your [workspace](/cloud/concepts/spaces/workspaces) in context of any organization. +There are also some special types of keys which don't fall into the standard CRUD (CREATE, READ, UPDATE, DELETE) category. For example, the `Approve Catalog Request` key allows you to approve a catalog request to publish a cloud native design to [Cloud Catalog]({{< ref "cloud/concepts/catalog/_index.md" >}}) or `Connect Github Account to Workspace` key enables you to connect your GitHub Account to your [workspace]({{< ref "cloud/concepts/spaces/workspaces.md" >}}) in context of any organization. ### Keys Enforcement The primary purpose of key enforcement is to ensure that you can only perform actions for which you have the necessary permissions within the context of your selected/available organization. This is achieved by disabling or hiding the UI elements associated with actions for which you lack the required permissions. This approach not only provides clarity regarding what actions you are authorized to perform but also prevents you from attempting actions that you do not have authorization to execute. -For more information on managing permissions within an organization and use of organization context switcher, see [Organizations](/cloud/concepts/identity-and-security/organizations). +For more information on managing permissions within an organization and use of organization context switcher, see [Organizations]({{< ref "cloud/concepts/identity-and-security/organizations/_index.md" >}}). Each key is enforced at specific UI elements. For instance, the `Create Organization` key is enforced at the **Create Organization** button in the **Organizations** page. This implies that the button is disabled if you don't have the `Create Organization` assigned to a keychain, which, in turn, is assigned to a role that's associated with your user account for a given organization. @@ -59,12 +59,12 @@ If you don't have permission to view keys for your selected organization, you wi 1. Select the organization for which you wish to assign keys to users. You can do this by selecting the organization from the organization context switcher in the top navigation bar. 2. Navigate to [Keychains](https://cloud.layer5.io/security/keychains) page. -3. Choose from the existing set of keychains or create a new keychain to which you want to assign keys. For more information, see [Keychains](/cloud/concepts/identity-and-security/keychains). +3. Choose from the existing set of keychains or create a new keychain to which you want to assign keys. For more information, see [Keychains]({{< ref "cloud/concepts/identity-and-security/keychains.md" >}}). 4. Choose one more of your desired keys from the list of available keys. 5. Navigate to the [Roles](https://cloud.layer5.io/security/roles) page. -6. Choose from the existing set of roles or create a new role to which you want to assign the keychain. For more information, see [Roles](/cloud/concepts/identity-and-security/roles). +6. Choose from the existing set of roles or create a new role to which you want to assign the keychain. For more information, see [Roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). 7. Navigate to [Users](https://cloud.layer5.io/identity/users) page. -8. Select the user to whom you want to assign the role with a new set of permissions. Alternatively, you can invite a new user and assign the role with the new set of permissions separately. For more information, see [Users](/cloud/concepts/identity-and-security/users). +8. Select the user to whom you want to assign the role with a new set of permissions. Alternatively, you can invite a new user and assign the role with the new set of permissions separately. For more information, see [Users]({{< ref "cloud/concepts/identity-and-security/users/_index.md" >}}). {{< alert title="Note" >}} diff --git a/content/en/cloud/concepts/identity-and-security/organizations/_index.md b/content/en/cloud/concepts/identity-and-security/organizations/_index.md index 8c5b2f28dfa..116757c2273 100755 --- a/content/en/cloud/concepts/identity-and-security/organizations/_index.md +++ b/content/en/cloud/concepts/identity-and-security/organizations/_index.md @@ -14,11 +14,11 @@ Organizations are the basic unit of multi-tenancy — and the core security boun Outside of grouping users together, teams offer control access to workspaces and to workspace resources such as environments and managed and unmanaged connections -Organizational units +Organizational units ## Example: The Orbital Labs Ecosystem -The following organizations illustrate how multi-tenancy works across provider, startup, and enterprise tiers. Follow along in the rest of the docs using [Five and the cast at Orbital Labs](/cloud/getting-started/meet-five). +The following organizations illustrate how multi-tenancy works across provider, startup, and enterprise tiers. Follow along in the rest of the docs using [Five and the cast at Orbital Labs]({{< ref "cloud/getting-started/meet-five/_index.md" >}}). {{< cardpane >}} {{% card header="**Constellation Cloud** — Provider" %}} @@ -57,9 +57,9 @@ Users of one organization may be granted access to resources (workspaces, design Cross-organization access works through **resource-access mappings** — a grant attached to an individual resource (such as a single design) that names the user it is shared with. These mappings **deliberately cross the organization boundary**: a user does *not* need to be a member of an organization to open a resource that has been shared with them there. For example, when Maya at Orbital Labs shares the `stellar-saas-platform` design with Marcus at Stellar Dynamics, Marcus can open that one design even though he is not a member of Orbital Labs. This is intentional — it is the mechanism that makes cross-org collaboration possible — and it is distinct from organization membership and from the org-scoped roles described below. Sharing a single resource grants access to *that resource only*; it does not make the recipient a member of the organization or grant them any of its other resources. {{< alert type="info" >}} -Identity and authorization are decided by a combination of mechanisms, not by organization membership alone. For how the connected identity provider, org-scoped roles, and resource-access mappings fit together — and what counts as a security boundary — see [Identity and Security → Security Boundaries](/cloud/concepts/identity-and-security/#security-boundaries). +Identity and authorization are decided by a combination of mechanisms, not by organization membership alone. For how the connected identity provider, org-scoped roles, and resource-access mappings fit together — and what counts as a security boundary — see [Identity and Security → Security Boundaries]({{< ref "cloud/concepts/identity-and-security/_index.md#security-boundaries" >}}). {{< /alert >}} {{< alert type="info" >}} -See [Meet Five and the Cast](/cloud/getting-started/meet-five) for the full narrative reference, including team structure and workspace inventory. +See [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) for the full narrative reference, including team structure and workspace inventory. {{< /alert >}} diff --git a/content/en/cloud/concepts/identity-and-security/images/organization_units.svg b/content/en/cloud/concepts/identity-and-security/organizations/images/organization_units.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/organization_units.svg rename to content/en/cloud/concepts/identity-and-security/organizations/images/organization_units.svg diff --git a/content/en/cloud/concepts/identity-and-security/roles/_index.md b/content/en/cloud/concepts/identity-and-security/roles/_index.md index 6fc8cbe1b4a..ee74e9d2b33 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/_index.md +++ b/content/en/cloud/concepts/identity-and-security/roles/_index.md @@ -12,13 +12,13 @@ aliases: Roles map permissions to users. Roles contain any number of keychains, which contain any number of keys (permissions). Assign roles to users to grant permissions. -![roles](/cloud/concepts/identity-and-security/images/roles-overview.svg "image-center-no-shadow") +![roles](images/roles-overview.svg "image-center-no-shadow") ## Provider Admin Role {{< cardpane >}} {{% card header="Provider Admin Role" %}} -![role-provider](/cloud/concepts/identity-and-security/images/role-provider-admin.svg) +![role-provider](images/role-provider-admin.svg) {{% /card %}} {{% card %}} @@ -55,7 +55,7 @@ Roles map permissions to users. Roles contain any number of keychains, which con {{< cardpane >}} {{% card %}} -![organization-administrator and manager](/cloud/concepts/identity-and-security/images/organization-roles.svg) +![organization-administrator and manager](images/organization-roles.svg) {{% /card %}} {{< /cardpane >}} @@ -116,14 +116,14 @@ Organization owners carry the organization administrator role, and may be joined The entitlement of "organization owner" is automatically bestowed to the creator of a organization. The individual user who created a given organization initially is therefore granted certain administrative privileges beyond that of other organization administrators. Specifically, organization owners retain the sole permission to delete the organization. -For more information, see [Organization](/cloud/concepts/identity-and-security/organizations). +For more information, see [Organization]({{< ref "cloud/concepts/identity-and-security/organizations/_index.md" >}}). {{< /alert >}} ## Workspace Roles {{< cardpane >}} {{% card %}} -![workspace-administrator](/cloud/concepts/identity-and-security/images/workspace-roles.svg) +![workspace-administrator](images/workspace-roles.svg) {{% /card %}} {{< /cardpane >}} @@ -166,7 +166,7 @@ The entitlement of "workspace owner" is automatically bestowed to the creator of {{< cardpane >}} {{% card %}} -![team-admins-and-manager](/cloud/concepts/identity-and-security/images/team-roles.svg) +![team-admins-and-manager](images/team-roles.svg) {{% /card %}} {{< /cardpane >}} @@ -215,14 +215,14 @@ Team owners carry the team administrator role, and may be joined in their team a The entitlement of "team owner" is automatically bestowed to the creator of a team. The individual user who created a given team initially is therefore granted certain administrative privileges beyond that of other team administrators. Specifically, team owners retain the sole permission to delete the team. -For more information, see [Teams](/cloud/concepts/identity-and-security/teams). +For more information, see [Teams]({{< ref "cloud/concepts/identity-and-security/teams/_index.md" >}}). {{< /alert >}} ## Example: The Orbital Labs Role Hierarchy -The following illustrates how Provider Admin, Org Admin, and Team Admin roles stack in practice across the Orbital Labs ecosystem. See [Meet Five and the Cast](/cloud/getting-started/meet-five) for the full narrative. +The following illustrates how Provider Admin, Org Admin, and Team Admin roles stack in practice across the Orbital Labs ecosystem. See [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) for the full narrative. -Five means business +Five means business {{< cardpane >}} {{% card header="**Dr. Aiko Sato** — Provider Admin" %}} diff --git a/content/en/cloud/concepts/identity-and-security/images/academy-admin.svg b/content/en/cloud/concepts/identity-and-security/roles/academy-roles/images/academy-admin.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/academy-admin.svg rename to content/en/cloud/concepts/identity-and-security/roles/academy-roles/images/academy-admin.svg diff --git a/content/en/cloud/concepts/identity-and-security/images/learner.svg b/content/en/cloud/concepts/identity-and-security/roles/academy-roles/images/learner.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/learner.svg rename to content/en/cloud/concepts/identity-and-security/roles/academy-roles/images/learner.svg diff --git a/content/en/cloud/concepts/identity-and-security/roles/academy-roles.md b/content/en/cloud/concepts/identity-and-security/roles/academy-roles/index.md similarity index 81% rename from content/en/cloud/concepts/identity-and-security/roles/academy-roles.md rename to content/en/cloud/concepts/identity-and-security/roles/academy-roles/index.md index af1ed9e3ea4..51917879d7f 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/academy-roles.md +++ b/content/en/cloud/concepts/identity-and-security/roles/academy-roles/index.md @@ -12,7 +12,7 @@ aliases: {{< cardpane >}} {{% card header="Academy Administrator" %}} -Academy Administrator Roles +Academy Administrator Roles {{% /card %}} {{< /cardpane >}} @@ -42,15 +42,15 @@ aliases: **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) {{% /card %}} {{< /cardpane >}} {{< cardpane >}} {{% card header="Learner" %}} -Learner = A [User](../roles/user-role.md) who has registered for academy content. -Learner Roles +Learner = A [User]({{< ref "cloud/concepts/identity-and-security/roles/user-role/index.md" >}}) who has registered for academy content. +Learner Roles {{% /card %}} {{< /cardpane >}} @@ -86,7 +86,7 @@ While the maximum number of instances is unlimited, the available seats for Lear **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) **Status as a Learner** diff --git a/content/en/cloud/concepts/identity-and-security/images/organization-roles.svg b/content/en/cloud/concepts/identity-and-security/roles/images/organization-roles.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/organization-roles.svg rename to content/en/cloud/concepts/identity-and-security/roles/images/organization-roles.svg diff --git a/content/en/cloud/concepts/identity-and-security/images/role-provider-admin.svg b/content/en/cloud/concepts/identity-and-security/roles/images/role-provider-admin.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/role-provider-admin.svg rename to content/en/cloud/concepts/identity-and-security/roles/images/role-provider-admin.svg diff --git a/content/en/cloud/concepts/identity-and-security/images/roles-overview.svg b/content/en/cloud/concepts/identity-and-security/roles/images/roles-overview.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/roles-overview.svg rename to content/en/cloud/concepts/identity-and-security/roles/images/roles-overview.svg diff --git a/content/en/cloud/concepts/identity-and-security/images/team-roles.svg b/content/en/cloud/concepts/identity-and-security/roles/images/team-roles.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/team-roles.svg rename to content/en/cloud/concepts/identity-and-security/roles/images/team-roles.svg diff --git a/content/en/cloud/concepts/identity-and-security/images/workspace-roles.svg b/content/en/cloud/concepts/identity-and-security/roles/images/workspace-roles.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/workspace-roles.svg rename to content/en/cloud/concepts/identity-and-security/roles/images/workspace-roles.svg diff --git a/content/en/cloud/concepts/identity-and-security/roles/organization-roles.md b/content/en/cloud/concepts/identity-and-security/roles/organization-roles.md index 13f9a2d028a..94e4ff4f2e7 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/organization-roles.md +++ b/content/en/cloud/concepts/identity-and-security/roles/organization-roles.md @@ -12,7 +12,7 @@ aliases: {{< cardpane >}} {{% card header="Default Organization Roles" %}} -Organization Roles +Organization Roles {{% /card %}} {{< /cardpane >}} @@ -43,7 +43,7 @@ aliases: **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) {{% /card %}} {{< /cardpane >}} @@ -73,7 +73,7 @@ aliases: **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) {{% /card %}} {{< /cardpane >}} diff --git a/content/en/cloud/concepts/identity-and-security/roles/provider-admin-roles.md b/content/en/cloud/concepts/identity-and-security/roles/provider-admin-roles.md index 3fa0126d02e..56ad2de2407 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/provider-admin-roles.md +++ b/content/en/cloud/concepts/identity-and-security/roles/provider-admin-roles.md @@ -13,7 +13,7 @@ aliases: {{< cardpane >}} {{% card %}} - + {{% /card %}} {{% card header="## Provider Administrator" %}} diff --git a/content/en/cloud/concepts/identity-and-security/roles/team-roles.md b/content/en/cloud/concepts/identity-and-security/roles/team-roles.md index 51ded8f84dc..30312f6b9d6 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/team-roles.md +++ b/content/en/cloud/concepts/identity-and-security/roles/team-roles.md @@ -12,7 +12,7 @@ aliases: {{< cardpane >}} {{% card header="Default Team Roles" %}} -Team Roles +Team Roles {{% /card %}} {{< /cardpane >}} @@ -42,7 +42,7 @@ aliases: **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) {{% /card %}} {{< /cardpane >}} diff --git a/content/en/cloud/concepts/identity-and-security/images/user-role.svg b/content/en/cloud/concepts/identity-and-security/roles/user-role/images/user-role.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/images/user-role.svg rename to content/en/cloud/concepts/identity-and-security/roles/user-role/images/user-role.svg diff --git a/content/en/cloud/concepts/identity-and-security/roles/user-role.md b/content/en/cloud/concepts/identity-and-security/roles/user-role/index.md similarity index 82% rename from content/en/cloud/concepts/identity-and-security/roles/user-role.md rename to content/en/cloud/concepts/identity-and-security/roles/user-role/index.md index b13c9fe4897..f81d362605d 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/user-role.md +++ b/content/en/cloud/concepts/identity-and-security/roles/user-role/index.md @@ -12,7 +12,7 @@ aliases: {{< cardpane >}} {{% card header="Default User Role" %}} -User Role +User Role {{% /card %}} {{< /cardpane >}} @@ -41,7 +41,7 @@ aliases: **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) {{% /card %}} {{< /cardpane >}} diff --git a/content/en/cloud/concepts/identity-and-security/roles/workspace-roles.md b/content/en/cloud/concepts/identity-and-security/roles/workspace-roles.md index b3cf3b64381..78feac53851 100644 --- a/content/en/cloud/concepts/identity-and-security/roles/workspace-roles.md +++ b/content/en/cloud/concepts/identity-and-security/roles/workspace-roles.md @@ -12,7 +12,7 @@ aliases: {{< cardpane >}} {{% card %}} -Workspace Roles +Workspace Roles {{% /card %}} {{< /cardpane >}} @@ -43,7 +43,7 @@ aliases: **What permissions does this role have?** -- Check [Permissions Reference](/cloud/reference/default-permissions/) +- Check [Permissions Reference]({{< ref "cloud/reference/default-permissions.md" >}}) {{% /card %}} {{< /cardpane >}} diff --git a/content/en/cloud/concepts/identity-and-security/teams/_index.md b/content/en/cloud/concepts/identity-and-security/teams/_index.md index 3b63e77a2ea..852672e88c7 100755 --- a/content/en/cloud/concepts/identity-and-security/teams/_index.md +++ b/content/en/cloud/concepts/identity-and-security/teams/_index.md @@ -16,9 +16,9 @@ Outside of grouping users together, teams offer control access to workspaces and ## Example: Orbital Labs Teams -The following teams illustrate how organizations use teams to segment access and responsibilities. Follow the full story at [Meet Five and the Cast](/cloud/getting-started/meet-five). +The following teams illustrate how organizations use teams to segment access and responsibilities. Follow the full story at [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}). -Team of Fives +Team of Fives {{< cardpane >}} {{% card header="**Infrastructure Team**" %}} @@ -38,7 +38,7 @@ Controls access to the development workspace (`orbital-dev`). Rex deploys often; {{< /cardpane >}} {{< alert type="info" >}} -An Org Admin may also serve as a Team Admin — Maya Chen holds both roles at Orbital Labs. See [Roles](/cloud/concepts/identity-and-security/roles/) for more on how role assignments stack. +An Org Admin may also serve as a Team Admin — Maya Chen holds both roles at Orbital Labs. See [Roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}) for more on how role assignments stack. {{< /alert >}} ## Add a Team @@ -49,7 +49,7 @@ A team is simply a group that an administrator can create in the Google Admin co Below the top-level organization, you can add as many teams as you want - at the same level. Hierarchal teams are not currently supported. When you change a setting at the higher level organization, the settings for all child teams that inherit that setting also change. Custom settings at the team level, however, remain unchanged. ->Learn more about the [organizational structure](/cloud/concepts/identity-and-security). +>Learn more about the [organizational structure]({{< ref "cloud/concepts/identity-and-security/_index.md" >}}). {{< alert type="info" title="Team Ownership">}} If you are the current team owner, you can’t remove yourself from the team until you transfer ownership to another team administrator. @@ -59,7 +59,7 @@ If you are the current team owner, you can’t remove yourself from the team unt The "Open Team Invite" feature allows administrators to use shareable "Team Invite Links" for users to join a particular team. This link-based invitation method functions much like an [Open Org Invite Link](https://docs.layer5.io/cloud/guides/organizations/org-management/), but is tailored for team-specific invitations and provides a direct alternative to adding members manually. -![Process of open team invite](/cloud/concepts/identity-and-security/teams/open_team_invite.gif) +![Process of open team invite](images/open_team_invite.gif) ### When to Use diff --git a/content/en/cloud/concepts/identity-and-security/teams/open_team_invite.gif b/content/en/cloud/concepts/identity-and-security/teams/images/open_team_invite.gif similarity index 100% rename from content/en/cloud/concepts/identity-and-security/teams/open_team_invite.gif rename to content/en/cloud/concepts/identity-and-security/teams/images/open_team_invite.gif diff --git a/static/images/five/team-of-fives.svg b/content/en/cloud/concepts/identity-and-security/teams/images/team-of-fives.svg similarity index 100% rename from static/images/five/team-of-fives.svg rename to content/en/cloud/concepts/identity-and-security/teams/images/team-of-fives.svg diff --git a/content/en/cloud/concepts/identity-and-security/tokens.md b/content/en/cloud/concepts/identity-and-security/tokens.md index 12df225221f..4e39d0c946f 100644 --- a/content/en/cloud/concepts/identity-and-security/tokens.md +++ b/content/en/cloud/concepts/identity-and-security/tokens.md @@ -19,7 +19,7 @@ Layer5 Cloud REST API uses [OAuth 2.0](https://oauth.net/2/) for authentication Access tokens are opaque tokens that conform to the OAuth 2.0 framework. They contain authorization information, but not identity information. They are used to authenticate and provide authorization information to Layer5 APIs. Access tokens are associated with a user account. They have an unlimited lifetime and can be revoked at any time. {{< alert type="info" title="API Tokens are User-Scoped, Not Organization-Scoped" >}} -Layer5 Cloud API tokens are scoped to your user account, not to a specific organization. This means a single API token provides access to all organizations you are a member of, similar to how [GitHub Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) work. For users who belong to multiple organizations, see [Specifying Organization Context](/cloud/reference/api-reference/#specifying-organization-context) in the REST API documentation to learn how to control which organization your API requests operate on. +Layer5 Cloud API tokens are scoped to your user account, not to a specific organization. This means a single API token provides access to all organizations you are a member of, similar to how [GitHub Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) work. For users who belong to multiple organizations, see [Specifying Organization Context]({{< ref "cloud/reference/api-reference/_index.md#specifying-organization-context" >}}) in the REST API documentation to learn how to control which organization your API requests operate on. {{< /alert >}} ## Creating tokens diff --git a/content/en/cloud/concepts/identity-and-security/users/_index.md b/content/en/cloud/concepts/identity-and-security/users/_index.md index 32fcde02625..1fed3950147 100755 --- a/content/en/cloud/concepts/identity-and-security/users/_index.md +++ b/content/en/cloud/concepts/identity-and-security/users/_index.md @@ -16,7 +16,7 @@ Anyone who uses Layer5 Cloud signs into a user account. Your user account is you {{< cardpane >}} {{% card header="**Five** — Platform Engineer" %}} -Five +Five **Organization:** Orbital Labs **Role:** User (Platform Engineer) @@ -24,10 +24,10 @@ Anyone who uses Layer5 Cloud signs into a user account. Your user account is you Curious, enthusiastic, and reliably the first to discover that a feature works differently than the docs say it does. -[See full cast →](/cloud/getting-started/meet-five) +[See full cast →]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) {{% /card %}} {{% card header="**Maya Chen** — Org Admin" %}} -Maya Chen +Maya Chen **Organization:** Orbital Labs **Role:** Org Admin + Development Team Admin @@ -35,7 +35,7 @@ Curious, enthusiastic, and reliably the first to discover that a feature works d Voice of reason. Has a calendar block called "Preventing Five from touching prod" that recurs every Friday at 4:45 PM. -[See full cast →](/cloud/getting-started/meet-five) +[See full cast →]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) {{% /card %}} {{< /cardpane >}} @@ -52,7 +52,7 @@ For more information, see [Layer5 subscription plans](https://layer5.io/pricing) Teams allow you to organize users into groups and conveniently assign access to workspaces or to assign roles with associated keychains and keys to control permissions. {{< alert type="info" >}} -You need to have the default `Team Admin` role to assign permissions to users in your team. For more information, see [Teams](/cloud/concepts/identity-and-security/teams). +You need to have the default `Team Admin` role to assign permissions to users in your team. For more information, see [Teams]({{< ref "cloud/concepts/identity-and-security/teams/_index.md" >}}). {{< /alert >}} Organizations may have any number of teams and teams may have any number of users. User accounts are treated as sovereign entities that are owned by individual individuals, not by corporations. @@ -62,7 +62,7 @@ Organization and teams may have any number of users accounts. User accounts are Users and their tokens may be authorized to access resources. Users can be created and managed by the Provider Admins, Organization Admins, or Team Admins. Users of one organization may be granted access to resources (e.g. Workspaces and Designs) of another organization. User entitlement, roles and permissions are org-scoped, meaning that the entitlements and permissions that a given user has in one organization does not necessarily reflect the same level of access that their membership in another oganziation does. {{< alert type="info" >}} -Only Provider Admins and Organization Admin can create users. For more information, see [Roles](/cloud/concepts/identity-and-security/roles/). +Only Provider Admins and Organization Admin can create users. For more information, see [Roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). {{< /alert >}} ## Account Linking diff --git a/content/en/cloud/concepts/identity-and-security/users/default-permissions.md b/content/en/cloud/concepts/identity-and-security/users/default-permissions.md index 67b69955110..1c7651f9e9e 100644 --- a/content/en/cloud/concepts/identity-and-security/users/default-permissions.md +++ b/content/en/cloud/concepts/identity-and-security/users/default-permissions.md @@ -32,4 +32,4 @@ aliases: {{< alert title="*Organization Owner" type="warning" >}} _Permissions marked with * apply only if you are the owner of the organization._{{< /alert >}} -{{< alert title="Customizable Permissions" type="info" >}}Default permissions can be easily customized by simply creating your own [keychains](/cloud/concepts/identity-and-security/keychains/) and [roles](/cloud/concepts/identity-and-security/roles).{{< /alert >}} +{{< alert title="Customizable Permissions" type="info" >}}Default permissions can be easily customized by simply creating your own [keychains]({{< ref "cloud/concepts/identity-and-security/keychains.md" >}}) and [roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}).{{< /alert >}} diff --git a/content/en/cloud/concepts/identity-and-security/users/Slide41.svg b/content/en/cloud/concepts/identity-and-security/users/images/Slide41.svg similarity index 100% rename from content/en/cloud/concepts/identity-and-security/users/Slide41.svg rename to content/en/cloud/concepts/identity-and-security/users/images/Slide41.svg diff --git a/content/en/cloud/concepts/identity-and-security/users/notification-preferences.gif b/content/en/cloud/concepts/identity-and-security/users/notification-preferences/images/notification-preferences.gif similarity index 100% rename from content/en/cloud/concepts/identity-and-security/users/notification-preferences.gif rename to content/en/cloud/concepts/identity-and-security/users/notification-preferences/images/notification-preferences.gif diff --git a/content/en/cloud/concepts/identity-and-security/users/notification-preferences.md b/content/en/cloud/concepts/identity-and-security/users/notification-preferences/index.md similarity index 94% rename from content/en/cloud/concepts/identity-and-security/users/notification-preferences.md rename to content/en/cloud/concepts/identity-and-security/users/notification-preferences/index.md index 8e1d45a53be..929d8ab2565 100644 --- a/content/en/cloud/concepts/identity-and-security/users/notification-preferences.md +++ b/content/en/cloud/concepts/identity-and-security/users/notification-preferences/index.md @@ -11,7 +11,7 @@ aliases: Layer5 Cloud offers a range of user-configurable preferences that allows you to control the types of email notifications you receive. -How to set your notifications preferences +How to set your notifications preferences ## To change the notification preferences diff --git a/content/en/cloud/concepts/identity-and-security/users/user-invitations/index.md b/content/en/cloud/concepts/identity-and-security/users/user-invitations/index.md index eb35d9c2eb2..d78594a0103 100644 --- a/content/en/cloud/concepts/identity-and-security/users/user-invitations/index.md +++ b/content/en/cloud/concepts/identity-and-security/users/user-invitations/index.md @@ -102,7 +102,7 @@ From the table you can perform the following management actions on each invitati The **Quota** column in the invitations table always shows the number of users who have accepted an invitation alongside the configured limit — for example, `2 / 5` if a quota is set, or `2 / Unlimited` if no quota is configured. This lets you monitor uptake at a glance. -To see the individual users who are now members of the organization, navigate to the [User Management](/cloud/concepts/identity-and-security/users/user-management/) page. Members who joined via invitation appear there alongside their assigned roles. +To see the individual users who are now members of the organization, navigate to the [User Management]({{< ref "cloud/concepts/identity-and-security/users/user-management/index.md" >}}) page. Members who joined via invitation appear there alongside their assigned roles. ### What happens when a user accepts an invitation diff --git a/content/en/cloud/concepts/identity-and-security/users/add-user.gif b/content/en/cloud/concepts/identity-and-security/users/user-management/images/add-user.gif similarity index 100% rename from content/en/cloud/concepts/identity-and-security/users/add-user.gif rename to content/en/cloud/concepts/identity-and-security/users/user-management/images/add-user.gif diff --git a/content/en/cloud/concepts/identity-and-security/users/create-user.gif b/content/en/cloud/concepts/identity-and-security/users/user-management/images/create-user.gif similarity index 100% rename from content/en/cloud/concepts/identity-and-security/users/create-user.gif rename to content/en/cloud/concepts/identity-and-security/users/user-management/images/create-user.gif diff --git a/content/en/cloud/concepts/identity-and-security/users/org_invite.png b/content/en/cloud/concepts/identity-and-security/users/user-management/images/org_invite.png similarity index 100% rename from content/en/cloud/concepts/identity-and-security/users/org_invite.png rename to content/en/cloud/concepts/identity-and-security/users/user-management/images/org_invite.png diff --git a/content/en/cloud/concepts/identity-and-security/users/remove_user.png b/content/en/cloud/concepts/identity-and-security/users/user-management/images/remove_user.png similarity index 100% rename from content/en/cloud/concepts/identity-and-security/users/remove_user.png rename to content/en/cloud/concepts/identity-and-security/users/user-management/images/remove_user.png diff --git a/content/en/cloud/concepts/identity-and-security/users/user-management.md b/content/en/cloud/concepts/identity-and-security/users/user-management/index.md similarity index 83% rename from content/en/cloud/concepts/identity-and-security/users/user-management.md rename to content/en/cloud/concepts/identity-and-security/users/user-management/index.md index 18ec8c03169..662742525c3 100644 --- a/content/en/cloud/concepts/identity-and-security/users/user-management.md +++ b/content/en/cloud/concepts/identity-and-security/users/user-management/index.md @@ -12,23 +12,23 @@ aliases: This guide outlines methods for creating user accounts, adding users to organizations, inviting new members, and managing user access within Layer5 Cloud to maintain a secure and organized environment. -![User Management options](/cloud/concepts/identity-and-security/users/org_invite.png) +![User Management options](images/org_invite.png) ## Create User Account Seamlessly initiate new user accounts, ensuring a smooth onboarding process. Specify user details, such as email, and tailor their access by adding them to one or more organizations. Optionally assign roles, defining their scope within the platform. Complete the process by sending a personalized account setup email, streamlining the user's introduction to Layer5 Cloud. -![Create User](/cloud/concepts/identity-and-security/users/create-user.gif) +![Create User](images/create-user.gif) {{< alert type="info" title="Permission Required for User Creation" >}} -Only Provider Admins and Organization Admins can create users. For more information, see [Roles](/cloud/concepts/identity-and-security/roles). +Only Provider Admins and Organization Admins can create users. For more information, see [Roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). {{< /alert >}} ## Add / Remove Existing User This section explains how to add existing Layer5 Cloud users to one of your organizations or remove them. -{{< meshery-design-embed src="/export-designs/embedded-design-page-open-source.js" id="embedded-design-066b0ef3-7956-4c3b-a5cc-1d276ac13ec6" >}} +{{< meshery-design-embed src="export-designs/embedded-design-page-open-source.js" id="embedded-design-066b0ef3-7956-4c3b-a5cc-1d276ac13ec6" >}} ### Adding a User to an Organization @@ -40,7 +40,7 @@ If someone already has a Layer5 Cloud account but isn't part of your organizatio 4. Select the user from the list of available users. 5. Assign appropriate roles within the organization. -![Add User to Organization](/cloud/concepts/identity-and-security/users/add-user.gif) +![Add User to Organization](images/add-user.gif) ### Removing Users from an Organization @@ -56,7 +56,7 @@ You can remove users from an organization one by one or several at once. This ac * **Use Bulk Action:** Click the "Delete" button. * **Confirm:** When prompted, confirm that you want to remove all the selected users from the organization. -![Removing Users from an Organization](/cloud/concepts/identity-and-security/users/remove_user.png) +![Removing Users from an Organization](images/remove_user.png) ## Invite User via Email @@ -70,5 +70,5 @@ You can invite new or existing users to join one of your organizations by sendin * **What the User Does:** The person you invited will click a link in the email to accept. If they're new to Layer5 Cloud, they'll need to create an account first before they can join your organization. {{< alert type="info" title="Permissions for Role Assignment" >}} -An Organization Admin can assign organization roles to users, but provider roles can only be assigned by Provider Admins. For more information, see [Roles](/cloud/concepts/identity-and-security/roles). +An Organization Admin can assign organization roles to users, but provider roles can only be assigned by Provider Admins. For more information, see [Roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). {{< /alert >}} diff --git a/content/en/cloud/concepts/spaces/environments.md b/content/en/cloud/concepts/spaces/environments.md index d6480565c48..255d71f2659 100644 --- a/content/en/cloud/concepts/spaces/environments.md +++ b/content/en/cloud/concepts/spaces/environments.md @@ -12,7 +12,7 @@ Environments allow you to logically group related [Connections](#connections) an ### Assigning Resources to Environments -Assign any number of Connections to an environment whether that Connection is managed or unmanaged (see [MeshSync](https://docs.meshery.io/concepts/architecture/meshsync) to learn more about managed and unmanaged Connections). In-turn, assign any number of Environments to one or more [Workspaces](../workspaces). Connections (and any associated Credentials) that are assigned to an Environment become immediately available for use in any associated Workspace. +Assign any number of Connections to an environment whether that Connection is managed or unmanaged (see [MeshSync](https://docs.meshery.io/concepts/architecture/meshsync) to learn more about managed and unmanaged Connections). In-turn, assign any number of Environments to one or more [Workspaces]({{< ref "cloud/concepts/spaces/workspaces.md" >}}). Connections (and any associated Credentials) that are assigned to an Environment become immediately available for use in any associated Workspace. ### Sharing Resources between Environments @@ -30,7 +30,7 @@ Environments represent a collection of resources in the form of Connections - bo - **Logical Grouping** Environments allow you to logically group related connections and their associated credentials. This makes it easier to manage, share, and work with a subset of resources instead of dealing with all your connections individually. -- **Resource Sharing** Environments can be seamlessly assigned to [Workspaces](../workspaces), another essential concept in Meshery. When you assign an Environment to a Workspace, you enable resource sharing among team members. This collaborative approach simplifies the sharing of connections and resources, making it easier to work together in cloud native environments. +- **Resource Sharing** Environments can be seamlessly assigned to [Workspaces]({{< ref "cloud/concepts/spaces/workspaces.md" >}}), another essential concept in Meshery. When you assign an Environment to a Workspace, you enable resource sharing among team members. This collaborative approach simplifies the sharing of connections and resources, making it easier to work together in cloud native environments. ## Key Components @@ -48,7 +48,7 @@ Credentials in an Environment are the keys to securely authenticate and access m ## Example: Orbital Labs Environment Setup -The following illustrates how Five and Zara set up multi-cloud environments at Orbital Labs, spanning AWS, GCP, and Azure. See [Meet Five and the Cast](/cloud/getting-started/meet-five) for the full seed inventory. +The following illustrates how Five and Zara set up multi-cloud environments at Orbital Labs, spanning AWS, GCP, and Azure. See [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) for the full seed inventory. ### Environment Inventory diff --git a/content/en/cloud/concepts/spaces/workspaces.md b/content/en/cloud/concepts/spaces/workspaces.md index 4fd62210d3b..6c6c63de292 100644 --- a/content/en/cloud/concepts/spaces/workspaces.md +++ b/content/en/cloud/concepts/spaces/workspaces.md @@ -41,7 +41,7 @@ Like a shared drive (or shared collection of files), Workspaces are your Google - Same environment can be assigned to multiple workspaces. {{< alert type="info" title="Assigning Environments to Workspaces" >}} -Assign any number of Environments to one or more Workspaces. See [Environments](/cloud/concepts/spaces/environments) section for more information. +Assign any number of Environments to one or more Workspaces. See [Environments]({{< ref "cloud/concepts/spaces/environments.md" >}}) section for more information. {{< /alert >}} ### Designs @@ -61,7 +61,7 @@ Designs belong to only one Workspace at any given time. See [Designs](https://do - Same team can be assigned to multiple workspaces. {{< alert type="info" title="Team Access Control in Workspaces" >}} -Teams offer control access to workspaces and to workspace resources such as environments and managed and unmanaged connections. See [Teams](/cloud/concepts/identity-and-security/teams). +Teams offer control access to workspaces and to workspace resources such as environments and managed and unmanaged connections. See [Teams]({{< ref "cloud/concepts/identity-and-security/teams/_index.md" >}}). {{< /alert >}} ### Connections @@ -85,12 +85,12 @@ To make the most of Workspaces, here are some best practices: Workspaces enhance collaboration within your teams, providing a structured environment for sharing and managing resources. By following best practices and understanding the core components of Workspaces, you can maximize the benefits of this feature. {{< alert type="info" title="Looking for Practical Workspace Management?" >}} -For a step-by-step guide on how to create, edit, and manage your workspaces, see the [Managing Workspaces](/cloud/guides/workspaces/managing-workspaces/) documentation. +For a step-by-step guide on how to create, edit, and manage your workspaces, see the [Managing Workspaces]({{< ref "cloud/guides/workspaces/managing-workspaces/index.md" >}}) documentation. {{< /alert >}} ## Example: Orbital Labs Workspace Setup -The following illustrates how Five and Maya set up workspaces at Orbital Labs to segment access across infrastructure and development workflows. See [Meet Five and the Cast](/cloud/getting-started/meet-five) for the full seed inventory. +The following illustrates how Five and Maya set up workspaces at Orbital Labs to segment access across infrastructure and development workflows. See [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) for the full seed inventory. ### Workspace Inventory diff --git a/content/en/cloud/getting-started/_index.md b/content/en/cloud/getting-started/_index.md index 6e06c229c69..cec3e131bb7 100644 --- a/content/en/cloud/getting-started/_index.md +++ b/content/en/cloud/getting-started/_index.md @@ -41,8 +41,8 @@ To verify your setup, try deploying a sample design: --- ### Need Help? -If you run into issues during setup, join our [Slack Community](http://slack.layer5.io) or check the [Troubleshooting Guide](/docs/troubleshooting). +If you run into issues during setup, join our [Slack Community](http://slack.layer5.io) {{< alert type="info" title="Follow Along with Five" >}} -Throughout these docs you'll follow Five — a Platform Engineer at Orbital Labs — and his colleagues as they set up organizations, configure workspaces, deploy designs, and navigate the occasional Friday-afternoon incident. [Meet Five and the full cast →]({{< relref "/cloud/getting-started/meet-five/_index.md" >}}) +Throughout these docs you'll follow Five — a Platform Engineer at Orbital Labs — and his colleagues as they set up organizations, configure workspaces, deploy designs, and navigate the occasional Friday-afternoon incident. [Meet Five and the full cast →]({{< relref "cloud/getting-started/meet-five/_index.md" >}}) {{< /alert >}} diff --git a/content/en/cloud/getting-started/getting-started-with-layer5-account.md b/content/en/cloud/getting-started/getting-started-with-layer5-account.md index 31140efbb26..a7cea0a3251 100644 --- a/content/en/cloud/getting-started/getting-started-with-layer5-account.md +++ b/content/en/cloud/getting-started/getting-started-with-layer5-account.md @@ -17,7 +17,7 @@ The first steps in starting with Layer5 are to create an account, verify your em To sign up for an account on Layer5 Cloud, navigate to . You may choose to either signup with your personal email or any of our supported OAuth providers like Github and Gmail. See "OAuth Providers" for more information. -{{< meshery-design-embed src="/export-designs/embedded-design-flows.js" id="embedded-design-8c9106f6-2b0e-4bd1-8eea-8ccdab5c117d" >}} +{{< meshery-design-embed src="export-designs/embedded-design-flows.js" id="embedded-design-8c9106f6-2b0e-4bd1-8eea-8ccdab5c117d" >}} @@ -44,7 +44,7 @@ On successful login, you will be prompted to setup your first organization and w Organization are unit of tenant in Layer5 Cloud. Every user on Layer5 Cloud is part of at least one organization. You can create your own organization or join an existing one. By default you are the owner of the organization you create. {{< alert type="info" >}} -For more information, see [Organizations](/cloud/concepts/identity-and-security/organizations/) +For more information, see [Organizations]({{< ref "cloud/concepts/identity-and-security/organizations/_index.md" >}}) {{< /alert >}} @@ -55,7 +55,7 @@ Give your organization a name and a description. For more information, see "Crea Workspaces are logical group of shared set of resources like environments, connections, credentials, infrastructural designs and more. Every user on Layer5 Cloud is part of at least one workspace. You can create your own workspace or join an existing one. By default you are the owner of the workspace you create. You can share access to resources in your workspaces through teams. {{< alert type="info" >}} -For more information, see [Workspaces](/cloud/concepts/spaces/workspaces/) +For more information, see [Workspaces]({{< ref "cloud/concepts/spaces/workspaces.md" >}}) {{< /alert >}} Give your workspace a name and a description. For more information, see "Creating a workspace." diff --git a/content/en/cloud/getting-started/images/github/add_repo.png b/content/en/cloud/getting-started/github-integration/images/github/add_repo.png similarity index 100% rename from content/en/cloud/getting-started/images/github/add_repo.png rename to content/en/cloud/getting-started/github-integration/images/github/add_repo.png diff --git a/content/en/cloud/getting-started/images/github/add_workflows.png b/content/en/cloud/getting-started/github-integration/images/github/add_workflows.png similarity index 100% rename from content/en/cloud/getting-started/images/github/add_workflows.png rename to content/en/cloud/getting-started/github-integration/images/github/add_workflows.png diff --git a/content/en/cloud/getting-started/images/github/authorize.png b/content/en/cloud/getting-started/github-integration/images/github/authorize.png similarity index 100% rename from content/en/cloud/getting-started/images/github/authorize.png rename to content/en/cloud/getting-started/github-integration/images/github/authorize.png diff --git a/content/en/cloud/getting-started/images/github/catalog.png b/content/en/cloud/getting-started/github-integration/images/github/catalog.png similarity index 100% rename from content/en/cloud/getting-started/images/github/catalog.png rename to content/en/cloud/getting-started/github-integration/images/github/catalog.png diff --git a/content/en/cloud/getting-started/images/github/configure_secrets.png b/content/en/cloud/getting-started/github-integration/images/github/configure_secrets.png similarity index 100% rename from content/en/cloud/getting-started/images/github/configure_secrets.png rename to content/en/cloud/getting-started/github-integration/images/github/configure_secrets.png diff --git a/content/en/cloud/getting-started/images/github/connections.png b/content/en/cloud/getting-started/github-integration/images/github/connections.png similarity index 100% rename from content/en/cloud/getting-started/images/github/connections.png rename to content/en/cloud/getting-started/github-integration/images/github/connections.png diff --git a/content/en/cloud/getting-started/images/github/dashboard.png b/content/en/cloud/getting-started/github-integration/images/github/dashboard.png similarity index 100% rename from content/en/cloud/getting-started/images/github/dashboard.png rename to content/en/cloud/getting-started/github-integration/images/github/dashboard.png diff --git a/content/en/cloud/getting-started/images/github/delete_connection.png b/content/en/cloud/getting-started/github-integration/images/github/delete_connection.png similarity index 100% rename from content/en/cloud/getting-started/images/github/delete_connection.png rename to content/en/cloud/getting-started/github-integration/images/github/delete_connection.png diff --git a/content/en/cloud/getting-started/images/github/extensions.png b/content/en/cloud/getting-started/github-integration/images/github/extensions.png similarity index 100% rename from content/en/cloud/getting-started/images/github/extensions.png rename to content/en/cloud/getting-started/github-integration/images/github/extensions.png diff --git a/content/en/cloud/getting-started/images/github/finish.png b/content/en/cloud/getting-started/github-integration/images/github/finish.png similarity index 100% rename from content/en/cloud/getting-started/images/github/finish.png rename to content/en/cloud/getting-started/github-integration/images/github/finish.png diff --git a/content/en/cloud/getting-started/images/github/github.png b/content/en/cloud/getting-started/github-integration/images/github/github.png similarity index 100% rename from content/en/cloud/getting-started/images/github/github.png rename to content/en/cloud/getting-started/github-integration/images/github/github.png diff --git a/content/en/cloud/getting-started/images/github/install_meshery.png b/content/en/cloud/getting-started/github-integration/images/github/install_meshery.png similarity index 100% rename from content/en/cloud/getting-started/images/github/install_meshery.png rename to content/en/cloud/getting-started/github-integration/images/github/install_meshery.png diff --git a/content/en/cloud/getting-started/images/github/integrations.png b/content/en/cloud/getting-started/github-integration/images/github/integrations.png similarity index 100% rename from content/en/cloud/getting-started/images/github/integrations.png rename to content/en/cloud/getting-started/github-integration/images/github/integrations.png diff --git a/content/en/cloud/getting-started/images/github/select-repo.png b/content/en/cloud/getting-started/github-integration/images/github/select-repo.png similarity index 100% rename from content/en/cloud/getting-started/images/github/select-repo.png rename to content/en/cloud/getting-started/github-integration/images/github/select-repo.png diff --git a/content/en/cloud/getting-started/images/github/select_connection.png b/content/en/cloud/getting-started/github-integration/images/github/select_connection.png similarity index 100% rename from content/en/cloud/getting-started/images/github/select_connection.png rename to content/en/cloud/getting-started/github-integration/images/github/select_connection.png diff --git a/content/en/cloud/getting-started/images/github/select_design.png b/content/en/cloud/getting-started/github-integration/images/github/select_design.png similarity index 100% rename from content/en/cloud/getting-started/images/github/select_design.png rename to content/en/cloud/getting-started/github-integration/images/github/select_design.png diff --git a/content/en/cloud/getting-started/images/github/select_file.png b/content/en/cloud/getting-started/github-integration/images/github/select_file.png similarity index 100% rename from content/en/cloud/getting-started/images/github/select_file.png rename to content/en/cloud/getting-started/github-integration/images/github/select_file.png diff --git a/content/en/cloud/getting-started/images/github/show_all_files.png b/content/en/cloud/getting-started/github-integration/images/github/show_all_files.png similarity index 100% rename from content/en/cloud/getting-started/images/github/show_all_files.png rename to content/en/cloud/getting-started/github-integration/images/github/show_all_files.png diff --git a/content/en/cloud/getting-started/images/github/spaces.png b/content/en/cloud/getting-started/github-integration/images/github/spaces.png similarity index 100% rename from content/en/cloud/getting-started/images/github/spaces.png rename to content/en/cloud/getting-started/github-integration/images/github/spaces.png diff --git a/content/en/cloud/getting-started/images/github/workflow_exists.png b/content/en/cloud/getting-started/github-integration/images/github/workflow_exists.png similarity index 100% rename from content/en/cloud/getting-started/images/github/workflow_exists.png rename to content/en/cloud/getting-started/github-integration/images/github/workflow_exists.png diff --git a/content/en/cloud/getting-started/github-integration.md b/content/en/cloud/getting-started/github-integration/index.md similarity index 85% rename from content/en/cloud/getting-started/github-integration.md rename to content/en/cloud/getting-started/github-integration/index.md index 529d4d5eafe..32b2111a33c 100644 --- a/content/en/cloud/getting-started/github-integration.md +++ b/content/en/cloud/getting-started/github-integration/index.md @@ -28,21 +28,21 @@ You can commence the integration process from the "**Extensions Page in Meshery* 1. Click on **Enable** for **GitHub Action: Kanvas Snapshot**. 1. You will be redirected to the Integrations page. - ![Extensions](/cloud/getting-started/images/github/extensions.png) + ![Extensions](images/github/extensions.png) ### Navigate to the Integrations Page via the Layer5 Cloud Dashboard 1. On [Layer5 Cloud](https://cloud.layer5.io/dashboard), click on the **menu icon** on the navigation bar to open the global navigation menu. - ![Dashboard](/cloud/getting-started/images/github/dashboard.png) + ![Dashboard](images/github/dashboard.png) 1. From the **Spaces** drop down, select **Integrations**. - ![Spaces](/cloud/getting-started/images/github/spaces.png) + ![Spaces](images/github/spaces.png) 1. You will be redirected to the Integrations page. Click **Connect** to begin the integration process. - ![Integrations](/cloud/getting-started/images/github/integrations.png) + ![Integrations](images/github/integrations.png) ### Connect GitHub and Import Designs @@ -51,18 +51,18 @@ Let’s go through the steps required to connect your GitHub account and import 1. **Connect GitHub App**: This initiates the authorization process where you'll link your GitHub account with Meshery. - Click **Connect**. - ![Connect GitHub](/cloud/getting-started/images/github/github.png) + ![Connect GitHub](images/github/github.png) - You will be asked to sign in to your GitHub account if you are not already signed in. - Once signed in, GitHub will prompt you to select the GitHub account where you want to install the Meshery GitHub App. This account could be your personal account or an organization account you can access. - ![Install Meshery](/cloud/getting-started/images/github/install_meshery.png) + ![Install Meshery](images/github/install_meshery.png) - After selecting the account, GitHub will prompt you to authorize the Meshery GitHub App so it can access your account. - You can choose to allow access to all repositories or select specific ones. - After making your selection, click **Install and Authorize** to complete the authorization process. - ![Install and Authorize](/cloud/getting-started/images/github/authorize.png) + ![Install and Authorize](images/github/authorize.png) > Note: When you install a GitHub App on your account or organization, you grant the app permission to access the organization and repository resources that it requested. You also specify which repositories the app can access. @@ -70,7 +70,7 @@ Let’s go through the steps required to connect your GitHub account and import - Select the repository or repositories you want, then click **Next**. - ![Select repository](/cloud/getting-started/images/github/select-repo.png) + ![Select repository](images/github/select-repo.png) **Reconfigure Repository Selection** @@ -80,13 +80,13 @@ Let’s go through the steps required to connect your GitHub account and import 1. Reconfigure repository access for GitHub accounts that already have the Meshery GitHub App installed or 1. Install the Meshery GitHub App on a new GitHub account to gain access to the repositories there. - ![Add Repository](/cloud/getting-started/images/github/add_repo.png) + ![Add Repository](images/github/add_repo.png) 1. **Import Design Files**: The files in the repository are displayed for you to select the ones you want to import as designs. - There is a checkbox that allows you to choose between displaying all file types or only the file types that are typically supported by Meshery for import. - ![Show all File Types](/cloud/getting-started/images/github/show_all_files.png) + ![Show all File Types](images/github/show_all_files.png) - The file types supported for import are: 1. Helm charts @@ -97,7 +97,7 @@ Let’s go through the steps required to connect your GitHub account and import - Select the checkbox beside the directory name to import all the files in the directory, or individually select the files you want to import and click **Import**. - If you want to go back and change your selection or choose a different repository, click **Back**. - ![Select Files](/cloud/getting-started/images/github/select_file.png) + ![Select Files](images/github/select_file.png) - After the import, the files that were imported successfully and those that weren't will be indicated on the screen. @@ -108,19 +108,19 @@ These next steps are optional. By enabling snapshots, you can choose a design fr 1. **Select Designs**: Select the design from the repository you want to enable snapshots for, then click **Next**. - ![Select Designs](/cloud/getting-started/images/github/select_design.png) + ![Select Designs](images/github/select_design.png) **Warning: Workflow Already Exists** If you attempt to add a workflow to a repository that already contains an existing workflow from this process, you will see a warning message. Proceeding to the next step after receiving this warning will overwrite the existing snapshot workflow in that repository. - ![Workflow Exists](/cloud/getting-started/images/github/workflow_exists.png) + ![Workflow Exists](images/github/workflow_exists.png) 1. **Configure Secrets**: - Copy the **API TOKEN** and add it to the secrets page of your selected repository. To learn more about configuring secrets check out [Using secrets in GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions). - Tick the check box to confirm that you have added the token. - ![Configure Secrets](/cloud/getting-started/images/github/configure_secrets.png) + ![Configure Secrets](images/github/configure_secrets.png) 1. **Add workflows**: Allowing Meshery to add this workflow ensures the smooth integration of Meshery Snapshot with your GitHub repository. The workflow: @@ -132,7 +132,7 @@ These next steps are optional. By enabling snapshots, you can choose a design fr With the workflow active in your repository, you can now visualize changes to your infrastructure directly in your pull requests, making it easier to track and review updates on designs. - ![Add workflow](/cloud/getting-started/images/github/add_workflows.png) + ![Add workflow](images/github/add_workflows.png) Click **Next** to finish setting up! @@ -144,7 +144,7 @@ You have successfully Integrated GitHub with Meshery! This page provides an over 1. Click on the **View** icon to open the Meshery Catalog and see the design. 1. If everything looks good, click **Finish**. If you need to make any updates, you can go **Back** to the previous steps. - ![Finish Set up](/cloud/getting-started/images/github/finish.png) + ![Finish Set up](images/github/finish.png) ## View Imported Designs @@ -153,13 +153,13 @@ To view imported designs: 1. Go to [Meshery Catalog](https://cloud.layer5.io/catalog). 1. Click on **My Designs** on the navigation bar. - ![Catalog](/cloud/getting-started/images/github/catalog.png) + ![Catalog](images/github/catalog.png) ## View GitHub Integration Connection on Meshery Playground To view and manage the GitHub connection, on the left sidebar of the playground, click on **Lifecycle** > **Connections**. -![View GitHub Connection](/cloud/getting-started/images/github/connections.png) +![View GitHub Connection](images/github/connections.png) ## Delete GitHub Integration @@ -173,10 +173,10 @@ On the Connections page in Meshery: On the [Integrations Page in Layer5 Cloud](https://cloud.layer5.io/spaces/integrations) page: 1. Click on the GitHub Connection. - ![Select Connection](/cloud/getting-started/images/github/select_connection.png) + ![Select Connection](images/github/select_connection.png) 1. Tick the checkbox then **delete**. - ![Delete Connection](/cloud/getting-started/images/github/delete_connection.png) + ![Delete Connection](images/github/delete_connection.png) ## Conclusion diff --git a/content/en/cloud/getting-started/meet-five/_index.md b/content/en/cloud/getting-started/meet-five/_index.md index a2452464f81..71bda154b7f 100644 --- a/content/en/cloud/getting-started/meet-five/_index.md +++ b/content/en/cloud/getting-started/meet-five/_index.md @@ -50,7 +50,7 @@ Orbital Labs operates as a tenant of Constellation Cloud, an MSP whose Provider {{< cardpane >}} {{% card header="**Dr. Aiko Sato** — Provider Admin" %}} -Dr. Aiko Sato — Provider Admin at Constellation Cloud +Dr. Aiko Sato — Provider Admin at Constellation Cloud **Organization:** Constellation Cloud **Role:** Provider Admin @@ -64,7 +64,7 @@ Has seen every misconfigured RBAC policy known to humankind. Responds to Slack m {{< cardpane >}} {{% card header="**Five** — Platform Engineer" %}} -Five — Platform Engineer at Orbital Labs +Five — Platform Engineer at Orbital Labs **Organization:** Orbital Labs **Role:** User (Platform Engineer) @@ -73,7 +73,7 @@ Has seen every misconfigured RBAC policy known to humankind. Responds to Slack m The protagonist — curious, enthusiastic, and reliably the first to discover that a feature works differently than the docs say it does. {{% /card %}} {{% card header="**Maya Chen** — Org Admin & Development Team Admin" %}} -Maya Chen — Org Admin and Development Team Admin at Orbital Labs +Maya Chen — Org Admin and Development Team Admin at Orbital Labs **Organization:** Orbital Labs **Role:** Org Admin + Development Team Admin @@ -85,7 +85,7 @@ Voice of reason. Has a calendar block called "Preventing Five from touching prod {{< cardpane >}} {{% card header="**Zara Osei** — Infrastructure Team Admin" %}} -Zara Osei — Infrastructure Team Admin at Orbital Labs +Zara Osei — Infrastructure Team Admin at Orbital Labs **Organization:** Orbital Labs **Role:** Team Admin, Infrastructure Team @@ -94,7 +94,7 @@ Voice of reason. Has a calendar block called "Preventing Five from touching prod Sole keeper of the keychain permission matrix. Responds to access requests with a 48-hour SLA and a knowing look. {{% /card %}} {{% card header="**Rex Park** — Developer" %}} -Rex Park — Developer at Orbital Labs +Rex Park — Developer at Orbital Labs **Organization:** Orbital Labs **Role:** User, Developer Team @@ -103,7 +103,7 @@ Sole keeper of the keychain permission matrix. Responds to access requests with Opens design review requests and immediately asks Five if they have been approved yet. Deploys with confidence; reads error logs with less. {{% /card %}} {{% card header="**Jordan Reyes** — Developer & Designer" %}} -Jordan Reyes — Developer and Designer at Orbital Labs +Jordan Reyes — Developer and Designer at Orbital Labs **Organization:** Orbital Labs **Role:** User, Developer Team @@ -117,7 +117,7 @@ Crafts Kanvas designs of alarming elegance. Considers a 47-component architectur {{< cardpane >}} {{% card header="**Marcus Webb** — Org Admin" %}} -Marcus Webb — Org Admin at Stellar Dynamics +Marcus Webb — Org Admin at Stellar Dynamics **Organization:** Stellar Dynamics **Role:** Org Admin diff --git a/content/en/cloud/getting-started/meet-five/five-narrative-plan.md b/content/en/cloud/getting-started/meet-five/five-narrative-plan.md index 32c1a1af1e9..07f9fdfec56 100644 --- a/content/en/cloud/getting-started/meet-five/five-narrative-plan.md +++ b/content/en/cloud/getting-started/meet-five/five-narrative-plan.md @@ -13,12 +13,12 @@ aliases: --- {{< alert type="info" >}} -This page is a working document for documentation contributors. For the narrative itself — characters, organizations, and seed data — see [Meet Five and the Cast](/cloud/getting-started/meet-five/). +This page is a working document for documentation contributors. For the narrative itself — characters, organizations, and seed data — see [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}). {{< /alert >}} ## Objective -Layer5 Cloud and Kanvas documentation adopts a continuous narrative centered on Five and his colleagues at Orbital Labs. Rather than using generic placeholders ("User A", "Organization X"), every major docs section uses the canonical cast and scenarios defined in [Meet Five and the Cast](/cloud/getting-started/meet-five/). This plan maps which characters and scenarios belong in which sections, which Five illustrations to use, and the priority order for rolling out updates. +Layer5 Cloud and Kanvas documentation adopts a continuous narrative centered on Five and his colleagues at Orbital Labs. Rather than using generic placeholders ("User A", "Organization X"), every major docs section uses the canonical cast and scenarios defined in [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}). This plan maps which characters and scenarios belong in which sections, which Five illustrations to use, and the priority order for rolling out updates. ## Integration Map @@ -76,7 +76,7 @@ When capturing screenshots for any section that references the Five narrative, f | Provider Admin, cross-tenant | Dr. Aiko | `aiko@constellation-cloud.example` | | Enterprise org, cross-org access | Marcus | `marcus@stellar-dynamics.example` | -**Which workspace/environment to use:** Match the section's purpose to the Seed Inventory table in [Meet Five and the Cast](/cloud/getting-started/meet-five/). Use `dev-local` for all getting-started screenshots (no real cloud credentials required). +**Which workspace/environment to use:** Match the section's purpose to the Seed Inventory table in [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}). Use `dev-local` for all getting-started screenshots (no real cloud credentials required). **File naming:** `
--.png`, e.g., `workspaces-orbital-staging-creation-2026-04-28.png`. Store in the `images/` subdirectory of the relevant content section. diff --git a/static/images/five/3.svg b/content/en/cloud/getting-started/meet-five/images/five/3.svg similarity index 100% rename from static/images/five/3.svg rename to content/en/cloud/getting-started/meet-five/images/five/3.svg diff --git a/static/images/five/4.svg b/content/en/cloud/getting-started/meet-five/images/five/4.svg similarity index 100% rename from static/images/five/4.svg rename to content/en/cloud/getting-started/meet-five/images/five/4.svg diff --git a/static/images/five/5.svg b/content/en/cloud/getting-started/meet-five/images/five/5.svg similarity index 100% rename from static/images/five/5.svg rename to content/en/cloud/getting-started/meet-five/images/five/5.svg diff --git a/content/en/cloud/getting-started/support.md b/content/en/cloud/getting-started/support.md index 87a3f9c58c9..b76b1dd1b4b 100644 --- a/content/en/cloud/getting-started/support.md +++ b/content/en/cloud/getting-started/support.md @@ -30,4 +30,4 @@ If you've forgotten your Layer5 Cloud account password, don't worry. You can eas 6. After successfully resetting your password, you can now login to your Layer5 Cloud account using your new password. -{{< meshery-design-embed src="/export-designs/embedded-design-account-recovery.js" id="embedded-design-f4d47d8d-0a16-46d3-ae79-829a1d16b2fa" >}} +{{< meshery-design-embed src="export-designs/embedded-design-account-recovery.js" id="embedded-design-f4d47d8d-0a16-46d3-ae79-829a1d16b2fa" >}} diff --git a/content/en/cloud/guides/integrations/github-actions/_index.md b/content/en/cloud/guides/integrations/github-actions/_index.md index d17b4e589ce..7ba4ab5c62f 100644 --- a/content/en/cloud/guides/integrations/github-actions/_index.md +++ b/content/en/cloud/guides/integrations/github-actions/_index.md @@ -29,7 +29,7 @@ Kanvas introduces the Kanvas Snapshot GitHub Actions, a tool that allows you to ### Configuring Kanvas Snapshots -For setup steps, see the [Kanvas Snapshots tutorial](/cloud/guides/tutorials/gitops-snapshots/). +For setup steps, see the [Kanvas Snapshots tutorial]({{< ref "cloud/guides/tutorials/gitops-snapshots.md" >}}). {{%pageinfo%}} The Kanvas GitHub App requires authorization to interact with your repositories. If you would like to use your GitHub user's personal access token, instead, [please let us know](https://cloud.layer5.io/support). {{%/pageinfo%}} diff --git a/content/en/cloud/guides/organizations/org-management/_index.md b/content/en/cloud/guides/organizations/org-management/_index.md index 8713f017a40..6cdcd860405 100644 --- a/content/en/cloud/guides/organizations/org-management/_index.md +++ b/content/en/cloud/guides/organizations/org-management/_index.md @@ -13,7 +13,7 @@ aliases: This guide covers creating new organizations, editing their details, inviting members, and deleting organizations when necessary. -![Organization Overview](/cloud/guides/organizations/org-management/org_overview.png) +![Organization Overview](images/org_overview.png) {{< alert title="Permissions Required" type="info" >}} Operations described on this page for managing your Organization typically require Organization Administrator or similar administrative roles. To understand the specific roles needed for each action, please refer to the [Default Permissions reference](https://docs.layer5.io/cloud/reference/default-permissions/). @@ -32,7 +32,7 @@ An Organization provides a way to structure your teams, users, and resource acce - Region (Optional): Choose the time zone for your Organization. - Add Organization Members (Optional): You can begin adding **existing** Layer5 Cloud users to your new Organization in this field. -Filling out new Organization details +Filling out new Organization details {{< alert type="info" title="Unable to Create More Organizations?" >}} If the "Add Organization" button is disabled, it means your current role does not permit creating additional Organizations. Only users with roles like Organization Administrator or Provider Administrator can create new Organizations. @@ -51,7 +51,7 @@ You can update your Organization's name, location, associated teams, branding, a - Logos: Upload specific logo versions for various display contexts by clicking the respective **"Upload"** buttons. - Invitations: Access a shareable link to invite users to your Organization. -Editing Organization Details +Editing Organization Details ## Using the Open Organization Invitation Link @@ -62,7 +62,7 @@ To invite multiple users to your organization at once, or to allow open sign-ups * Public Sign-ups: To let people sign up openly, for instance, by posting the link on a community page or another public resource. * Cross-Organizational Collaboration: To make it easy for collaborators from other organizations or external partners to join. -![Obtain Organization Invite Link](/cloud/guides/organizations/org-management/org_open_invite.gif) +![Obtain Organization Invite Link](images/org_open_invite.gif) {{< alert title="Inviting Users to Specific Teams" type="info" >}} If you want to invite users directly to a specific team within your organization, please refer to the documentation on [Open Team Invites](https://docs.layer5.io/cloud/concepts/identity-and-security/teams/) @@ -115,6 +115,6 @@ Avoid deleting an Organization if: 2. A confirmation modal will appear, requiring you to verify this action. 3. Click the "Delete" button to permanently remove the Organization. To abort the deletion, click "Cancel". -Delete Organization +Delete Organization [^1]: Existing users who click this invitation link might encounter a "Page not found" error. This is a temporary bug and is being addressed. diff --git a/content/en/cloud/guides/organizations/org-management/create_org.png b/content/en/cloud/guides/organizations/org-management/images/create_org.png similarity index 100% rename from content/en/cloud/guides/organizations/org-management/create_org.png rename to content/en/cloud/guides/organizations/org-management/images/create_org.png diff --git a/content/en/cloud/guides/organizations/org-management/delete_org.png b/content/en/cloud/guides/organizations/org-management/images/delete_org.png similarity index 100% rename from content/en/cloud/guides/organizations/org-management/delete_org.png rename to content/en/cloud/guides/organizations/org-management/images/delete_org.png diff --git a/content/en/cloud/guides/organizations/org-management/edit_org.png b/content/en/cloud/guides/organizations/org-management/images/edit_org.png similarity index 100% rename from content/en/cloud/guides/organizations/org-management/edit_org.png rename to content/en/cloud/guides/organizations/org-management/images/edit_org.png diff --git a/content/en/cloud/guides/organizations/org-management/org_open_invite.gif b/content/en/cloud/guides/organizations/org-management/images/org_open_invite.gif similarity index 100% rename from content/en/cloud/guides/organizations/org-management/org_open_invite.gif rename to content/en/cloud/guides/organizations/org-management/images/org_open_invite.gif diff --git a/content/en/cloud/guides/organizations/org-management/org_overview.png b/content/en/cloud/guides/organizations/org-management/images/org_overview.png similarity index 100% rename from content/en/cloud/guides/organizations/org-management/org_overview.png rename to content/en/cloud/guides/organizations/org-management/images/org_overview.png diff --git a/content/en/cloud/guides/organizations/org-management/navigating-organizations/index.md b/content/en/cloud/guides/organizations/org-management/navigating-organizations.md similarity index 98% rename from content/en/cloud/guides/organizations/org-management/navigating-organizations/index.md rename to content/en/cloud/guides/organizations/org-management/navigating-organizations.md index 33c15660b45..0234964d545 100644 --- a/content/en/cloud/guides/organizations/org-management/navigating-organizations/index.md +++ b/content/en/cloud/guides/organizations/org-management/navigating-organizations.md @@ -90,4 +90,4 @@ Your roles and permissions are organization-scoped. This means: - Administrative capabilities in one organization do not automatically grant administrative access in another. - Team memberships and their associated permissions are specific to each organization. -For more details about roles and permissions, see the [Roles documentation](/cloud/concepts/identity-and-security/roles/). +For more details about roles and permissions, see the [Roles documentation]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). diff --git a/content/en/cloud/guides/self-hosted/planning/_index.md b/content/en/cloud/guides/self-hosted/planning/_index.md index d0045f41e19..3b8643473e5 100644 --- a/content/en/cloud/guides/self-hosted/planning/_index.md +++ b/content/en/cloud/guides/self-hosted/planning/_index.md @@ -148,4 +148,4 @@ Layer5 acknowledges the importance of air-gapped deployments and ensures content Plan for comprehensive observability across your Layer5 Cloud deployment, including metrics, logs, tracing, dashboards, and alerting. Establish SLOs for latency, availability, and saturation; size telemetry storage appropriately; and ensure privacy and access controls for operational data. -See: [Monitoring](/cloud/guides/self-hosted/planning/monitoring/) +See: [Monitoring]({{< ref "cloud/guides/self-hosted/planning/monitoring.md" >}}) diff --git a/content/en/cloud/guides/self-hosted/planning/images/self-hosted-deployment.svg b/content/en/cloud/guides/self-hosted/planning/identity-services/images/self-hosted-deployment.svg similarity index 100% rename from content/en/cloud/guides/self-hosted/planning/images/self-hosted-deployment.svg rename to content/en/cloud/guides/self-hosted/planning/identity-services/images/self-hosted-deployment.svg diff --git a/content/en/cloud/guides/self-hosted/planning/identity-services.md b/content/en/cloud/guides/self-hosted/planning/identity-services/index.md similarity index 79% rename from content/en/cloud/guides/self-hosted/planning/identity-services.md rename to content/en/cloud/guides/self-hosted/planning/identity-services/index.md index d85ac0ce602..47b8822117f 100644 --- a/content/en/cloud/guides/self-hosted/planning/identity-services.md +++ b/content/en/cloud/guides/self-hosted/planning/identity-services/index.md @@ -9,19 +9,19 @@ aliases: --- -Layer5 Cloud offers a built-in identity provider (IDP), supporting OIDC for normal users and token-based authentication (access, ID, refresh tokens) for API clients with JSON Web Signature (JWS) for token signing. Layer5 Cloud users can sign-up via email and password in addition to social identity providers (Google and GitHub) via OAuth2. See [Getting Started with a Layer5 Account](/cloud/getting-started/getting-started-with-layer5-account/) for details. +Layer5 Cloud offers a built-in identity provider (IDP), supporting OIDC for normal users and token-based authentication (access, ID, refresh tokens) for API clients with JSON Web Signature (JWS) for token signing. Layer5 Cloud users can sign-up via email and password in addition to social identity providers (Google and GitHub) via OAuth2. See [Getting Started with a Layer5 Account]({{< ref "cloud/getting-started/getting-started-with-layer5-account.md" >}}) for details. Layer5 Cloud identity services include features such as account recovery, email verification, automatica social sign-in account linking, and multi-factor authentication (coming soon). {{< alert type="info" >}} -For more information, see [User Account Linking](/cloud/concepts/identity-and-security/users). +For more information, see [User Account Linking]({{< ref "cloud/concepts/identity-and-security/users/_index.md" >}}). {{< /alert >}} Layer5 Cloud is also working toward being the IDP for Layer5 by supporting OIDC. It will leverage social authentication with Google, GitHub, Twitter, and LinkedIn based on OIDC to authenticate normal users. After authentication, Layer5 Cloud will be able to generate the access token, ID token, and refresh token for normal users. Applications, on the other hand, will use client credential OAUTH2 to get an access token. The following diagram illustrates the architecture of Layer5 Cloud. -![self-hosted-deployment](../images/self-hosted-deployment.svg "image-center-no-shadow") +![self-hosted-deployment](images/self-hosted-deployment.svg "image-center-no-shadow") ## Identity providers and custom domains @@ -29,11 +29,11 @@ By default, every organization signs users in through your deployment's **shared ### Bring Your Own Credentials (BYOC) -An organization can optionally **bring its own credentials (BYOC)**: its own Google OAuth client and GitHub OAuth App. With BYOC, the upstream consent screen, the registered redirect URL, and the entire OAuth round trip carry the organization's own branding and stay on the organization's own domain. BYOC is enabled per organization by a [Provider Administrator](/cloud/concepts/identity-and-security/roles/#provider-admin-role); an organization owner then registers the OAuth client ID and secret. +An organization can optionally **bring its own credentials (BYOC)**: its own Google OAuth client and GitHub OAuth App. With BYOC, the upstream consent screen, the registered redirect URL, and the entire OAuth round trip carry the organization's own branding and stay on the organization's own domain. BYOC is enabled per organization by a [Provider Administrator]({{< ref "cloud/concepts/identity-and-security/roles/_index.md#provider-admin-role" >}}); an organization owner then registers the OAuth client ID and secret. ### When BYOC is optional vs. required -Whether BYOC is *optional* or *required* depends on your organization's [custom domain](/cloud/guides/self-hosted/white-labeling/#social-sign-in-on-a-custom-domain) and how it relates to the **base domain** (the registrable domain, or eTLD+1) of your deployment: +Whether BYOC is *optional* or *required* depends on your organization's [custom domain]({{< ref "cloud/guides/self-hosted/white-labeling/_index.md#social-sign-in-on-a-custom-domain" >}}) and how it relates to the **base domain** (the registrable domain, or eTLD+1) of your deployment: | Organization's domain | Default identity providers | BYOC | | --- | --- | --- | @@ -59,8 +59,8 @@ Organizations that share an identity provider sit within the same authentication The canonical host and on-eTLD custom hosts typically draw on the shared, central identity provider, so organizations reached through them are within one shared authentication boundary. An organization with its own (BYOC) identity provider is its own boundary, no matter how its host is named. The DNS shape of the host is not the boundary — the identity provider behind it is. -This is the authentication (host-class) view of the boundary. It composes with the **authorization** view — where each organization context independently scopes what a user is permitted to do via [keys](/cloud/concepts/identity-and-security/keys/), [keychains](/cloud/concepts/identity-and-security/keychains/), and [roles](/cloud/concepts/identity-and-security/roles/) — and with **granular** resource-access sharing that can cross organizations. For the complete picture of how these layers fit together, see [Identity and Security → Security Boundaries](/cloud/concepts/identity-and-security/#security-boundaries). +This is the authentication (host-class) view of the boundary. It composes with the **authorization** view — where each organization context independently scopes what a user is permitted to do via [keys]({{< ref "cloud/concepts/identity-and-security/keys.md" >}}), [keychains]({{< ref "cloud/concepts/identity-and-security/keychains.md" >}}), and [roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}) — and with **granular** resource-access sharing that can cross organizations. For the complete picture of how these layers fit together, see [Identity and Security → Security Boundaries]({{< ref "cloud/concepts/identity-and-security/_index.md#security-boundaries" >}}). {{< alert type="info" >}} -For the custom-domain setup walkthrough and the on-eTLD vs. off-eTLD distinction, see [White-labeling → Social sign-in on a custom domain](/cloud/guides/self-hosted/white-labeling/#social-sign-in-on-a-custom-domain). +For the custom-domain setup walkthrough and the on-eTLD vs. off-eTLD distinction, see [White-labeling → Social sign-in on a custom domain]({{< ref "cloud/guides/self-hosted/white-labeling/_index.md#social-sign-in-on-a-custom-domain" >}}). {{< /alert >}} diff --git a/content/en/cloud/guides/self-hosted/planning/images/kanvas-collaboration-networking.svg b/content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication/images/kanvas-collaboration-networking.svg similarity index 100% rename from content/en/cloud/guides/self-hosted/planning/images/kanvas-collaboration-networking.svg rename to content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication/images/kanvas-collaboration-networking.svg diff --git a/content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication.md b/content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication/index.md similarity index 94% rename from content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication.md rename to content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication/index.md index 7a51d9ca368..442983689e0 100644 --- a/content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication.md +++ b/content/en/cloud/guides/self-hosted/planning/peer-to-peer-communication/index.md @@ -20,7 +20,7 @@ Characteristics of the peer-to-peer communication include: - Very little server load - Not suited for a large amount of collaborators on a single document (each peer is connected to each other) -![kanvas-collaboration-networking](../images/kanvas-collaboration-networking.svg "image-center-no-shadow") +![kanvas-collaboration-networking](images/kanvas-collaboration-networking.svg "image-center-no-shadow") ### Default Configuration 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 42e33b126b4..aca35b2e36c 100644 --- a/content/en/cloud/guides/self-hosted/white-labeling/_index.md +++ b/content/en/cloud/guides/self-hosted/white-labeling/_index.md @@ -38,7 +38,7 @@ This example includes a custom branding with colors and full-sized logo. Layer5 Cloud supports customizing themes on a per organization basis. This includes the ability to upload your own logo and define your own color scheme. Your logo will be displayed in the top left corner of the dashboard. Both a full-sized logo and a logo mark are supported. -As an [Organization Administrator](/cloud/concepts/identity-and-security/roles/organization-roles/), you can add your organization's logo to the global navigation bar, which supports a large, horizontal logo for desktop users and a small, square logo for mobile users. The logo appears at the top of each user's window for all Layer5 Cloud pages within your organization. +As an [Organization Administrator]({{< ref "cloud/concepts/identity-and-security/roles/organization-roles.md" >}}), you can add your organization's logo to the global navigation bar, which supports a large, horizontal logo for desktop users and a small, square logo for mobile users. The logo appears at the top of each user's window for all Layer5 Cloud pages within your organization. {{% card header="Preference Example" footer="Example: Selection of theme" %}} This example shows how to customize through different themes @@ -141,7 +141,7 @@ To set up a www or custom subdomain, such as `www.example.com` or `meshery.examp In Layer5 Cloud, navigate to your Provider Organization. -Under your Organization name, click Edit. If you cannot click the "Edit" action, verify that you are a [Provider Administrator](/cloud/concepts/identity-and-security/roles). +Under your Organization name, click Edit. If you cannot click the "Edit" action, verify that you are a [Provider Administrator]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}). Under "Custom domain", type your custom domain, then click Save. This will create a server configuration that will require a reboot in order to take effect. @@ -191,10 +191,10 @@ Whether social sign-in (Google and GitHub) works on a custom domain depends on h - **Different base domain (fully-custom).** If the custom domain sits on a different base domain — for example you CNAME `meshery.yourcompany.com` to the hosted `cloud.layer5.io`, where `yourcompany.com` and `layer5.io` are different base domains — the secure social sign-in handshake cannot hand off between the two unrelated domains using the shared default identity providers. **Social sign-in on a fully-custom domain therefore requires your organization to bring its own identity provider credentials (BYOC)**: your own Google OAuth client and GitHub OAuth App, registered against your domain. {{< alert title="Social buttons are hidden until your own identity providers are configured" color="info" >}} -On a fully-custom domain **without** its own identity providers, the Google and GitHub buttons are **hidden** on the login and sign-up screens — they would otherwise lead to a sign-in that cannot complete. **Email-and-password sign-in and sign-up both remain fully available** — the **Log In / Sign Up** toggle stays visible, so new users can still register and existing users can still sign in. Only the social buttons are hidden. They reappear automatically once your organization configures its own identity providers. See [Identity Services](/cloud/guides/self-hosted/planning/identity-services/) for what BYOC is and when it is required. +On a fully-custom domain **without** its own identity providers, the Google and GitHub buttons are **hidden** on the login and sign-up screens — they would otherwise lead to a sign-in that cannot complete. **Email-and-password sign-in and sign-up both remain fully available** — the **Log In / Sign Up** toggle stays visible, so new users can still register and existing users can still sign in. Only the social buttons are hidden. They reappear automatically once your organization configures its own identity providers. See [Identity Services]({{< ref "cloud/guides/self-hosted/planning/identity-services/index.md" >}}) for what BYOC is and when it is required. {{< /alert >}} -The same base domain / different base domain split above is not only about whether social buttons appear — it also marks an **authentication boundary**. Organizations that share an identity provider (the canonical host and on-eTLD custom subdomains that use the shared, central provider) sit within the same authentication boundary, while an organization that brings its own (BYOC) provider is a distinct authentication boundary: **same identity provider source means the same security boundary**, regardless of how the host is named. See [Identity Services → The identity provider is the security boundary](/cloud/guides/self-hosted/planning/identity-services/#the-identity-provider-is-the-security-boundary) and [Identity and Security → Security Boundaries](/cloud/concepts/identity-and-security/#security-boundaries). +The same base domain / different base domain split above is not only about whether social buttons appear — it also marks an **authentication boundary**. Organizations that share an identity provider (the canonical host and on-eTLD custom subdomains that use the shared, central provider) sit within the same authentication boundary, while an organization that brings its own (BYOC) provider is a distinct authentication boundary: **same identity provider source means the same security boundary**, regardless of how the host is named. See [Identity Services → The identity provider is the security boundary]({{< ref "cloud/guides/self-hosted/planning/identity-services/index.md#the-identity-provider-is-the-security-boundary" >}}) and [Identity and Security → Security Boundaries]({{< ref "cloud/concepts/identity-and-security/_index.md#security-boundaries" >}}). ## Frequently asked questions about white labeling diff --git a/content/en/cloud/guides/tutorials/images/embedding-badges-modal.svg b/content/en/cloud/guides/tutorials/assigning-user-badges/images/embedding-badges-modal.svg similarity index 100% rename from content/en/cloud/guides/tutorials/images/embedding-badges-modal.svg rename to content/en/cloud/guides/tutorials/assigning-user-badges/images/embedding-badges-modal.svg diff --git a/content/en/cloud/guides/tutorials/assigning-user-badges.md b/content/en/cloud/guides/tutorials/assigning-user-badges/index.md similarity index 97% rename from content/en/cloud/guides/tutorials/assigning-user-badges.md rename to content/en/cloud/guides/tutorials/assigning-user-badges/index.md index f8d642677cc..956cccdbd0d 100755 --- a/content/en/cloud/guides/tutorials/assigning-user-badges.md +++ b/content/en/cloud/guides/tutorials/assigning-user-badges/index.md @@ -44,7 +44,7 @@ To share your badges on other social profiles, utilize the provided embedded cod 3. Copy the html or the markdown code by clicking the Embed Code icon 4. Paste the code in your site -{{< figure src="/cloud/guides/tutorials/images/embedding-badges-modal.svg" alt="Embedding-badges-modal">}} +{{< figure src="images/embedding-badges-modal.svg" alt="Embedding-badges-modal">}} ### FAQ - **Is there a limit to the number of badges that I can earn?** diff --git a/content/en/cloud/guides/tutorials/promoting-a-design.md b/content/en/cloud/guides/tutorials/promoting-a-design.md index e1cafe370cf..6d919d089b1 100644 --- a/content/en/cloud/guides/tutorials/promoting-a-design.md +++ b/content/en/cloud/guides/tutorials/promoting-a-design.md @@ -13,7 +13,7 @@ aliases: This guide walks through how Five promotes the `prod-deployment-v2` design from the `orbital-staging` workspace to `orbital-production`, with Zara Osei (Infrastructure Team Admin) approving the environment assignment. -See [Meet Five and the Cast](/cloud/getting-started/meet-five) for the full Orbital Labs narrative reference. +See [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) for the full Orbital Labs narrative reference. ## Overview @@ -69,7 +69,7 @@ If your organization requires Team Admin approval before production deployments, 3. She clicks **Approve** — the deployment proceeds to `prod-aws`. {{< alert type="info" title="Why does Zara need to approve?" >}} -The Infrastructure team's keychain grants `orbital-production` workspace access and `prod-aws` environment deployment rights only to members who have been explicitly granted those keys. Zara, as Team Admin, holds the approval authority for production environment assignments. See [Keychains](/cloud/concepts/identity-and-security/keychains/) for how this is configured. +The Infrastructure team's keychain grants `orbital-production` workspace access and `prod-aws` environment deployment rights only to members who have been explicitly granted those keys. Zara, as Team Admin, holds the approval authority for production environment assignments. See [Keychains]({{< ref "cloud/concepts/identity-and-security/keychains.md" >}}) for how this is configured. {{< /alert >}} ### Step 5 — Verify the deployment @@ -82,6 +82,6 @@ After approval: ## What's Next -- To give the Development team visibility into the production design (read-only), Five can share the design individually with Rex and Jordan. See [Sharing a Workspace](/cloud/guides/tutorials/sharing-a-workspace/). +- To give the Development team visibility into the production design (read-only), Five can share the design individually with Rex and Jordan. See [Sharing a Workspace]({{< ref "cloud/guides/tutorials/sharing-a-workspace.md" >}}). - To set up a parallel deployment to `prod-gcp`, Five repeats Steps 3–5 selecting `prod-gcp` as the environment. - To roll back, Five transfers `prod-deployment-v2` back to `orbital-staging` and deploys the previous version from there. diff --git a/content/en/cloud/guides/tutorials/sharing-a-workspace.md b/content/en/cloud/guides/tutorials/sharing-a-workspace.md index 1eebdc90b91..b0503f90f18 100644 --- a/content/en/cloud/guides/tutorials/sharing-a-workspace.md +++ b/content/en/cloud/guides/tutorials/sharing-a-workspace.md @@ -25,7 +25,7 @@ In your browser, go to [Layer5 Cloud](https://cloud.layer5.io). 4. Set the permission level — Five gives Rex **edit** access so he can deploy and modify the design. 5. Click **Send**. -![Flow for sharing designs](/cloud/concepts/catalog/images/Slide51.svg) +![Flow for sharing designs](../../../images/Slide51.svg) Rex receives an invitation and can now open `microservices-baseline` in the `orbital-dev` workspace. @@ -92,5 +92,5 @@ Someone you don't know might be viewing your design because: - Someone who can edit your design shared it further. {{< alert type="info" >}} -See [Meet Five and the Cast](/cloud/getting-started/meet-five) for the full Orbital Labs workspace and character reference. +See [Meet Five and the Cast]({{< ref "cloud/getting-started/meet-five/_index.md" >}}) for the full Orbital Labs workspace and character reference. {{< /alert >}} diff --git a/content/en/cloud/guides/workspaces/images/assign-designs-views.gif b/content/en/cloud/guides/workspaces/managing-workspaces/images/assign-designs-views.gif similarity index 100% rename from content/en/cloud/guides/workspaces/images/assign-designs-views.gif rename to content/en/cloud/guides/workspaces/managing-workspaces/images/assign-designs-views.gif diff --git a/content/en/cloud/guides/workspaces/images/assign-teams.gif b/content/en/cloud/guides/workspaces/managing-workspaces/images/assign-teams.gif similarity index 100% rename from content/en/cloud/guides/workspaces/images/assign-teams.gif rename to content/en/cloud/guides/workspaces/managing-workspaces/images/assign-teams.gif diff --git a/content/en/cloud/guides/workspaces/images/assign_environment.png b/content/en/cloud/guides/workspaces/managing-workspaces/images/assign_environment.png similarity index 100% rename from content/en/cloud/guides/workspaces/images/assign_environment.png rename to content/en/cloud/guides/workspaces/managing-workspaces/images/assign_environment.png diff --git a/content/en/cloud/guides/workspaces/images/create-workspace.gif b/content/en/cloud/guides/workspaces/managing-workspaces/images/create-workspace.gif similarity index 100% rename from content/en/cloud/guides/workspaces/images/create-workspace.gif rename to content/en/cloud/guides/workspaces/managing-workspaces/images/create-workspace.gif diff --git a/content/en/cloud/guides/workspaces/images/delete-workspace.gif b/content/en/cloud/guides/workspaces/managing-workspaces/images/delete-workspace.gif similarity index 100% rename from content/en/cloud/guides/workspaces/images/delete-workspace.gif rename to content/en/cloud/guides/workspaces/managing-workspaces/images/delete-workspace.gif diff --git a/content/en/cloud/guides/workspaces/images/edit-workspace.gif b/content/en/cloud/guides/workspaces/managing-workspaces/images/edit-workspace.gif similarity index 100% rename from content/en/cloud/guides/workspaces/images/edit-workspace.gif rename to content/en/cloud/guides/workspaces/managing-workspaces/images/edit-workspace.gif diff --git a/content/en/cloud/guides/workspaces/images/grid-view.png b/content/en/cloud/guides/workspaces/managing-workspaces/images/grid-view.png similarity index 100% rename from content/en/cloud/guides/workspaces/images/grid-view.png rename to content/en/cloud/guides/workspaces/managing-workspaces/images/grid-view.png diff --git a/content/en/cloud/guides/workspaces/images/security-audit.png b/content/en/cloud/guides/workspaces/managing-workspaces/images/security-audit.png similarity index 100% rename from content/en/cloud/guides/workspaces/images/security-audit.png rename to content/en/cloud/guides/workspaces/managing-workspaces/images/security-audit.png diff --git a/content/en/cloud/guides/workspaces/images/table-view.png b/content/en/cloud/guides/workspaces/managing-workspaces/images/table-view.png similarity index 100% rename from content/en/cloud/guides/workspaces/images/table-view.png rename to content/en/cloud/guides/workspaces/managing-workspaces/images/table-view.png diff --git a/content/en/cloud/guides/workspaces/managing-workspaces.md b/content/en/cloud/guides/workspaces/managing-workspaces/index.md similarity index 83% rename from content/en/cloud/guides/workspaces/managing-workspaces.md rename to content/en/cloud/guides/workspaces/managing-workspaces/index.md index 1c4f9623194..06a18632f79 100644 --- a/content/en/cloud/guides/workspaces/managing-workspaces.md +++ b/content/en/cloud/guides/workspaces/managing-workspaces/index.md @@ -11,10 +11,10 @@ aliases: This guide walks you through the practical steps of managing your Workspaces. Here, you'll learn how to create, edit, and delete Workspaces, as well as how to manage access by assigning teams and resources like Environments, Designs, and Views to them. -If you're new to the concept of Workspaces, we recommend starting with the [Workspaces Overview](/cloud/concepts/spaces/workspaces/) to understand what a Workspace is and how it relates to key components like Environments, Designs, and Teams. +If you're new to the concept of Workspaces, we recommend starting with the [Workspaces Overview]({{< ref "cloud/concepts/spaces/workspaces.md" >}}) to understand what a Workspace is and how it relates to key components like Environments, Designs, and Teams. {{< alert type="info" title="A Note on Permissions" >}} -Every action described in this guide is governed by roles and permissions. To see a detailed breakdown of what your assigned role allows you to do, please refer to the [Default Permissions](/cloud/reference/default-permissions/) documentation. +Every action described in this guide is governed by roles and permissions. To see a detailed breakdown of what your assigned role allows you to do, please refer to the [Default Permissions]({{< ref "cloud/reference/default-permissions.md" >}}) documentation. {{< /alert >}} ### View Workspaces @@ -25,14 +25,14 @@ The [Workspaces page](https://cloud.layer5.io/spaces/workspaces) is where you ca #### Grid View The grid view offers a card-based layout, perfect for quickly identifying workspaces at a glance. Each card displays essential information, and you can flip it to reveal management options like editing or deleting and get audit history. -![Grid view of workspaces showing card-based layout](/cloud/guides/workspaces/images/grid-view.png) +![Grid view of workspaces showing card-based layout](images/grid-view.png) #### Table View The table view provides a dense, list-based format that is ideal for managing a large number of workspaces. This view allows for sorting and gives you more control over the specific details you see. To customize the information displayed, click the **View Columns** icon and select the attributes you want to see, such as Owner ID or Created Date. -![Table view of workspaces showing list-based format with sorting options](/cloud/guides/workspaces/images/table-view.png) +![Table view of workspaces showing list-based format with sorting options](images/table-view.png) {{< alert type="info" title="Consistent Actions Across Views" >}} Both the grid and table views provide the same set of management capabilities. You can choose the layout that best fits your needs without losing any functionality. @@ -53,7 +53,7 @@ To create a workspace: 3. Enter a descriptive **Name** and an optional **Description**, then click **Save**. 4. Your new workspace will now appear on the page. -![Animation showing workspace creation process](/cloud/guides/workspaces/images/create-workspace.gif) +![Animation showing workspace creation process](images/create-workspace.gif) ### Edit a Workspace @@ -62,7 +62,7 @@ You can modify a workspace's name and description at any time after it has been - **From the Grid View:** Flip the workspace card, then click the **pencil icon**. - **From the Table View:** Click the **pencil icon** in the row of the workspace you wish to modify. -![Animation showing workspace editing process](/cloud/guides/workspaces/images/edit-workspace.gif) +![Animation showing workspace editing process](images/edit-workspace.gif) ### Delete a Workspace @@ -78,7 +78,7 @@ You can delete a single workspace or multiple workspaces at once. 1. Select the checkboxes on the cards of the workspaces you want to delete. 2. Click the **Delete** button that appears at the top of the page. -![Animation showing workspace deletion process](/cloud/guides/workspaces/images/delete-workspace.gif) +![Animation showing workspace deletion process](images/delete-workspace.gif) {{< alert type="info" title="Deletion Restrictions" >}} Meshery requires at least one workspace to exist within an organization at all times, so you cannot delete the last remaining workspace. @@ -100,7 +100,7 @@ When a Workspace is deleted: ### Assign Teams to a Workspace Assigning teams is the way you grant users access to a workspace. Once a team is assigned, its members can access all of the Designs, Views, and Environments linked to that workspace. -![Animation showing team assignment process](/cloud/guides/workspaces/images/assign-teams.gif) +![Animation showing team assignment process](images/assign-teams.gif) You can open the team management Dialog from either the grid or table view. @@ -118,14 +118,14 @@ Inside the assignment Dialog, you will see two lists: **Available Teams** on the 3. Click **Save** to apply your changes. {{< alert type="info" title="Team and Workspace Relationships" >}} -You can assign multiple teams to a single workspace, and a single team can also be a member of multiple workspaces. This provides flexible access control across your projects. For more restrictions, see [Workspaces documentation](/cloud/concepts/spaces/workspaces/). +You can assign multiple teams to a single workspace, and a single team can also be a member of multiple workspaces. This provides flexible access control across your projects. For more restrictions, see [Workspaces documentation]({{< ref "cloud/concepts/spaces/workspaces.md" >}}). {{< /alert >}} ### Link Environments to a Workspace -When you link an [Environment](/cloud/concepts/spaces/environments/) to a Workspace, you make all the connections (like those to Kubernetes clusters or databases) grouped within that Environment available. This means any team members with access to that Workspace can then deploy their applications or configurations to the resources. +When you link an [Environment]({{< ref "cloud/concepts/spaces/environments.md" >}}) to a Workspace, you make all the connections (like those to Kubernetes clusters or databases) grouped within that Environment available. This means any team members with access to that Workspace can then deploy their applications or configurations to the resources. The process of linking environments is almost the same as assigning teams. -![Animation showing environment assignment process](/cloud/guides/workspaces/images/assign_environment.png) +![Animation showing environment assignment process](images/assign_environment.png) {{< alert type="info" title="Many-to-Many Relationship" >}} An Environment can be linked to multiple Workspaces, and a Workspace can have multiple Environments. This allows you to share common environments across different projects. @@ -144,17 +144,17 @@ When you create a new Design, it is automatically added to your current Workspac 3. Use the arrow buttons to move the selected Design(s) or View(s) to the target workspace. 4. Click **Save**. -![Animation showing design and view assignment process](/cloud/guides/workspaces/images/assign-designs-views.gif) +![Animation showing design and view assignment process](images/assign-designs-views.gif) {{< alert type="info" title="Exclusive Ownership" >}} -A Design or View can only exist in one Workspace at a time. Moving it to a new Workspace will automatically remove it from its original location. For more detailed information, see [Workspaces documentation](/cloud/concepts/spaces/workspaces/). +A Design or View can only exist in one Workspace at a time. Moving it to a new Workspace will automatically remove it from its original location. For more detailed information, see [Workspaces documentation]({{< ref "cloud/concepts/spaces/workspaces.md" >}}). {{< /alert >}} ### View Recent Activity Meshery keeps a detailed audit log for each workspace, allowing you to track all significant events. This is useful for maintaining security and troubleshooting issues. -![Workspace audit log showing recent activity](/cloud/guides/workspaces/images/security-audit.png) +![Workspace audit log showing recent activity](images/security-audit.png) The activity log captures a variety of events, including: - The creation or deletion of the workspace. @@ -184,7 +184,7 @@ Think of a private workspace as your personal Google "My Drive." You can use it **3. Template Library** Create a separate, access-controlled Workspace to serve as your organization's internal, private template library. This is for storing non-public, organization-specific, or sensitive patterns. -> This practice complements the [public Catalog](/cloud/concepts/catalog/exploring-the-catalog/), which is used for sharing generic, non-sensitive designs with the community. A dedicated Organization Catalog feature is also planned for the future. +> This practice complements the [public Catalog]({{< ref "cloud/concepts/catalog/exploring-the-catalog/index.md" >}}), which is used for sharing generic, non-sensitive designs with the community. A dedicated Organization Catalog feature is also planned for the future. **4. The Team Space** @@ -202,7 +202,7 @@ For teams requiring strict separation between environments, this pattern is esse - **Access**: Access to the Design is determined by the Teams assigned to its new Workspace. - **Cross-Organization Transfers**: You can move a Design you own into a Workspace in a different Organization, provided you have the necessary permissions in the target Organization. -> A key restriction is that a user, even with a [Workspace Admin](/cloud/concepts/identity-and-security/roles/workspace-roles/) role, cannot manage a Design they **do not own**. This action requires [Organization Admin](/cloud/concepts/identity-and-security/roles/organization-roles/) or Organization Owner permissions. +> A key restriction is that a user, even with a [Workspace Admin]({{< ref "cloud/concepts/identity-and-security/roles/workspace-roles.md" >}}) role, cannot manage a Design they **do not own**. This action requires [Organization Admin]({{< ref "cloud/concepts/identity-and-security/roles/organization-roles.md" >}}) or Organization Owner permissions. #### 2. What can other users of a Workspace do with my design? Can they delete my design? @@ -220,7 +220,7 @@ Currently, it is **not possible** to receive direct notifications or see a colla No. A user with whom you share a private Design cannot re-share it with others. -> [learn more about sharing designs](/kanvas/designer/sharing/). +> [learn more about sharing designs]({{< ref "kanvas/designer/sharing/index.md" >}}). #### 6. Does a workspace have space limitations or file count limitations? @@ -228,7 +228,7 @@ Currently, there are no specific space or file count limitations for Workspaces. #### 7. How can I make my design publicly available, but read-only to other users? -To make a Design available to everyone but in a read-only state, you should **[Publish](/kanvas/designer/publishing-designs/)** it. A **Published** design can be viewed and cloned by any user, but the original cannot be edited by others. +To make a Design available to everyone but in a read-only state, you should **[Publish]({{< ref "kanvas/designer/publishing-designs/index.md" >}})** it. A **Published** design can be viewed and cloned by any user, but the original cannot be edited by others. #### 8. How do I share a private design with a specific team for collaboration? diff --git a/content/en/cloud/concepts/catalog/images/Slide51.svg b/content/en/cloud/images/Slide51.svg similarity index 100% rename from content/en/cloud/concepts/catalog/images/Slide51.svg rename to content/en/cloud/images/Slide51.svg diff --git a/static/images/five/1.svg b/content/en/cloud/images/five/1.svg similarity index 100% rename from static/images/five/1.svg rename to content/en/cloud/images/five/1.svg diff --git a/static/images/five/2.svg b/content/en/cloud/images/five/2.svg similarity index 100% rename from static/images/five/2.svg rename to content/en/cloud/images/five/2.svg diff --git a/static/images/five/layer5-five-mascot-means-business.svg b/content/en/cloud/images/five/layer5-five-mascot-means-business.svg similarity index 100% rename from static/images/five/layer5-five-mascot-means-business.svg rename to content/en/cloud/images/five/layer5-five-mascot-means-business.svg diff --git a/content/en/cloud/reference/api-reference/_index.md b/content/en/cloud/reference/api-reference/_index.md index 9810e1ca31c..bce8373ca5c 100644 --- a/content/en/cloud/reference/api-reference/_index.md +++ b/content/en/cloud/reference/api-reference/_index.md @@ -10,7 +10,7 @@ To create integrations, retrieve data, and automate your cloud native infrastruc ## Authenticating with the API -In order to authenticate to Layer5 Cloud's REST API, you need to generate and use a [security token](/cloud/concepts/identity-and-security/tokens/). Visit your [user account's security tokens](https://cloud.layer5.io/security/tokens) and generate a long-lived token. Security tokens remain valid until you revoke them, and you can issue as many as you need. +In order to authenticate to Layer5 Cloud's REST API, you need to generate and use a [security token]({{< ref "cloud/concepts/identity-and-security/tokens.md" >}}). Visit your [user account's security tokens](https://cloud.layer5.io/security/tokens) and generate a long-lived token. Security tokens remain valid until you revoke them, and you can issue as many as you need. To authenticate with the API, pass the token as a bearer token in the `Authorization` header. For example, in cURL: @@ -153,7 +153,7 @@ The following example demonstrate how to retrieve information from the Academy R ### Get the total number of registered learners in Academy -Use the Layer5 Cloud API to retrieve the *total* number of registered learners. Pass your [Security Token](https://docs.layer5.io/cloud/concepts/identity-and-security/tokens/) as a Bearer token in the `Authorization` header (as shown in [Authenticating with API](/cloud/reference/api-reference/#authenticating-with-the-api)). The response JSON includes an array of user objects. +Use the Layer5 Cloud API to retrieve the *total* number of registered learners. Pass your [Security Token](https://docs.layer5.io/cloud/concepts/identity-and-security/tokens/) as a Bearer token in the `Authorization` header (as shown in [Authenticating with API]({{< ref "cloud/reference/api-reference/_index.md#authenticating-with-the-api" >}})). The response JSON includes an array of user objects. {{< tabpane >}} diff --git a/content/en/cloud/reference/default-permissions.md b/content/en/cloud/reference/default-permissions.md index 2ca694b6101..26463c9edba 100644 --- a/content/en/cloud/reference/default-permissions.md +++ b/content/en/cloud/reference/default-permissions.md @@ -6,7 +6,7 @@ categories: [Identity] tags: [perms] --- -{{< alert title="Customizable Permissions" type="info" >}}Default permissions can be easily customized by simply creating your own [keychains](/cloud/concepts/identity-and-security/keychains/#keychains-management) and [roles](/cloud/concepts/identity-and-security/roles).{{< /alert >}} +{{< alert title="Customizable Permissions" type="info" >}}Default permissions can be easily customized by simply creating your own [keychains]({{< ref "cloud/concepts/identity-and-security/keychains.md#keychains-management" >}}) and [roles]({{< ref "cloud/concepts/identity-and-security/roles/_index.md" >}}).{{< /alert >}} **Legend:** diff --git a/content/en/contributing/contributing-to-docs.md b/content/en/contributing/contributing-to-docs.md index a6358edaaa7..83ea22ca220 100644 --- a/content/en/contributing/contributing-to-docs.md +++ b/content/en/contributing/contributing-to-docs.md @@ -167,13 +167,36 @@ You can override the default styles and add new ones: ### Image styling -By default, Markdown images are written like this: +### Link and asset paths + +Use Hugo `ref` when linking from one documentation page to another documentation page: + +```markdown +[About]({{}}) +``` + +For images and other assets that live next to `index.md` or `_index.md`, or inside that page bundle, use a normal relative path: ```markdown -![Alt text](/path/to/image.png) +![Alt text](images/example.png) ``` -These are rendered with: +If you need HTML for custom sizing, keep the same relative path: + +```html +Example description +``` + +For global shared assets that physically live under `static/`, use the `static` shortcode: + +```markdown +![Layer5 logo]({{}}) +``` + +Do not use the `static` shortcode for assets under `content/`. + +By default, Markdown images are rendered with: + * `max-width: 70%` of the viewport * `max-height: 80vh` of the viewport height * centered block layout @@ -181,14 +204,14 @@ These are rendered with: This default styling works well for most landscape (horizontal) images. However, if an image is very tall, narrow, or otherwise looks awkward, you can override the default by embedding raw HTML and specifying a custom size: ```html -Example description +Example description ``` If you want your image to include a caption for explanation or accessibility, you can use the `
` element: ```html
- Example description + Example description
Example: Control which layers of your design are visible using the Layers panel.
``` diff --git a/static/images/landing/discuss.png b/content/en/images/landing/discuss.png similarity index 100% rename from static/images/landing/discuss.png rename to content/en/images/landing/discuss.png diff --git a/content/en/kanvas/_index.md b/content/en/kanvas/_index.md index 0913c1fe65d..90e060f22d6 100755 --- a/content/en/kanvas/_index.md +++ b/content/en/kanvas/_index.md @@ -56,7 +56,7 @@ aliases: ## Understanding the Layer5 Ecosystem - +}}">
{{< svg name="cloud" >}}
@@ -88,16 +88,16 @@ Choose your mode of operation for Kanvas.
{{< cardpane >}} - + }}"> {{< card header="Designer" >}} - Designer mode is for those who want to create their own Kanvas, using the palette of components. + }}">Designer mode is for those who want to create their own Kanvas, using the palette of components.

Drag-and-drop your cloud native infrastructure using a palette of thousands of versioned Kubernetes components.

Use context-aware relationships configure your infrastructure intuitively.

{{< /card >}} - + }}"> {{< card header="Operator" >}} - Operator mode is for operating your Kubernetes clusters and cloud native infrastructure. + }}">Operator mode is for operating your Kubernetes clusters and cloud native infrastructure.

Bring all your Kubernetes clusters under a common management. Deploy designs, apply patterns, manage and operate your deployments and services in real-time.

Interactively connect to pods and containers to debug and troubleshoot.

{{< /card >}} diff --git a/content/en/kanvas/advanced/autopan/index.md b/content/en/kanvas/advanced/autopan.md similarity index 88% rename from content/en/kanvas/advanced/autopan/index.md rename to content/en/kanvas/advanced/autopan.md index f84da1b84e0..e16d92d4b5f 100644 --- a/content/en/kanvas/advanced/autopan/index.md +++ b/content/en/kanvas/advanced/autopan.md @@ -97,19 +97,19 @@ Autopan is not a static decision taken when you load a design. Kanvas re-evaluat This is driven by the shared `useReactiveFeatureGate` hook in Kanvas's source, which any future feature gated by (user preference × render mode × graph size) can reuse. {{< alert type="note" title="When autopan is disabled automatically" >}} -If you are working on a large design and autopan seems to not kick in at the edge, check the [Render Modes](/kanvas/advanced/render-modes/) page. Your graph has probably exceeded the threshold for the current render mode and Kanvas has disabled autopan for performance. You can either switch to a lower-fidelity render mode — which raises the threshold — or pan manually for the remaining operations. +If you are working on a large design and autopan seems to not kick in at the edge, check the [Render Modes]({{< ref "kanvas/advanced/render-modes.md" >}}) page. Your graph has probably exceeded the threshold for the current render mode and Kanvas has disabled autopan for performance. You can either switch to a lower-fidelity render mode — which raises the threshold — or pan manually for the remaining operations. {{< /alert >}} ### Tuning autopan for your design If autopan is disabled on a design where you would like it to be active, you have three levers: -1. **Switch to a lower-fidelity render mode.** Wireframe and View-Only raise the threshold to 1,000 nodes. See the [Render Modes](/kanvas/advanced/render-modes/) page for what each mode costs and what it hides. -2. **Reduce the live listener count.** The [Layers Panel](/kanvas/advanced/performance/) 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. +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](/kanvas/advanced/render-modes/) — what each mode renders, what it hides, and how Adaptive Render Mode flips between them automatically. -- [Performance Limits and Tuning](/kanvas/advanced/performance/) — overall Kanvas performance envelope and the Layers Panel. -- [Design Render Quality](/kanvas/advanced/url-parameters/) — overriding the render mode via URL parameters (useful for snapshots and embeds). +- [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/layers-panel.png b/content/en/kanvas/advanced/performance/images/layers-panel.png similarity index 100% rename from content/en/kanvas/advanced/performance/layers-panel.png rename to content/en/kanvas/advanced/performance/images/layers-panel.png diff --git a/content/en/kanvas/advanced/performance/index.md b/content/en/kanvas/advanced/performance/index.md index 2a0e3ef1fda..a868d395935 100644 --- a/content/en/kanvas/advanced/performance/index.md +++ b/content/en/kanvas/advanced/performance/index.md @@ -43,11 +43,11 @@ Kanvas supports up to 1,000 relationships per design. Exceeding this limit can i #### Maximum Number of TagSet Relationships -![Labels and Annotations](../../designer/tagsets/group-components.png) +![Labels and Annotations](../../images/group-components.png) Tags are indexed and searchable. However, the performance of design operations may degrade as the number of tags increases. To ensure an optimal user experience, we recommend using tags judiciously and limiting the number of tags used in a design. -Upon loading a design exceeds that exceeds 20 tags within a single design, Kanvas will automatically disable grouping by tags. You can manually enable grouping by tags by clicking the "Group Components" button in the Designer dock. For more information, see [Working with Tags](/kanvas/designer/tagsets/). +Upon loading a design exceeds that exceeds 20 tags within a single design, Kanvas will automatically disable grouping by tags. You can manually enable grouping by tags by clicking the "Group Components" button in the Designer dock. For more information, see [Working with Tags]({{< ref "kanvas/designer/tagsets/index.md" >}}). @@ -102,14 +102,14 @@ To copy and paste: ### Use the Right-Click Menu 1. Right-click on the canvas and select Select All Components. - ![copy-paste-rightclick-select](/kanvas/getting-started/images/working-with-components/copy-paste-rightclick-select.png) + ![copy-paste-rightclick-select](images/working-with-components/copy-paste-rightclick-select.png) 2. Right-click again and choose Paste or press CMD+V (Mac) or CTRL+V (Windows) to paste the copied components. - ![copy-paste-rightclick-paste](/kanvas/getting-started/images/working-with-components/copy-paste-rightclick-paste.png) + ![copy-paste-rightclick-paste](images/working-with-components/copy-paste-rightclick-paste.png) ### Use the Save As Option 1. Go to the design toolbar and select Save As. - ![copy-paste-save](/kanvas/getting-started/images/working-with-components/copy-paste-save.png) + ![copy-paste-save](images/working-with-components/copy-paste-save.png) 2. A copy of all components will be saved in your new design file, which you can then paste into another design. diff --git a/content/en/kanvas/designer/tagsets/group-components.png b/content/en/kanvas/images/group-components.png similarity index 100% rename from content/en/kanvas/designer/tagsets/group-components.png rename to content/en/kanvas/images/group-components.png diff --git a/content/en/kanvas/operator/_index.md b/content/en/kanvas/operator/_index.md index 4bb2a4ecba3..4d5c38730d0 100644 --- a/content/en/kanvas/operator/_index.md +++ b/content/en/kanvas/operator/_index.md @@ -24,5 +24,5 @@ Using the search bar, you can search for specific resources and select them. The Operator supports connecting to Kubernetes pods via the following methods. -- [Log Streaming](/kanvas/operator/log-streaming): Learn how to live-tail logs from your Kubernetes pods and containers directly within the visual topology. -- [Interactive Terminal](/kanvas/operator/interactive-terminal): Learn how to establish an interactive shell session with your containers. +- [Log Streaming]({{< ref "kanvas/operator/log-streaming/index.md" >}}): Learn how to live-tail logs from your Kubernetes pods and containers directly within the visual topology. +- [Interactive Terminal]({{< ref "kanvas/operator/interactive-terminal/index.md" >}}): Learn how to establish an interactive shell session with your containers. diff --git a/static/images/interactive-terminal-sequence-diagram.svg b/content/en/kanvas/operator/interactive-terminal/images/interactive-terminal-sequence-diagram.svg similarity index 100% rename from static/images/interactive-terminal-sequence-diagram.svg rename to content/en/kanvas/operator/interactive-terminal/images/interactive-terminal-sequence-diagram.svg diff --git a/content/en/kanvas/operator/interactive-terminal.md b/content/en/kanvas/operator/interactive-terminal/index.md similarity index 93% rename from content/en/kanvas/operator/interactive-terminal.md rename to content/en/kanvas/operator/interactive-terminal/index.md index 6a7a14e1e7c..1bad4d4f9c2 100644 --- a/content/en/kanvas/operator/interactive-terminal.md +++ b/content/en/kanvas/operator/interactive-terminal/index.md @@ -71,11 +71,11 @@ While using the interactive terminal, understand that you can only open one sess -![interactive-terminal-sequence-diagram](/images/interactive-terminal-sequence-diagram.svg) +![interactive-terminal-sequence-diagram](images/interactive-terminal-sequence-diagram.svg) *** ### See Also -* **[Log Streaming](/kanvas/operator/log-streaming):** Learn how to live-tail logs for real-time application monitoring. - +* **[Log Streaming]({{< ref "kanvas/operator/log-streaming/index.md" >}}):** Learn how to live-tail logs for real-time application monitoring. + diff --git a/static/images/log-stream-sequence-diagram.svg b/content/en/kanvas/operator/log-streaming/images/log-stream-sequence-diagram.svg similarity index 100% rename from static/images/log-stream-sequence-diagram.svg rename to content/en/kanvas/operator/log-streaming/images/log-stream-sequence-diagram.svg diff --git a/content/en/kanvas/operator/log-streaming.md b/content/en/kanvas/operator/log-streaming/index.md similarity index 92% rename from content/en/kanvas/operator/log-streaming.md rename to content/en/kanvas/operator/log-streaming/index.md index 24df41294d7..a085d8e6470 100644 --- a/content/en/kanvas/operator/log-streaming.md +++ b/content/en/kanvas/operator/log-streaming/index.md @@ -60,11 +60,11 @@ 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) +![log-stream-sequence-diagram](images/log-stream-sequence-diagram.svg) *** ### See Also -* **[Interactive Terminal](/kanvas/terminal):** Learn how to establish an interactive shell session with your containers. -* **[Performance Management](/kanvas/performance):** Run ad-hoc performance tests alongside your log monitoring. +* **[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/kanvas/operator/images/operator-container-details.png b/content/en/kanvas/operator/resource-details/images/operator-container-details.png similarity index 100% rename from content/en/kanvas/operator/images/operator-container-details.png rename to content/en/kanvas/operator/resource-details/images/operator-container-details.png diff --git a/content/en/kanvas/operator/images/operator-node-details.png b/content/en/kanvas/operator/resource-details/images/operator-node-details.png similarity index 100% rename from content/en/kanvas/operator/images/operator-node-details.png rename to content/en/kanvas/operator/resource-details/images/operator-node-details.png diff --git a/content/en/kanvas/operator/resource-details.md b/content/en/kanvas/operator/resource-details/index.md similarity index 86% rename from content/en/kanvas/operator/resource-details.md rename to content/en/kanvas/operator/resource-details/index.md index cc8d9c8ed03..d86f065be57 100644 --- a/content/en/kanvas/operator/resource-details.md +++ b/content/en/kanvas/operator/resource-details/index.md @@ -14,13 +14,13 @@ Depending on the type of resource selected, the Instance Details tab will displa
{{< cardpane >}} {{< card header="Node Details" >}} - Example description + Example description

Example: Kubernetes Node details.

{{< /card >}} {{< card header="Container Details" >}} - Example description + Example description

Example: Kubernetes Pod Container details.

{{< /card >}} diff --git a/content/en/kanvas/operator/images/ActionsIcon.png b/content/en/kanvas/operator/views/images/ActionsIcon.png similarity index 100% rename from content/en/kanvas/operator/images/ActionsIcon.png rename to content/en/kanvas/operator/views/images/ActionsIcon.png diff --git a/content/en/kanvas/operator/images/DeleteView.png b/content/en/kanvas/operator/views/images/DeleteView.png similarity index 100% rename from content/en/kanvas/operator/images/DeleteView.png rename to content/en/kanvas/operator/views/images/DeleteView.png diff --git a/content/en/kanvas/operator/images/ExportView2.png b/content/en/kanvas/operator/views/images/ExportView2.png similarity index 100% rename from content/en/kanvas/operator/images/ExportView2.png rename to content/en/kanvas/operator/views/images/ExportView2.png diff --git a/content/en/kanvas/operator/images/SaveView.png b/content/en/kanvas/operator/views/images/SaveView.png similarity index 100% rename from content/en/kanvas/operator/images/SaveView.png rename to content/en/kanvas/operator/views/images/SaveView.png diff --git a/content/en/kanvas/operator/images/ShareModal.PNG b/content/en/kanvas/operator/views/images/ShareModal.PNG similarity index 100% rename from content/en/kanvas/operator/images/ShareModal.PNG rename to content/en/kanvas/operator/views/images/ShareModal.PNG diff --git a/content/en/kanvas/operator/images/ShareView.png b/content/en/kanvas/operator/views/images/ShareView.png similarity index 100% rename from content/en/kanvas/operator/images/ShareView.png rename to content/en/kanvas/operator/views/images/ShareView.png diff --git a/content/en/kanvas/operator/images/ViewInfo.png b/content/en/kanvas/operator/views/images/ViewInfo.png similarity index 100% rename from content/en/kanvas/operator/images/ViewInfo.png rename to content/en/kanvas/operator/views/images/ViewInfo.png diff --git a/content/en/kanvas/operator/images/Views.svg b/content/en/kanvas/operator/views/images/Views.svg similarity index 100% rename from content/en/kanvas/operator/images/Views.svg rename to content/en/kanvas/operator/views/images/Views.svg diff --git a/content/en/kanvas/operator/images/Visibility.png b/content/en/kanvas/operator/views/images/Visibility.png similarity index 100% rename from content/en/kanvas/operator/images/Visibility.png rename to content/en/kanvas/operator/views/images/Visibility.png diff --git a/content/en/kanvas/operator/views.md b/content/en/kanvas/operator/views/index.md similarity index 82% rename from content/en/kanvas/operator/views.md rename to content/en/kanvas/operator/views/index.md index 58ac73d3157..d990630753b 100644 --- a/content/en/kanvas/operator/views.md +++ b/content/en/kanvas/operator/views/index.md @@ -8,7 +8,7 @@ categories: [Operator] The Views tab is located on the right side of the screen just beside the Details tab in Kanvas Operator. It allows you to see all containers the present in your Kubernetes cluster. Think of views for Operator mode as you would design for the Designer mode. -![Operator Views](/kanvas/operator/images/Views.svg) +![Operator Views](images/Views.svg) ## Managing Views @@ -18,13 +18,13 @@ Here's what you can do with views in Operator: To save a view, simply give your view a title in the Name field at the top of the canvas. Any changes made to the view will be automatically saved. Alternatively, click on the "Save as" button at the top of the canvas. A modal will pop up for you to give your view a name and save it. -![Save a view](/kanvas/operator/images/SaveView.png) +![Save a view](images/SaveView.png) ### 2. Set view visibility You can choose to set your views to be either public or private. When views are set as public, everyone within your workspace can access these views. Views set as private are visible only to the person who created the view, ie the owner. -![Set view visibility](/kanvas/operator/images/Visibility.png) +![Set view visibility](images/Visibility.png) ### 3. Share a view @@ -33,15 +33,15 @@ Here's what you can do with views in Operator: 1. Click on the actions icon to the right of the view you want to share. - ![Actions](/kanvas/operator/images/ActionsIcon.png) + ![Actions](images/ActionsIcon.png) 2. You'll find a list of actions. Share is the third icon from the left - ![Share a view](/kanvas/operator/images/ShareView.png) + ![Share a view](images/ShareView.png) 3. Click on the share icon to open up the share modal. - ![Share a view](/kanvas/operator/images/ShareModal.PNG) + ![Share a view](images/ShareModal.PNG) 4. Enter the name of the user you want to share a view with and set the view access. @@ -49,16 +49,16 @@ Here's what you can do with views in Operator: You can delete a view when you no longer have use of it. You can only delete a view that you created. Views created by others and made public cannot be deleted, except by the owner of that view. -![Delete a view](/kanvas/operator/images/DeleteView.png) +![Delete a view](images/DeleteView.png) ### 5. Export a view To export a view, click on the export icon in the actions list. The view will be downloaded to your device in json format. - ![Export a view](/kanvas/operator/images/ExportView2.png) + ![Export a view](images/ExportView2.png) ### 6. View info View info shows you the owner of the design, the view visibility (whether it's set to public or private), the date the design was created and the date it was last modified. If you're the owner of the view, you'll also see an input field where you can add notes about the design. - ![View Info](/kanvas/operator/images/ViewInfo.png) + ![View Info](images/ViewInfo.png) diff --git a/content/en/kanvas/reference/releases/v0.7.119-4.md b/content/en/kanvas/reference/releases/v0.7.119-4.md index a8d565143aa..c9e13236b58 100644 --- a/content/en/kanvas/reference/releases/v0.7.119-4.md +++ b/content/en/kanvas/reference/releases/v0.7.119-4.md @@ -6,12 +6,12 @@ prerelease: false toc_hide: true --- -## What's New -## 🔤 General -* Manually built and packaged graphql plugin. - -## 👨🏽‍💻 Contributors - -Thank you to our contributors for making this release possible: -@leecalcote +## What's New +## 🔤 General +* Manually built and packaged graphql plugin. + +## 👨🏽‍💻 Contributors + +Thank you to our contributors for making this release possible: +@leecalcote diff --git a/content/en/kanvas/reference/releases/v0.7.122-1.md b/content/en/kanvas/reference/releases/v0.7.122-1.md index aafc535a761..7b48d5c8885 100644 --- a/content/en/kanvas/reference/releases/v0.7.122-1.md +++ b/content/en/kanvas/reference/releases/v0.7.122-1.md @@ -6,31 +6,31 @@ prerelease: false toc_hide: true --- -## What's New -## 🔤 General -## 🖌️ Designer - -- [Modals] Enhance one of kanvas.new modals for self-hosting @leecalcote (#3003) -- fix height and width of the quick tip modal @amitamrutiya (#2997) -- update new empty kanvas svgs @amitamrutiya (#2996) -- build(deps-dev): bump eslint-plugin-react from 7.33.2 to 7.37.1 in /meshmap @dependabot (#2993) -- build(deps-dev): bump css-loader from 6.8.1 to 7.1.2 in /meshmap @dependabot (#2994) - -## 🐛 Bug Fixes - -- fix height and width of the quick tip modal @amitamrutiya (#2997) - -## 🧰 Maintenance - -- [CI] Add Checkout Repo @leecalcote (#3002) -- [CI] Enhance to use full base+extension versioning (Attempt #2) @leecalcote (#3001) -- [CI] Enhance to use full base+extension versioning @leecalcote (#3000) -- add extension version logic to release drafter w/singoff @Jougan-0 (#2999) -- uncomment go mod code w/singoff @Jougan-0 (#2998) -- build(deps-dev): bump eslint-plugin-react from 7.33.2 to 7.37.1 in /meshmap @dependabot (#2993) -- build(deps-dev): bump css-loader from 6.8.1 to 7.1.2 in /meshmap @dependabot (#2994) - -## 👨🏽‍💻 Contributors - -Thank you to our contributors for making this release possible: +## What's New +## 🔤 General +## 🖌️ Designer + +- [Modals] Enhance one of kanvas.new modals for self-hosting @leecalcote (#3003) +- fix height and width of the quick tip modal @amitamrutiya (#2997) +- update new empty kanvas svgs @amitamrutiya (#2996) +- build(deps-dev): bump eslint-plugin-react from 7.33.2 to 7.37.1 in /meshmap @dependabot (#2993) +- build(deps-dev): bump css-loader from 6.8.1 to 7.1.2 in /meshmap @dependabot (#2994) + +## 🐛 Bug Fixes + +- fix height and width of the quick tip modal @amitamrutiya (#2997) + +## 🧰 Maintenance + +- [CI] Add Checkout Repo @leecalcote (#3002) +- [CI] Enhance to use full base+extension versioning (Attempt #2) @leecalcote (#3001) +- [CI] Enhance to use full base+extension versioning @leecalcote (#3000) +- add extension version logic to release drafter w/singoff @Jougan-0 (#2999) +- uncomment go mod code w/singoff @Jougan-0 (#2998) +- build(deps-dev): bump eslint-plugin-react from 7.33.2 to 7.37.1 in /meshmap @dependabot (#2993) +- build(deps-dev): bump css-loader from 6.8.1 to 7.1.2 in /meshmap @dependabot (#2994) + +## 👨🏽‍💻 Contributors + +Thank you to our contributors for making this release possible: @Jougan-0, @aabidsofi19, @amitamrutiya, @dependabot, @dependabot[bot], @l5io and @leecalcote diff --git a/content/en/kanvas/getting-started/images/deploy-designs/clone-design.gif b/content/en/kanvas/tasks/designs/cloning-a-design/images/deploy-designs/clone-design.gif similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/clone-design.gif rename to content/en/kanvas/tasks/designs/cloning-a-design/images/deploy-designs/clone-design.gif diff --git a/content/en/kanvas/getting-started/images/deploy-designs/my-designs.gif b/content/en/kanvas/tasks/designs/cloning-a-design/images/deploy-designs/my-designs.gif similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/my-designs.gif rename to content/en/kanvas/tasks/designs/cloning-a-design/images/deploy-designs/my-designs.gif diff --git a/content/en/kanvas/tasks/designs/cloning-a-design.md b/content/en/kanvas/tasks/designs/cloning-a-design/index.md similarity index 98% rename from content/en/kanvas/tasks/designs/cloning-a-design.md rename to content/en/kanvas/tasks/designs/cloning-a-design/index.md index 4aab53cd9dc..bed62dfcc17 100644 --- a/content/en/kanvas/tasks/designs/cloning-a-design.md +++ b/content/en/kanvas/tasks/designs/cloning-a-design/index.md @@ -16,14 +16,14 @@ aliases: 3. Select a design from the list that appears in the panel. 4. A modal will pop up requesting you to clone (create a copy of) the design you’ve selected. -![Copy of a Design](/kanvas/getting-started/images/deploy-designs/clone-design.gif) +![Copy of a Design](images/deploy-designs/clone-design.gif) This will create a copy of the catalog item to a new design, now owned by you. 1. Click “clone” and a copy of the design will appear on your Kanvas canvas. You can then configure the design to suit your purposes. 2. To access your newly cloned design, click the three-shapes icon, then click through: Workspaces → My Workspaces → Explore Workspaces → My Designs. -![Copy of a Design](/kanvas/getting-started/images/deploy-designs/my-designs.gif) +![Copy of a Design](images/deploy-designs/my-designs.gif) You are now free to deploy it as it is or modify it further. diff --git a/content/en/kanvas/getting-started/images/deploy-designs/empty-ls.png b/content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/empty-ls.png similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/empty-ls.png rename to content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/empty-ls.png diff --git a/content/en/kanvas/getting-started/images/deploy-designs/error-code.png b/content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/error-code.png similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/error-code.png rename to content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/error-code.png diff --git a/content/en/kanvas/getting-started/images/deploy-designs/missing-ns.png b/content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/missing-ns.png similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/missing-ns.png rename to content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/missing-ns.png diff --git a/content/en/kanvas/getting-started/images/deploy-designs/notification-center.png b/content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/notification-center.png similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/notification-center.png rename to content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/notification-center.png diff --git a/content/en/kanvas/getting-started/images/deploy-designs/notification.png b/content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/notification.png similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/notification.png rename to content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/notification.png diff --git a/content/en/kanvas/getting-started/images/deploy-designs/success-deploy.png b/content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/success-deploy.png similarity index 100% rename from content/en/kanvas/getting-started/images/deploy-designs/success-deploy.png rename to content/en/kanvas/tasks/designs/deploying-designs/images/deploy-designs/success-deploy.png diff --git a/content/en/kanvas/tasks/designs/deploying-designs.md b/content/en/kanvas/tasks/designs/deploying-designs/index.md similarity index 96% rename from content/en/kanvas/tasks/designs/deploying-designs.md rename to content/en/kanvas/tasks/designs/deploying-designs/index.md index cfffd3b5220..344e7a23db4 100644 --- a/content/en/kanvas/tasks/designs/deploying-designs.md +++ b/content/en/kanvas/tasks/designs/deploying-designs/index.md @@ -19,17 +19,17 @@ aliases: 5. Click **Finish** -![success-deploy](/kanvas/getting-started/images/deploy-designs/success-deploy.png) +![success-deploy](images/deploy-designs/success-deploy.png) ### Deployment Errors 1. **Missing Namespace**: This error occurs when you attempt to create a Kubernetes resource without specifying a namespace. Kubernetes requires that all resources have an associated namespace. -![missing-ns](/kanvas/getting-started/images/deploy-designs/missing-ns.png) +![missing-ns](images/deploy-designs/missing-ns.png) 2. **Empty Label Selector**: This error indicates an empty label selector. -![empty-ls](/kanvas/getting-started/images/deploy-designs/empty-ls.png) +![empty-ls](images/deploy-designs/empty-ls.png) ### Troubleshooting Errors @@ -41,7 +41,7 @@ For the comprehensive list of error codes refer to [Error Code Reference](https: If you encounter persistent issues consider consulting the [Meshery Community forum](https://discuss.layer5.io/c/meshery/5) -![error-code](/kanvas/getting-started/images/deploy-designs/error-code.png) +![error-code](images/deploy-designs/error-code.png) ### Using the Notification Center for Troubleshooting @@ -53,9 +53,9 @@ The Notification Center in Meshery helps manage events during the deployment pro 1. Offers links to detailed documentation and guides for resolving common problems. 1. Keeps a log of past notifications, allowing you to track and review previous errors and their resolutions. -![notification](/kanvas/getting-started/images/deploy-designs/notification.png) +![notification](images/deploy-designs/notification.png) -![notification-center](/kanvas/getting-started/images/deploy-designs/notification-center.png) +![notification-center](images/deploy-designs/notification-center.png) By actively monitoring the Notification Center, you can promptly address issues as they arise, ensuring a smoother deployment process. Learn more about [Managing Events with the Notification Center](https://docs.meshery.io/guides/events-management). diff --git a/content/en/kanvas/getting-started/images/dry-running-designs/invalid-field-value-1.png b/content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/invalid-field-value-1.png similarity index 100% rename from content/en/kanvas/getting-started/images/dry-running-designs/invalid-field-value-1.png rename to content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/invalid-field-value-1.png diff --git a/content/en/kanvas/getting-started/images/dry-running-designs/invalid-field-value-2.png b/content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/invalid-field-value-2.png similarity index 100% rename from content/en/kanvas/getting-started/images/dry-running-designs/invalid-field-value-2.png rename to content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/invalid-field-value-2.png diff --git a/content/en/kanvas/getting-started/images/dry-running-designs/missing-field.png b/content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/missing-field.png similarity index 100% rename from content/en/kanvas/getting-started/images/dry-running-designs/missing-field.png rename to content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/missing-field.png diff --git a/content/en/kanvas/getting-started/images/dry-running-designs/missing-resource.png b/content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/missing-resource.png similarity index 100% rename from content/en/kanvas/getting-started/images/dry-running-designs/missing-resource.png rename to content/en/kanvas/tasks/designs/dry-running-a-design/images/dry-running-designs/missing-resource.png diff --git a/content/en/kanvas/tasks/designs/dry-running-a-design.md b/content/en/kanvas/tasks/designs/dry-running-a-design/index.md similarity index 80% rename from content/en/kanvas/tasks/designs/dry-running-a-design.md rename to content/en/kanvas/tasks/designs/dry-running-a-design/index.md index c4b8631332c..1122f672404 100644 --- a/content/en/kanvas/tasks/designs/dry-running-a-design.md +++ b/content/en/kanvas/tasks/designs/dry-running-a-design/index.md @@ -29,15 +29,15 @@ A dry run in Meshery simulates the deployment of your design in the selected tar This error indicates that a field has an invalid value. For example, when configuring a Kubernetes Service, the fields `spec.ports[0].port` and `spec.ports[0].targetPort` may have invalid values of 0. These values must be between 1 and 65535, inclusive. -![Invalid Field Value Error](/kanvas/getting-started/images/dry-running-designs/invalid-field-value-1.png) +![Invalid Field Value Error](images/dry-running-designs/invalid-field-value-1.png) -![Invalid Field Value Details](/kanvas/getting-started/images/dry-running-designs/invalid-field-value-2.png) +![Invalid Field Value Details](images/dry-running-designs/invalid-field-value-2.png) ### Missing Required Field This error occurs when a required field in the configuration has not been provided. Ensure all required fields are properly configured before running the dry run. -![Missing Required Field Error](/kanvas/getting-started/images/dry-running-designs/missing-field.png) +![Missing Required Field Error](images/dry-running-designs/missing-field.png) ### Missing Dependencies @@ -45,4 +45,4 @@ This error occurs because a Kubernetes Custom Resource Definition (CRD) should h To resolve this, ensure that all necessary dependencies, such as CRDs, are deployed before deploying the components that rely on them. -![Missing Dependencies Error](/kanvas/getting-started/images/dry-running-designs/missing-resource.png) +![Missing Dependencies Error](images/dry-running-designs/missing-resource.png) diff --git a/content/en/kanvas/getting-started/images/undeploying-designs/undeploy.png b/content/en/kanvas/tasks/designs/undeploying-designs/images/undeploying-designs/undeploy.png similarity index 100% rename from content/en/kanvas/getting-started/images/undeploying-designs/undeploy.png rename to content/en/kanvas/tasks/designs/undeploying-designs/images/undeploying-designs/undeploy.png diff --git a/content/en/kanvas/tasks/designs/undeploying-designs.md b/content/en/kanvas/tasks/designs/undeploying-designs/index.md similarity index 99% rename from content/en/kanvas/tasks/designs/undeploying-designs.md rename to content/en/kanvas/tasks/designs/undeploying-designs/index.md index 9802faadefe..3b7be6ca135 100644 --- a/content/en/kanvas/tasks/designs/undeploying-designs.md +++ b/content/en/kanvas/tasks/designs/undeploying-designs/index.md @@ -15,7 +15,7 @@ To undeploy the resources 2. Click on the **Undeploy** icon. -![undeploying designs](/kanvas/getting-started/images/undeploying-designs/undeploy.png) +![undeploying designs](images/undeploying-designs/undeploy.png)