diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 17e407652..e472804c7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,19 +1,25 @@ -# Contributing Overview +# Contributing Overview + Please do! Thanks for your help improving the project! :balloon: All contributors are welcome. Please see the [newcomers welcome guide](https://layer5.io/community/newcomers) for how, where and why to contribute. This project is community-built and welcomes collaboration. Contributors are expected to adhere to our [Code of Conduct](CODE_OF_CONDUCT.md). -Not sure where to start? First, see the [newcomers welcome guide](https://layer5.io/community/newcomers). Grab an open issue with the [help-wanted label](../../labels/help%20wanted) and jump in. Join the [Slack account](http://slack.layer5.io) and engage in conversation. Create a [new issue](/../../issues/new/choose) if needed. All [pull requests](/../../pulls) should reference an open [issue](/../../issues). Include keywords in your pull request descriptions, as well as commit messages, to [automatically close issues in GitHub](https://help.github.com/en/github/managing-your-work-on-github/closing-issues-using-keywords). +Not sure where to start? First, see the [newcomers welcome guide](https://layer5.io/community/newcomers). Grab an open issue with the [help-wanted label](../../labels/help%20wanted) and jump in. Join the [Slack account](http://slack.layer5.io) and engage in conversation. Create a [new issue](/../../issues/new/choose) if needed. All [pull requests](/../../pulls) should reference an open [issue](/../../issues). Include keywords in your pull request descriptions, as well as commit messages, to [automatically close issues in GitHub](https://help.github.com/en/github/managing-your-work-on-github/closing-issues-using-keywords). + +## Table of Contents + +- [General Contribution Flow](#general-contribution-flow) +- [Prerequisites](#prerequisites) +- [Set up your Local Development Environment](#set-up-your-local-development-environment) +- [Documentation Contribution Flow](#documentation-contribution-flow) +- [Signing-off on Commits](#signing-off-on-commits) +- [Reviews](#reviews) -**Sections** -- General Contribution Flow - - Prerequisites - - Set up your Local Development Environment - - Developer Certificate of Origin +## Coding Style Guidelines Relevant coding style guidelines are the Go Code Review Comments and the Formatting and style section of Peter Bourgon's Go: Best Practices for Production Environments. -# General Contribution Flow +## General Contribution Flow In order to contribute to Layer5 docs, please follow the fork-and-pull request workflow described [here](./CONTRIBUTING-gitflow.md). @@ -21,247 +27,236 @@ In order to contribute to Layer5 docs, please follow the fork-and-pull request w Make sure you have the following prerequisites installed on your operating system before you start contributing: -- [Nodejs and npm](https://nodejs.org/en/) - - To verify run: - - ``` - node -v - ``` +### Node.js and npm - ``` - npm -v - ``` +To verify installation: -- [Go](https://go.dev/doc/install) - - To verify run: - - ``` - go version - ``` +```bash +node -v +npm -v +``` -- [Hugo](https://gohugo.io/installation/) +### Go +To verify installation: - - Install a recent release of the Hugo "extended" version. If you install from - the [Hugo release page](https://github.com/gohugoio/hugo/releases), make sure - you download the `extended` version, which supports SCSS. +```bash +go version +``` - To verify run: +### Hugo - ``` - hugo version - ``` +Install a recent release of the Hugo "extended" version. If you install from the [Hugo release page](https://github.com/gohugoio/hugo/releases), make sure you download the `extended` version, which supports SCSS. - - Install `PostCSS` so that the site build can create the final CSS assets. You - can install it locally by running the following commands from the root - directory of your project: +To verify installation: - ```sh - npm install --save-dev autoprefixer - npm install --save-dev postcss-cli - ``` +```bash +hugo version +``` - Starting in - [version 8 of `postcss-cli`](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md), - you must also separately install `postcss`: +### PostCSS - ```sh - npm install -D postcss - ``` +Install PostCSS so that the site build can create the final CSS assets. You can install it locally by running the following commands from the root directory of your project: -**Note:** If you're on a _Windows environment_ then it is highly recommended that you install [Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/en-us/windows/wsl/install) both for performance and ease of use. +```bash +npm install --save-dev autoprefixer +npm install --save-dev postcss-cli +npm install -D postcss +``` +**Note:** If you're on a Windows environment, it is highly recommended that you install [Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/en-us/windows/wsl/install) for both performance and ease of use. ## Set up your Local Development Environment -Follow the following instructions to start contributing. +Follow these instructions to start contributing: **1.** Fork [this](https://github.com/layer5io/docs) repository. -**2.** Clone your forked copy of the project. +**2.** Clone your forked copy of the project: -``` +```bash git clone --depth=1 https://github.com//docs.git ``` -**3.** Navigate to the project directory. +**3.** Navigate to the project directory: -``` +```bash cd docs ``` -**4.** Add a reference(remote) to the original repository. +**4.** Add a reference (remote) to the original repository: -``` +```bash git remote add upstream https://github.com/layer5io/docs.git ``` -**5.** Check the remotes for this repository. +**5.** Check the remotes for this repository: -``` +```bash git remote -v ``` -**6.** Always take a pull from the upstream repository to your master branch to keep it at par with the main project (updated repository). +**6.** Always take a pull from the upstream repository to your master branch to keep it at par with the main project (updated repository): -``` +```bash git pull upstream master ``` -**7.** Create a new branch. +**7.** Create a new branch: -``` +```bash git checkout -b ``` -**8.** Install the dependencies for running the site. +**8.** Install the dependencies for running the site: -``` +```bash make setup ``` **9.** Make the desired changes. -**10.** Run the site locally to preview changes. +**10.** Run the site locally to preview changes: -``` +```bash make site ``` -This will run a local webserver with "live reload" conveniently enabled. ( **NOTE**: while using the make command on Windows, there sometimes arises an error in identifying the command even after it is installed (unrecognized command), this is because the PATH for the binary might not be set correctly ). +This will run a local webserver with "live reload" conveniently enabled. -**11.** Track your changes. +**Note:** While using the make command on Windows, there sometimes arises an error in identifying the command even after it is installed (unrecognized command). This is because the PATH for the binary might not be set correctly. -``` +**11.** Track your changes: + +```bash git add . ``` -**12.** Commit your changes. To contribute to this project, you must agree to the [Developer Certificate of Origin (DCO)](#signing-off-on-commits) for each commit you make. +**12.** Commit your changes. To contribute to this project, you must agree to the [Developer Certificate of Origin (DCO)](#signing-off-on-commits) for each commit you make: -``` +```bash git commit --signoff -m "" ``` -or you could go with the shorter format for the same, as shown below. +Or use the shorter format: -``` +```bash git commit -s -m "" ``` -**13.** While you are working on your branch, other developers may update the `master` branch with their branch. This action means your branch is now out of date with the `master` branch and missing content. So to fetch the new changes, follow along: +**13.** While you are working on your branch, other developers may update the `master` branch with their changes. This means your branch is now out of date with the `master` branch and missing content. To fetch the new changes: -``` +```bash git checkout master git fetch origin master git merge upstream/master git push origin ``` -Now you need to merge the `master` branch into your branch. This can be done in the following way: +Now you need to merge the `master` branch into your branch: -``` +```bash git checkout git merge master ``` -**14.** Push the committed changes in your feature branch to your remote repo. +**14.** Push the committed changes in your feature branch to your remote repository: -``` +```bash git push -u origin ``` -**15.** Once you’ve committed and pushed all of your changes to GitHub, go to the page for your fork on GitHub, select your development branch, and click the pull request button. Please ensure that you compare your feature branch to the desired branch of the repo you are supposed to make a PR to. If you need to make any adjustments to your pull request, just push the updates to GitHub. Your pull request will automatically track the changes in your development branch and update it. +**15.** Once you've committed and pushed all of your changes to GitHub, go to the page for your fork on GitHub, select your development branch, and click the pull request button. Please ensure that you compare your feature branch to the desired branch of the repo you are supposed to make a PR to. If you need to make any adjustments to your pull request, just push the updates to GitHub. Your pull request will automatically track the changes in your development branch and update. -## Signing-off on Commits (Developer Certificate of Origin) +## Documentation Contribution Flow -To contribute to this project, you must agree to the Developer Certificate of -Origin (DCO) for each commit you make. The DCO is a simple statement that you, -as a contributor, have the legal right to make the contribution. +Please contribute! Layer5 documentation uses Jekyll and GitHub Pages to host docs sites. Learn more about [Layer5's documentation framework](https://docs.google.com/document/d/17guuaxb0xsfutBCzyj2CT6OZiFnMu9w4PzoILXhRXSo/edit?usp=sharing). The process of contributing follows this flow: -See the [DCO](https://developercertificate.org) file for the full text of what you must agree to -and how it works [here](https://github.com/probot/dco#how-it-works). -To signify that you agree to the DCO for contributions, you simply add a line to each of your -git commit messages: +1. Create a fork, if you have not already, by following the steps described [here](./CONTRIBUTING-gitflow.md) +2. In the local copy of your fork, navigate to the docs folder: `cd docs` +3. Create and checkout a new branch to make changes within: `git checkout -b ` +4. Edit/add documentation: `vi .md` +5. Run site locally to preview changes: `make site` +6. Commit, [sign-off](#signing-off-on-commits), and push changes to your remote branch: `git push origin ` +7. Open a pull request (in your web browser) against the repository -``` -Signed-off-by: Jane Smith -``` +### Tests -In most cases, you can add this signoff to your commit automatically with the -`-s` or `--signoff` flag to `git commit`. You must use your real name and a reachable email -address (sorry, no pseudonyms or anonymous contributions). An example of signing off on a commit: -``` -$ commit -s -m “my commit message w/signoff” -``` +Users can test their code on their local machine against the CI checks implemented using `make run-tests`. -To ensure all your commits are signed, you may choose to add this alias to your global ```.gitconfig```: +To test code changes on your local machine, run the following command: -*~/.gitconfig* +```bash +make run-tests ``` -[alias] - amend = commit -s --amend - cm = commit -s -m - commit = commit -s + +### Building Docker Image + +To build a Docker image of the project, please ensure you have `Docker` installed to be able to build the image. Now, run the following command to build and serve the files locally: + +> **Important:** This requires Docker Desktop version **4.24** or later, or Docker Engine with Docker Compose version [**2.22**](https://docs.docker.com/compose/file-watch/) or later. + +```bash +make docker ``` -Or you may configure your IDE, for example, Visual Studio Code to automatically sign-off commits for you: - +### UI Lint Rules -## Documentation Contribution Flow -Please contribute! Layer5 documentation uses Jekyll and GitHub Pages to host docs sites. Learn more about [Layer5's documentation framework](https://docs.google.com/document/d/17guuaxb0xsfutBCzyj2CT6OZiFnMu9w4PzoILXhRXSo/edit?usp=sharing). The process of contributing follows this flow: +Layer5 uses ES-Lint to maintain code quality and consistency in our UI Code. -1. Create a fork, if you have not already, by following the steps described [here](./CONTRIBUTING-gitflow.md) -1. In the local copy of your fork, navigate to the docs folder. -`cd docs` -1. Create and checkout a new branch to make changes within -`git checkout -b ` -1. Edit/add documentation. -`vi .md` -1. Run site locally to preview changes. -`make site` -1. Commit, [sign-off](#commit-signing), and push changes to your remote branch. -`git push origin ` -1. Open a pull request (in your web browser) against the repo. - - -#### Tests -Users can now test their code on their local machine against the CI checks implemented using `make run-tests`. +## Signing-off on Commits + +To contribute to this project, you must agree to the Developer Certificate of Origin (DCO) for each commit you make. The DCO is a simple statement that you, as a contributor, have the legal right to make the contribution. + +See the [DCO](https://developercertificate.org) file for the full text of what you must agree to and how it works [here](https://github.com/probot/dco#how-it-works). + +To signify that you agree to the DCO for contributions, you simply add a line to each of your git commit messages: -To test code changes on your local machine, run the following command: ``` -make run-tests +Signed-off-by: Jane Smith ``` -#### Building Docker image -To build a Docker image of the project, please ensure you have `Docker` installed to be able to build the image. Now, run the following command to build and serve the files locally.: +In most cases, you can add this signoff to your commit automatically with the `-s` or `--signoff` flag to `git commit`. You must use your real name and a reachable email address (sorry, no pseudonyms or anonymous contributions). -> [!IMPORTANT] -> This requires Docker Desktop version **4.24** or later, or Docker Engine with Docker -> Compose version [**2.22**](https://docs.docker.com/compose/file-watch/) or later. -```sh -make docker +An example of signing off on a commit: + +```bash +git commit -s -m "my commit message w/signoff" ``` -### UI Lint Rules +To ensure all your commits are signed, you may choose to add this alias to your global `.gitconfig`: -Layer5 uses ES-Lint to maintain code quality & consistency in our UI Code. +**~/.gitconfig** + +``` +[alias] + amend = commit -s --amend + cm = commit -s -m + commit = commit -s +``` + +Or you may configure your IDE, for example, Visual Studio Code to automatically sign-off commits for you: + + + +## Reviews -# Reviews All contributors are invited to review pull requests. See this short video on [how to review a pull request](https://www.youtube.com/watch?v=isLfo7jfE6g&feature=youtu.be). -# New to Git? +## New to Git? + Resources: https://lab.github.com and https://try.github.com/ -### License +## License This repository and site are available as open source under the terms of the [Apache 2.0 License](https://opensource.org/licenses/Apache-2.0). -### About Layer5 +## About Layer5 **Community First** -

The Layer5 community represents the largest collection of service mesh projects and their maintainers in the world.

+ +The [Layer5 community](https://layer5.io/community) represents the largest collection of service mesh projects and their maintainers in the world. **Open Source First** -

At Layer5, we champion developer-defined infrastructure, giving engineers the power to reshape application delivery. We empower operators in reimagining how they manage modern infrastructure: collaboratively.

+ +At Layer5, we champion developer-defined infrastructure, giving engineers the power to reshape application delivery. We empower operators in reimagining how they manage modern infrastructure: collaboratively. \ No newline at end of file diff --git a/README.md b/README.md index 9dc0a7274..d07b9be21 100644 --- a/README.md +++ b/README.md @@ -19,232 +19,463 @@

-

If you’re using Layer5 products or if you like the project, please this repository to show your support! 🤩

+

If you're using Layer5 products or if you like the project, please this repository to show your support! 🤩

-# About Layer5 +--- -[Layer5](https://layer5.io)'s cloud native application and infrastructure management software enables engineers to expect more from their infrastructure. We embrace _developer_-defined infrastructure. We empower developers to change how they write applications, support _operators_ in rethinking how they run modern infrastructure, and enable _product owners_ to regain full-control over their product portfolio. +## 📚 Table of Contents + +- [About Layer5](#about-layer5) +- [Documentation Overview](#documentation-overview) +- [Getting Started](#getting-started) + - [Running Locally with Golang](#with-golang) + - [Running Locally with Docker](#with-docker) +- [Documentation Structure](#layer5-documentation-structure) + - [Cloud Documentation](#cloud-docs) + - [Kanvas Documentation](#kanvas-docs) +- [Contributing](#contributing-to-layer5-docs) + - [Content Guidelines](#editing-markdown-content) + - [Working with Images](#uploading-images-to-the-site) + - [Using Alerts](#adding-alerts-to-the-site) +- [Community](#join-the-layer5-community) +- [License](#license) -## Contributions Welcome +--- -
-Layer5 Community -

-✔️ Join any or all of the weekly meetings on community calendar.
-✔️ Watch community meeting recordings.
-✔️ Access the Community Drive by completing a community Member Form.
-✔️ Discuss in the Community Forum.
-✔️ Explore more in the Community Handbook.
+## 🚀 About Layer5 + +[Layer5](https://layer5.io) is the enterprise-grade cloud native platform for engineering teams. Our cloud native application and infrastructure management software enables engineers to expect more from their infrastructure. + +### What We Do + +We embrace **developer-defined infrastructure** and empower teams to: + +- 🔧 **Developers** - Change how you write applications with cloud native patterns and practices +- ⚙️ **Operators** - Rethink how you run modern infrastructure with automated operations +- 📊 **Product Owners** - Regain full control over your product portfolio with comprehensive visibility + +### Key Products + +- **[Meshery](https://meshery.io)** - The cloud native manager for service meshes and beyond +- **[Kanvas](https://kanvas.layer5.io)** - Visual designer for cloud native infrastructure +- **[Layer5 Cloud](https://cloud.layer5.io)** - Collaborative platform for infrastructure management + +--- + +## 📖 Documentation Overview + +Welcome to the **Layer5 Documentation** repository! This site powers [docs.layer5.io](https://docs.layer5.io), providing comprehensive documentation and developer resources for all Layer5 products. + +

+ + Layer5 Documentation Website - Main Page Preview + +
+ Preview of the Layer5 Documentation main page

-
-Explore tutorials and documentation by product in the https://docs.layer5.io website; documentation and developer resources of Layer5 products. -If you find a typo or you feel like you can improve the HTML, CSS, or JavaScript, we welcome contributions. Feel free to open issues or pull requests like any normal GitHub project, and we'll merge it in 🚀 +### What You'll Find Here + +- **Tutorials** - Step-by-step guides for common tasks +- **Conceptual Guides** - Deep dives into architecture and design +- **Reference Documentation** - API references and technical specifications +- **Best Practices** - Recommended patterns and workflows + +### Target Audience + +Our documentation serves diverse personas with varying needs: + +| Persona | Focus Area | Documentation Needs | +|---------|-----------|-------------------| +| **Beginners** | Getting Started | Tutorials, quick starts, fundamentals | +| **Developers** | Integration & Customization | API docs, code examples, SDKs | +| **Operators** | Deployment & Management | Installation guides, operations, troubleshooting | +| **Security Specialists** | Security & Compliance | Security features, authentication, authorization | +| **Contributors** | Open Source Development | Contributing guides, architecture, development setup | + +--- + +## 🛠️ Getting Started + +Choose your preferred development environment to run the documentation site locally: ### With Golang -If your local development environment has a supported version (v1.21.0+) of Golang installed, next you'll need to install extended Hugo version as it has necessary SCSS/SASS support. Find all the Hugo packages here: +**Prerequisites:** +- Go v1.21.0 or higher +- Hugo Extended (v0.120.4 or higher) - [Download here](https://github.com/gohugoio/hugo/releases/tag/v0.120.4) -Now to setup and run the site locally run: +**Setup Steps:** + +1. **Clone the repository:** +```bash + git clone https://github.com/layer5io/docs.git + cd docs +``` -`make setup` followed by `make site` +2. **Install dependencies:** +```bash + make setup +``` + +3. **Run the development server:** +```bash + make site +``` -...and then visit . +4. **View the site:** + Open your browser to [http://localhost:1313](http://localhost:1313) -If you pull down new code from GitHub, you will occasionally need to run `make setup` again. Otherwise, there's no need to re-run `make setup` each time the site is run, you can just run `make site` to get it going and have it automatically reload as you make and save site edits. +**Note:** Run `make setup` after pulling new changes from GitHub. For subsequent runs, `make site` is sufficient. ### With Docker -Running the site locally is simple. Provided you have Docker installed, clone this repo, run `make docker`, and then visit . +**Prerequisites:** +- Docker Desktop v4.24+ or Docker Engine with Docker Compose v2.22+ -> [!IMPORTANT] -> This requires Docker Desktop version **4.24** or later, or Docker Engine with Docker -> Compose version [**2.22**](https://docs.docker.com/compose/file-watch/) or later. +**Quick Start:** +1. **Clone and run:** +```bash + git clone https://github.com/layer5io/docs.git + cd docs + make docker +``` -## Layer5 Documentation Structure +2. **View the site:** + Open your browser to [http://localhost:1313](http://localhost:1313) -## High-Level Outline & Information Architecture for Layer5 Documentation +> [!IMPORTANT] +> This requires Docker Desktop version **4.24** or later, or Docker Engine with Docker Compose version [**2.22**](https://docs.docker.com/compose/file-watch/) or later. -**Goal:** Offer comprehensive, organized, and accessible documentation for diverse audiences, from new users to expert contributors. +--- -**Target Audience:** +## 📋 Layer5 Documentation Structure -- **Personas:** Beginners, developers, admins, operators, security specialists, contributors, users of all experience levels. -- **Needs:** Varied - learning fundamentals, managing tasks, understanding advanced concepts, contributing code. +Our documentation is organized to provide comprehensive coverage across all Layer5 products and services.
-

Cloud Docs

+

☁️ Cloud Documentation

+ +#### Getting Started + +Learn the fundamentals of Layer5 Cloud: + +- **[Setting up Layer5 Account](https://docs.layer5.io/cloud/getting-started/setup)** - Create your personal account, import/create designs, collaborate through workspaces +- **[Creating Designs from Catalog](https://docs.layer5.io/cloud/getting-started/catalog)** - Use pre-built templates from the Meshery Catalog -### Getting Started +#### Core Concepts -- **Setting up Layer5 Account:** With a personal account on Layer5 Cloud, you can import or create infrastructural designs, collaborate with others through workspaces and teams, manage your organizations and more. -- **Creating a Design from Meshery Catalog Templates:** With this guide, you can create amazing cloud native designs for your infrastructure from already available templates in the meshery catalog. +Understanding Layer5 Cloud architecture: -### Concepts +- **[Architecture Overview](https://docs.layer5.io/cloud/concepts)** - System components and relationships +- **[Design Principles](https://docs.layer5.io/cloud/concepts/principles)** - Core concepts driving the platform -An overview of Layer5 Cloud concepts and their relationships to one another. +#### Identity & Access Management -### Identity +Comprehensive identity management: -- **Organizations:** Organizations, Managing Organization Permissions -- **Teams:** Teams, Managing Teams Permissions -- **Users:** User Management, Managing User Permissions +- **[Organizations](https://docs.layer5.io/cloud/identity/organizations)** - Managing organization structure and permissions +- **[Teams](https://docs.layer5.io/cloud/identity/teams)** - Team creation and permission management +- **[Users](https://docs.layer5.io/cloud/identity/users)** - User administration and access control -### Security +#### Security -- **Tokens:** API Tokens are used to authenticate to Layer5 Cloud’s REST API. -- **Keychains**: Keychains are a collection of keys -- **Keys**: Keys are the atomic unit of access control -- **Roles**: Roles map permissions to users. +Enterprise-grade security features: -### Catalog +- **[API Tokens](https://docs.layer5.io/cloud/security/tokens)** - Authentication for REST API access +- **[Keychains](https://docs.layer5.io/cloud/security/keychains)** - Secure key collection management +- **[Keys](https://docs.layer5.io/cloud/security/keys)** - Atomic units of access control +- **[Roles](https://docs.layer5.io/cloud/security/roles)** - Permission mapping and role-based access -The Cloud Catalog is a web-based, public catalog to facilitate easy sharing and discovery of common cloud native architectures and design patterns. +#### Cloud Catalog -### Workspaces +Discover and share cloud native patterns: -Meshery Workspaces serve as a virtual space for your team-based work. +- **[Catalog Overview](https://docs.layer5.io/cloud/catalog)** - Public catalog for architectures and design patterns +- **[Publishing Designs](https://docs.layer5.io/cloud/catalog/publishing)** - Share your patterns with the community +- **[Using Templates](https://docs.layer5.io/cloud/catalog/templates)** - Leverage existing patterns -### Tutorials +#### Workspaces -- **Kanvas Snapshots**: Connect Kanvas to your GitHub repo and see changes pull request-to-pull request. -- **Sharing a Workspace**: Learn how to control access to workspaces and their resources. -- **Recognizing User and Contributor Milestones**: Showcasing user and contributor achievements +Collaborative team environments: -### Self-Hosted +- **[Workspace Fundamentals](https://docs.layer5.io/cloud/workspaces)** - Virtual spaces for team collaboration +- **[Resource Management](https://docs.layer5.io/cloud/workspaces/resources)** - Managing workspace resources +- **[Access Control](https://docs.layer5.io/cloud/workspaces/access)** - Controlling workspace permissions -Keep your Kanvas designs internal to your workplace. Get remote support from Layer5 when you need it. +#### Tutorials -### Reference +Hands-on learning guides: -Low-level ReST API reference for extending Layer5 Cloud. +- **[Kanvas Snapshots](https://docs.layer5.io/cloud/tutorials/snapshots)** - GitHub integration for pull request visualization +- **[Sharing Workspaces](https://docs.layer5.io/cloud/tutorials/sharing)** - Collaborative workspace management +- **[User Recognition](https://docs.layer5.io/cloud/tutorials/recognition)** - Celebrating achievements and milestones + +#### Self-Hosted Deployment + +Private cloud deployment: + +- **[Installation Guide](https://docs.layer5.io/cloud/self-hosted)** - Deploy Layer5 Cloud in your environment +- **[Configuration](https://docs.layer5.io/cloud/self-hosted/config)** - Customizing your deployment +- **[Remote Support](https://docs.layer5.io/cloud/self-hosted/support)** - Getting help from Layer5 + +#### API Reference + +Low-level technical documentation: + +- **[REST API](https://docs.layer5.io/cloud/reference/rest-api)** - Complete API endpoint reference +- **[Authentication](https://docs.layer5.io/cloud/reference/auth)** - API authentication methods +- **[Rate Limits](https://docs.layer5.io/cloud/reference/limits)** - Understanding API limits
+
-

Kanvas Docs

+

🎨 Kanvas Documentation

-### Getting Started with Designs +#### Getting Started with Designs -- **Starting from a pattern:** A Pattern is an entity that augments the operational behavior of a deployed instance of a Design. -- **Creating Relationships:** Relationships identify and facilitate genealogy between Components. -- **Working with Components:** Components represent entities in the Meshery ecosystem, exposing capabilities of the underlying platform. -- **Starting from scratch:** Emphasize the underlying system behavior for each action you take. +Build cloud native infrastructure visually: -### Exploring Designer +- **[Starting from Patterns](https://docs.layer5.io/kanvas/getting-started/patterns)** - Using operational patterns for deployments +- **[Creating Relationships](https://docs.layer5.io/kanvas/getting-started/relationships)** - Connecting components meaningfully +- **[Working with Components](https://docs.layer5.io/kanvas/getting-started/components)** - Understanding infrastructure entities +- **[Starting from Scratch](https://docs.layer5.io/kanvas/getting-started/scratch)** - Building custom designs -- **Reviewing Designs:** Learn how to leverage comments in Kanvas’s Designer Mode to enhance collaboration and streamline design reviews. -- **Whiteboarding:** Whiteboarding and Freestyle Drawing inside Kanvas -- **Export Designs:** How to export your designs for backup, sharing or offline use. +#### Exploring Designer Mode -### Working with Components +Visual design capabilities: -Meshery Designs are descriptive, declarative characterizations of how your Kubernetes infrastructure should be configured +- **[Design Reviews](https://docs.layer5.io/kanvas/designer/reviews)** - Collaborative review workflows with comments +- **[Whiteboarding](https://docs.layer5.io/kanvas/designer/whiteboard)** - Freestyle drawing and diagramming +- **[Export Designs](https://docs.layer5.io/kanvas/designer/export)** - Backup and share your work -### Navigating Operator +#### Working with Components -Operator mode is for operating your Kubernetes clusters and cloud native infrastructure. +Infrastructure as code, visually: -### Core Tasks +- **[Component Library](https://docs.layer5.io/kanvas/components)** - Available infrastructure components +- **[Custom Components](https://docs.layer5.io/kanvas/components/custom)** - Creating your own components +- **[Component Properties](https://docs.layer5.io/kanvas/components/properties)** - Configuring component behavior -- **Whiteboarding:** Kanvas Designer supports freestyle design, meaning that you can customize the appearance and layout of your diagrams without any constraints. -- **Deploying Designs:** Validating Designs, Undeploying Designs, Deploying Designs, Cloning a Design +#### Navigating Operator Mode -### Reference +Operations and deployment: -- **Keyboard Shortcuts:** Learn the keyboard shortcuts for Kanvas to enhance your designing experience. -- **Troubleshooting Kanvas:** Learn to Troubleshoot the Kanvas +- **[Operator Overview](https://docs.layer5.io/kanvas/operator)** - Managing running infrastructure +- **[Deployment Workflows](https://docs.layer5.io/kanvas/operator/deploy)** - Deploying designs to clusters +- **[Monitoring](https://docs.layer5.io/kanvas/operator/monitor)** - Real-time infrastructure insights + +#### Core Tasks + +Essential workflows: + +- **[Whiteboarding](https://docs.layer5.io/kanvas/tasks/whiteboard)** - Freestyle design without constraints +- **[Validating Designs](https://docs.layer5.io/kanvas/tasks/validate)** - Ensuring design correctness +- **[Deploying Designs](https://docs.layer5.io/kanvas/tasks/deploy)** - Moving designs to production +- **[Cloning Designs](https://docs.layer5.io/kanvas/tasks/clone)** - Duplicating existing designs + +#### Reference + +Technical references: + +- **[Keyboard Shortcuts](https://docs.layer5.io/kanvas/reference/shortcuts)** - Speed up your workflow +- **[Troubleshooting](https://docs.layer5.io/kanvas/reference/troubleshooting)** - Common issues and solutions
-### Contribution Guidelines +--- -A detailed contribution guide for Layer5 Docs. -Contributing to the docs.layer5.io +## 🤝 Contributing to Layer5 Docs + +We welcome contributions from everyone! Whether you're fixing typos, improving documentation, or adding new content, your help makes Layer5 better. + +### Quick Start for Contributors + +1. **Find an issue:** Browse [open issues](../../issues) or check issues labeled [`help-wanted`](../../labels/help%20wanted) +2. **Fork and clone:** Create your own fork and clone it locally +3. **Make changes:** Edit documentation, add content, or fix issues +4. **Submit PR:** Open a pull request with your improvements + +For detailed contribution guidelines, see [CONTRIBUTING.md](./CONTRIBUTING.md). ### Editing Markdown Content -Documentation content is written in Markdown and you'll find all files listed under the /content directory. +All documentation is written in Markdown and located in the `/content` directory. -To create a new page with Markdown, create a file ending in `.md` in a `site/`. The path in the content directory will be the URL route. For example, `site/docs/hello.md` will be served from the `/docs/hello` URL. +**Creating a New Page:** +1. Create a file with `.md` extension in `site/` +2. Add YAML frontmatter: ```yaml --- -title: 'My Title' -description: "A thorough, yet succinct description of the page's contents" +title: 'Your Page Title' +description: "A clear, concise description of the page content" +permalink: /path/to/page +category: documentation-section --- ``` -The significant keys in the YAML frontmatter are: +**Key Frontmatter Fields:** -`title` (string) - This is the title of the page that will be set in the HTML title. -`description` (string) - This is a description of the page that will be set in the HTML description. -`permalink` (string - relative file path) - canonical location of the page -`category` (string) - section to which the page belongs. -`redirect_from` (string - relative file path) - in case the page was previously available elsewhere +- `title` - Page title for HTML `` tag +- `description` - Page description for HTML meta tags +- `permalink` - Canonical URL path for the page +- `category` - Documentation section or category +- `redirect_from` - Previous URL paths (if page moved) -<div> </div> +### Uploading Images to the Site + +**Image Syntax:** +```markdown +![Alt text describing image](/path/to/image.svg) +``` + +Or using HTML: +```html +<img src="/path/to/image.svg" alt="Descriptive alt text" /> +``` + +**Important Notes:** + +- ✅ Always use **complete image paths** for correct rendering on subpages +- ✅ Add `data-modal="false"` to `<img>` tags to prevent modal popups (e.g., for logos) +- ✅ Images without `data-modal="false"` will open in a modal on click + +**Example:** +```html +<img src="/images/logo.svg" alt="Layer5 Logo" data-modal="false" /> +``` + +### Adding Alerts to the Site -### Uploading Images to the site +Alerts help highlight important information in documentation. -To display images in a pop-up modal, use the following syntax: `![alt text](/path/to/image.svg)` or `<img src="" alt="" />`. +**Alert Syntax:** +```markdown +{{< alert type="success" title="Note" >}} Your message here {{< /alert >}} +``` + +**Alert Types:** + +| Type | Purpose | Usage | +|------|---------|-------| +| `danger` | Security warnings | Critical security information | +| `warning` | Cautions | Important warnings needing attention | +| `info` | Informational | General information | +| `note` | Neutral notices | Neutral information | +| `success` | Positive info | Confirmations and positive messages | + +**Examples:** +```markdown +{{< alert type="danger" title="Security Warning" >}} +Never commit API keys to version control. +{{< /alert >}} + +{{< alert type="info" >}} +This feature requires Docker Desktop 4.24 or later. +{{< /alert >}} + +{{< alert type="success" title="Pro Tip" >}} +Use keyboard shortcuts to speed up your workflow! +{{< /alert >}} +``` -**Note:** -- For images to show correctly on subpages, always provide the complete image path. -- When using the `<img />` tag, add `data-modal="false"` to prevent the image from opening in a modal e.g. a [logo](https://github.com/layer5io/docs/blob/0bef5a9a05214a9dda10d8a68431e41f5a36676d/layouts/partials/footer.html#L9). +**Note:** If no `title` is specified, the title defaults to the type name (e.g., "Info", "Warning"). Using an invalid alert type will default to the "success" style. -### Adding Alert to the site +### Contribution Best Practices -Use the following Syntax to add an Alert: -`{{< alert type="success" title="Note" >}} Your Note {{< /alert >}}` +- ✅ **Keep PRs focused** - One issue or feature per pull request +- ✅ **Write clear commit messages** - Describe what and why, not just what +- ✅ **Test locally** - Verify your changes render correctly +- ✅ **Follow style guides** - Maintain consistency with existing documentation +- ✅ **Add context** - Explain why changes are needed in PR descriptions -- `type="danger"`: Alert used to indicate something related to security. -- `type="info"`: Alert used to write some information. -- `type="warning"`: Alert used to indicate a warning that might need attention. -- `type="note"`: Alert used to indicate a neutral information. -- `type="success"`: Alert used to indicate a positive information. +--- + +## 🌟 Join the Layer5 Community + +<div> +<a href="https://meshery.io/community"><img alt="Layer5 Community" src=".github/readme/images//community.svg" style="margin-right:8px;padding-top:9px;" width="140px" align="left" /></a> +<p> +✔️ <em><strong>Join</strong></em> any or all of the weekly meetings on <a href="https://calendar.google.com/calendar/b/1?cid=bGF5ZXI1LmlvX2VoMmFhOWRwZjFnNDBlbHZvYzc2MmpucGhzQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20">community calendar</a>.<br /> +✔️ <em><strong>Watch</strong></em> community <a href="https://www.youtube.com/Layer5io?sub_confirmation=1">meeting recordings</a>.<br /> +✔️ <em><strong>Access</strong></em> the <a href="https://drive.google.com/drive/u/4/folders/0ABH8aabN4WAKUk9PVA">Community Drive</a> by completing a community <a href="https://layer5.io/newcomer">Member Form</a>.<br /> +✔️ <em><strong>Discuss</strong></em> in the <a href="https://discuss.layer5.io">Community Forum</a>.<br /> +✔️ <em><strong>Explore more</strong></em> in the <a href="https://layer5.io/community/handbook">Community Handbook</a>.<br /> +</p> +</div> -By default, if you don't specify a `title="Your Title"`, the title will be the same as the type name. +<div> </div> -**Note-> Using an invalid alert type will lead to the default alert being used (i.e. success).** +### 🎯 Getting Involved -<hr/> +Our projects are community-driven and welcome collaboration from everyone! -<a name="contributing"></a><a name="community"></a> -Our projects are community-driven and open to collaboration. 👍 Be sure to see the <a href="https://docs.google.com/document/d/17OPtDE_rdnPQxmk2Kauhm3GwXF1R5dZ3Cj8qZLKdo5E/edit">Layer5 Community Welcome Guide</a> for a tour of resources available to you. You can also join our <a href="http://slack.layer5.io">Slack</a> to get involved. +**New to Open Source?** +- 📖 Read our [Community Welcome Guide](https://docs.google.com/document/d/17OPtDE_rdnPQxmk2Kauhm3GwXF1R5dZ3Cj8qZLKdo5E/edit) +- 💬 Join our [Slack workspace](http://slack.layer5.io) +- 🎫 Grab a [`help-wanted`](https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+(org%3Alayer5io+OR+org%3Ameshery+OR+org%3Alayer5labs+OR+org%3Aservice-mesh-performance+OR+org%3Aservice-mesh-patterns+OR+org%3Ameshery-extensions)+label%3A%22help+wanted%22) or [`good-first-issue`](https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+org%3Alayer5io+org%3Ameshery+org%3Alayer5labs+org%3Aservice-mesh-performance+org%3Aservice-mesh-patterns+label%3A%22good+first+issue%22) to get started <p style="clear:both;"> <a href ="https://layer5.io/community/meshmates"><img alt="MeshMates" src=".github/readme/images/layer5-community-sign.png" style="margin-right:10px; margin-bottom:15px;" width="28%" align="left"/></a> <h3>Find your MeshMate</h3> <p> - MeshMates are experienced Layer5 community members who will help you learn your way around, discover live projects and expand your community network. - Become a <b>Meshtee</b> today! + <strong>MeshMates</strong> are experienced Layer5 community members who will help you learn your way around, discover live projects, and expand your community network. Become a <strong>Meshtee</strong> today! </p> -Find out more on the <a href="https://layer5.io/community">Layer5 community</a>. <br /> -<br /><br /><br /><br /> +<p> + 🤝 <strong>What MeshMates Offer:</strong> +</p> + +- Personal guidance through the Layer5 ecosystem +- Help finding projects that match your interests +- Code review and technical mentorship +- Introduction to community practices and culture +- Networking opportunities with other contributors + +Find out more on the [Layer5 community](https://layer5.io/community) page. + </p> <div> </div> -<a href="https://slack.meshery.io"> +### 💬 Connect With Us +<a href="https://slack.meshery.io"> <picture align="right"> <source media="(prefers-color-scheme: dark)" srcset=".github/readme/images//slack-dark-128.png" width="110px" align="right" style="margin-left:10px;margin-top:10px;"> <source media="(prefers-color-scheme: light)" srcset=".github/readme/images//slack-128.png" width="110px" align="right" style="margin-left:10px;padding-top:5px;"> <img alt="Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode." src=".github/readme/images//slack-128.png" width="110px" align="right" style="margin-left:10px;padding-top:13px;"> </picture> </a> -<div> -<a href="https://meshery.io/community"><img alt="Layer5 Community" src=".github/readme/images//community.svg" style="margin-right:8px;padding-top:9px;" width="140px" align="left" /></a> -<p> -✔️ <em><strong>Join</strong></em> any or all of the weekly meetings on <a href="https://calendar.google.com/calendar/b/1?cid=bGF5ZXI1LmlvX2VoMmFhOWRwZjFnNDBlbHZvYzc2MmpucGhzQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20">Community calendar</a>.<br /> -✔️ <em><strong>Watch</strong></em> community <a href="https://www.youtube.com/playlist?list=PL3A-A6hPO2IMPPqVjuzgqNU5xwnFFn3n0">meeting recordings</a>.<br /> -✔️ <em><strong>Access</strong></em> the <a href="https://drive.google.com/drive/u/4/folders/0ABH8aabN4WAKUk9PVA">Community Drive</a> by completing a community <a href="https://layer5.io/newcomer">Member Form</a>.<br /> -✔️ <em><strong>Discuss</strong></em> in the <a href="https://discuss.layer5.io">Community Forum</a>.<br /> -✔️ <em><strong>Explore more</strong></em> in the <a href="https://layer5.io/community/handbook">Community Handbook</a>.<br /> + +**Communication Channels:** + +- 💬 **Slack** - [Join our Slack](http://slack.layer5.io) for real-time discussions +- 🐦 **Twitter** - Follow [@layer5](https://twitter.com/layer5) for updates +- 📺 **YouTube** - Subscribe to [Layer5 channel](https://www.youtube.com/Layer5io?sub_confirmation=1) +- 💡 **Forum** - Ask questions on [discuss.layer5.io](https://discuss.layer5.io) +- 📧 **Newsletter** - Get monthly updates delivered to your inbox + +<p align="center"> +<i>Not sure where to start?</i> Grab an open issue with the <a href="https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+(org%3Alayer5io+OR+org%3Ameshery+OR+org%3Alayer5labs+OR+org%3Aservice-mesh-performance+OR+org%3Aservice-mesh-patterns+OR+org%3Ameshery-extensions)+label%3A%22help+wanted%22">help-wanted label</a>. </p> -</div> + +--- + +## 📄 License + +This repository and all contributions are licensed under the [Apache 2.0 License](LICENSE). By contributing to this project, you agree to license your contributions under the same license. + +--- + <p align="center"> -<i>Not sure where to start?</i> Grab an open issue with the <a href="https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+(org%3Alayer5io+OR+org%3Ameshery+OR+org%3Alayer5labs+OR+org%3Aservice-mesh-performance+OR+org%3Aservice-mesh-patterns+OR+org%3Ameshery-extensions)+label%3A%22help+wanted%22">help-wanted label</a>.</p> + <strong>Built with ❤️ by the Layer5 community</strong><br/> + <a href="https://layer5.io">Website</a> • + <a href="https://docs.layer5.io">Documentation</a> • + <a href="https://slack.layer5.io">Slack</a> • + <a href="https://twitter.com/layer5">Twitter</a> • + <a href="https://www.youtube.com/Layer5io">YouTube</a> +</p> \ No newline at end of file