From d4b76e14d48bfa5890bb3af32d791f40168851b3 Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Thu, 30 Apr 2026 05:58:19 +0000 Subject: [PATCH 1/8] fix(resources): add cloud native tutorials and redirect Signed-off-by: kanishksingh23 --- .../resources/tutorials/deploy-aws-ec2.mdx | 86 +++++++++++++++++ .../kubernetes-configmaps-secrets.mdx | 94 ++++++++++++++++++ .../tutorials/kubernetes-cronjobs.mdx | 86 +++++++++++++++++ .../tutorials/kubernetes-deployments.mdx | 90 +++++++++++++++++ .../resources/tutorials/kubernetes-pods.mdx | 95 ++++++++++++++++++ .../tutorials/kubernetes-services.mdx | 96 +++++++++++++++++++ .../tutorials/publish-to-artifacthub.mdx | 88 +++++++++++++++++ src/utils/redirects.yaml | 4 + 8 files changed, 639 insertions(+) create mode 100644 src/collections/resources/tutorials/deploy-aws-ec2.mdx create mode 100644 src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx create mode 100644 src/collections/resources/tutorials/kubernetes-cronjobs.mdx create mode 100644 src/collections/resources/tutorials/kubernetes-deployments.mdx create mode 100644 src/collections/resources/tutorials/kubernetes-pods.mdx create mode 100644 src/collections/resources/tutorials/kubernetes-services.mdx create mode 100644 src/collections/resources/tutorials/publish-to-artifacthub.mdx diff --git a/src/collections/resources/tutorials/deploy-aws-ec2.mdx b/src/collections/resources/tutorials/deploy-aws-ec2.mdx new file mode 100644 index 0000000000000..dd0ee9e774e3c --- /dev/null +++ b/src/collections/resources/tutorials/deploy-aws-ec2.mdx @@ -0,0 +1,86 @@ +--- +title: "Deploy AWS EC2 Instances with Meshery" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2025-04-24 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - AWS + - Tutorial +type: Tutorial +product: Meshery +technology: AWS +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +Meshery is a powerful multi-cloud management platform that enables you to configure, deploy, and manage AWS resources such as EC2 instances. Meshery uses [AWS Controllers for Kubernetes (ACK)](https://aws.amazon.com/blogs/containers/aws-controllers-for-kubernetes-ack/) to bridge Kubernetes and AWS services. In this tutorial, we use the [Kanvas](https://docs.meshery.io/extensions/kanvas) extension to provide a visual experience for deploying an AWS EC2 instance. + +### Prerequisites + +1. A [self-hosted Meshery installation](https://docs.meshery.io/installation). +2. An active AWS account. +3. A running Kubernetes cluster (e.g., Minikube or EKS). + +### Overview of Deployment Steps + +1. **Connect your Kubernetes cluster to Meshery** — establishing the foundation for interacting with AWS resources via ACK. +2. **Set up essential AWS resources** — deploy VPCs, subnets, and networking components for the EC2 instance. +3. **Verify and monitor the deployment** — confirm EC2 instances via the AWS Console or Meshery's visualization mode. + +### Steps + +#### 1. Connect Your Kubernetes Cluster to Meshery + +1. For this guide, use the **in-cluster deployment** method. Follow the [Minikube setup guide](https://docs.meshery.io/installation/kubernetes/minikube) to deploy Meshery in-cluster. +2. Open the Meshery UI at `localhost:9081` and verify that the cluster is listed. +3. Click the cluster name to ping and confirm connectivity. + +#### 2. Configure and Deploy the EC2 Controller + +1. [Clone the EC2 controller design](https://cloud.layer5.io/catalog/content/catalog/ec2-controller-design-28a7fad9-c7ef-440a-a8f0-7614e072b866) from the Layer5 Catalog. +2. Open the design in Kanvas. The design includes the EC2 Controller Pod, CRDs, Service Account, and an AWS Credentials Secret. + +**Configure the AWS Secret:** + +3. Double-click the **Secret** component. +4. Under **Data**, add base64-encoded values: + - `AWS_ACCESS_KEY_ID`: your encoded key + - `AWS_SECRET_ACCESS_KEY`: your encoded secret +5. Use a [base64 encoder](https://www.base64encode.org/) to encode your credentials. + +**Deploy the EC2 Controller:** + +6. Click **Actions > Deploy**. +7. Once deployed, click **Open in Visualizer** to see the deployed resources in the `ack-system` namespace. + +#### 3. Deploy the VPC Workflow + +8. [Clone the VPC workflow design](https://cloud.layer5.io/catalog/content/catalog/vpc-workflow-design-50cac19e-209c-4acf-b91c-4784281db033) from the Catalog. +9. Open the design and adjust CIDR blocks and region as needed (default: `us-east-1`). +10. Click **Actions > Deploy**. +11. Verify in your AWS Management Console that the VPC and networking resources are created. + +The VPC workflow includes: 1 VPC, 1 Internet Gateway, 1 NAT Gateway, 1 Elastic IP, 2 Route Tables, 2 Subnets, and 1 Security Group. + +#### 4. Deploy the EC2 Instance + +12. [Clone the EC2 instances design](https://cloud.layer5.io/catalog/content/catalog/ec2-instances-design-a344f109-2d92-41da-8644-3bc285c3ca9e) from the Catalog. +13. Open the design in the Playground and click **Deploy**. +14. Navigate to the AWS Management Console to confirm the instances are running. + +### Conclusion + +You've successfully deployed and managed AWS EC2 instances using Meshery. This guide demonstrated how to use pre-configured catalog designs, set up the ACK controller with AWS credentials, deploy VPC networking, and launch EC2 instances — all without CLI commands. + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/aws/deploy-aws-ec2-instances-with-meshery). + + diff --git a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx new file mode 100644 index 0000000000000..b0b203fcf60d8 --- /dev/null +++ b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx @@ -0,0 +1,94 @@ +--- +title: "Understanding Kubernetes ConfigMaps and Secrets with Meshery" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2024-04-16 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Kubernetes + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +In this tutorial, we explore how to use **Kubernetes ConfigMaps and Secrets** with Meshery Playground. ConfigMaps allow you to decouple configuration from container images, while Secrets store sensitive data such as passwords and API keys securely. + +### Prerequisites + +- Basic understanding of Kubernetes Pods and Deployments. +- Access to the *Meshery Playground*. Sign up at [Meshery Playground](https://play.meshery.io/) if needed. + +### Lab Scenario + +Create a ConfigMap and a Secret, then mount them into a Pod using Meshery's visual design canvas. + +### Objective + +Learn how to create **ConfigMaps** and **Secrets** and attach them to Pods using Meshery Playground. + +### Steps + +#### Access Meshery Playground + +1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. +2. Rename your design (e.g., `configmap-secrets-lab`). + +#### Create a ConfigMap + +1. In the **Components** tab, search for **ConfigMap** and drag it onto the canvas. +2. Click the ConfigMap component to open its configuration. +3. Under **data**, add a key-value pair, e.g.: + - Key: `APP_ENV` + - Value: `production` +4. Give it a name (e.g., `app-config`) and a label. + +#### Create a Secret + +5. Search for **Secret** in Components and drag it onto the canvas. +6. Click the Secret component and add base64-encoded data under **data**, e.g.: + - Key: `DB_PASSWORD` + - Value: `cGFzc3dvcmQ=` (base64 for "password") +7. Name it (e.g., `app-secret`). + +#### Create a Pod and Mount ConfigMap and Secret + +8. Drag a **Pod** component onto the canvas. +9. Add a container (`nginx:latest`) as covered in the Pods tutorial. +10. In the container configuration, scroll to **envFrom** to reference the ConfigMap: + - Add a `configMapRef` pointing to `app-config`. +11. Add another entry under **envFrom** referencing the Secret: + - Add a `secretRef` pointing to `app-secret`. +12. Add a unique label to the pod for filtering. + +#### Validate and Deploy + +13. Click **Validate** and resolve any errors. +14. Click **Deploy** to apply the design. + +#### Verify in Visualize + +15. Switch to **Visualize** and filter by your pod's label. +16. Click the pod and examine the **Details** tab to confirm the configuration is applied. + +#### Clean Up + +17. Use **Undeploy** to remove all resources. + +### Conclusion + +You've successfully created Kubernetes ConfigMaps and Secrets and mounted them into a Pod using Meshery Playground. This approach enables clean separation of configuration from application code. + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-configmaps-secrets). + + diff --git a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx new file mode 100644 index 0000000000000..c32a302e50037 --- /dev/null +++ b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx @@ -0,0 +1,86 @@ +--- +title: "Exploring Kubernetes CronJobs with Meshery" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2024-05-10 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Kubernetes + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +In this tutorial, we explore **Kubernetes CronJobs** using Meshery Playground. CronJobs create Jobs on a repeating schedule, making them ideal for periodic tasks like backups, report generation, or cleanup operations. + +### Prerequisites + +- Basic understanding of Kubernetes Pods and Jobs. +- Access to *Meshery Playground*. Sign up at [Meshery Playground](https://play.meshery.io/) if needed. + +### Lab Scenario + +Create a CronJob that runs a simple task on a schedule using Meshery's visual canvas. + +### Objective + +Learn how to create and manage **Kubernetes CronJobs** visually using Meshery Playground. + +### Steps + +#### Access Meshery Playground + +1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. +2. Name your design (e.g., `cronjob-lab`). + +#### Create a CronJob + +1. In the **Components** tab, search for **CronJob** and drag it onto the canvas. +2. Click the CronJob component to open its configuration modal. +3. Set the **name** (e.g., `hello-cronjob`). +4. Set the **schedule** field to `"*/1 * * * *"` — this runs the job every minute. +5. Under **jobTemplate > spec > template > spec > containers**, click **+** to add a container: + - **name**: `hello` + - **image**: `busybox:latest` + - **command**: `["/bin/sh", "-c", "echo Hello from CronJob"]` +6. Set **restartPolicy** to `OnFailure`. +7. Add a unique label (e.g., `app: hello-cronjob`) for filtering. +8. Click outside to close the modal. + +#### Validate and Deploy + +9. Click **Validate** to check for errors. +10. Click **Deploy** to apply the CronJob. + +#### Visualize the CronJob + +11. Switch to **Visualize** and filter by the label set in step 7. +12. Wait a minute — you should see a **Job** and a **Pod** appear as the CronJob triggers. +13. Click the Pod in the **Details** tab to see its status and logs. + +#### View Job History + +14. In the Visualize view, filter for **Kind: Job** to see the history of completed jobs created by the CronJob. + +#### Clean Up + +15. Go back to **Design** view and use **Undeploy** to remove the CronJob and all associated resources. + +### Conclusion + +You've successfully created and managed a Kubernetes CronJob using Meshery Playground. CronJobs are a powerful way to automate periodic tasks in Kubernetes without external schedulers. + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/exploring-kubernetes-cronjobs). + + diff --git a/src/collections/resources/tutorials/kubernetes-deployments.mdx b/src/collections/resources/tutorials/kubernetes-deployments.mdx new file mode 100644 index 0000000000000..6e23a189b990a --- /dev/null +++ b/src/collections/resources/tutorials/kubernetes-deployments.mdx @@ -0,0 +1,90 @@ +--- +title: "Exploring Kubernetes Deployments with Meshery" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2025-02-27 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Kubernetes + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +In this tutorial, we'll explore Kubernetes Deployments using [Meshery Playground](https://play.meshery.io/). Deployments provide declarative updates for Pods and ReplicaSets, making it easy to roll out changes, scale applications, and roll back to previous versions. + +### Prerequisites + +- Basic understanding of Kubernetes Pods. +- Access to the *Meshery Playground*. Sign up at [Meshery Playground](https://play.meshery.io/) if needed. + +> **NOTE:** Consider completing the [Exploring Kubernetes Pods with Meshery](/resources/tutorials/exploring-kubernetes-pods-with-meshery) tutorial first. + +### Lab Scenario + +Create and manage an NGINX Deployment in Meshery Playground, explore scaling, and observe rolling updates. + +### Objective + +Learn how to create, scale, and manage **Kubernetes Deployments** visually using Meshery's Kanvas. + +### Steps + +#### Access Meshery Playground + +1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. +2. Rename the design to something identifiable (e.g., `nginx-deployment`). + +#### Create a Deployment + +1. Click the **Components** tab and search for **Deployment**. +2. Drag the **Deployment** component onto the canvas. +3. Click the Deployment component to open its configuration modal. +4. Set the **name** (e.g., `nginx-deployment`). +5. Under **spec**, set `replicas` to `2`. +6. Under **template > spec > containers**, click **+** to add a container: + - **name**: `nginx` + - **image**: `nginx:latest` +7. Add a label (e.g., `app: nginx-deploy`) to help filter resources. +8. Click outside to close the modal. + +#### Validate and Deploy + +9. Click **Validate** to check for errors. +10. Click **Deploy** in the popup, then **Deploy** again to apply. + +#### Visualize the Deployment + +11. Click **Visualize** and apply a filter using the label set in step 7. +12. You should see the Deployment and its two managed Pods. +13. Click the Deployment in the **Details** tab to view replicas, conditions, and the rollout strategy. + +#### Scale the Deployment + +14. Go back to **Design** view and click the Deployment component. +15. Change `replicas` to `4`. +16. **Undeploy** and **Deploy** again to apply the change. +17. Switch to **Visualize** — you should now see 4 pods managed by the Deployment. + +#### Clean Up + +18. Use **Undeploy** from the Design view to remove all resources. + +### Conclusion + +You've successfully created and managed a Kubernetes Deployment using Meshery Playground. You scaled the deployment visually and observed how Kubernetes manages replica sets. Continue to the next tutorial to explore Kubernetes Services. + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-deployments). + + diff --git a/src/collections/resources/tutorials/kubernetes-pods.mdx b/src/collections/resources/tutorials/kubernetes-pods.mdx new file mode 100644 index 0000000000000..d947fb69d3a9e --- /dev/null +++ b/src/collections/resources/tutorials/kubernetes-pods.mdx @@ -0,0 +1,95 @@ +--- +title: "Exploring Kubernetes Pods with Meshery" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2024-02-22 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Kubernetes + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +In this tutorial, we'll learn the fundamentals of Pods, the smallest deployable units in the Kubernetes ecosystem. Using [Meshery Playground](https://play.meshery.io/), an interactive live cluster environment, we'll perform hands-on labs to gain practical experience in deploying, managing, and understanding Pods. + +> **NOTE:** This tutorial demonstrates stand-alone pods, i.e. pods not managed through deployments. + +### Prerequisites + +- Basic understanding of containerization and Kubernetes concepts. +- Access to the *Meshery Playground*. If you don't have an account, sign up at [Meshery Playground](https://play.meshery.io/). + +### Lab Scenario + +Deploy and explore an NGINX pod in a Kubernetes cluster. Additionally, expose the pod through a service. + +### Objective + +Learn how to create, manage, and explore **Kubernetes Pods and Services** within the context of a microservices architecture. + +### Steps + +#### Access Meshery Playground + +1. Log in to the [Meshery Playground](https://play.meshery.io) using your credentials. +2. Click **Explore** in the Cloud Native Playground tile to navigate to *Kanvas*. + +#### Create a Simple Stand-alone Pod + +1. In the Kanvas screen, rename the design from *Untitled Design* to a name of your choice. +2. Click the **Components** tab and search for **Pod**. +3. Drag the **Pod** component from the search results to the design canvas. +4. Click the pod component to load the configuration modal and rename the pod if necessary. + +#### Add a Container to the Pod + +5. Scroll down to the **Containers** section in the modal. Click **+** to add a container. +6. Expand **Containers-0** and enter the container image: `nginx:latest`. +7. Give the container a name and add a unique label (e.g., `app: my-pod`). This helps filter your resources in a shared playground environment. +8. Click outside to close the modal. + +#### Validate and Deploy the Pod + +9. Click **Validate** on the top toolbar. Ensure there are no errors. +10. Click the **Deploy** tab in the popup modal, then click **Deploy** again. + +#### Visualize the Pod + +11. Click **Visualize** to open the visualization view. +12. Click the filter icon and select the label you set in step 7 to filter your resources. +13. Select the **Details** tab and click the pod to see its state, namespace, image details, restarts, and uptime. + +#### Connect to the Pod + +14. Select the pod, then click the **Actions** tab. +15. Click **Open Interactive Terminal** to connect to the container. +16. Click **Stream Container Logs** to view live logs alongside the terminal. + +#### Expose the Pod with a Service + +17. Go back to the **Design** view. Search for **service** in Components and drag it to the canvas. +18. Click the service component, rename it, and set **Type** to **NodePort**. +19. Click **+** to add a Port. Set both **Port** and **Target Port** to `80`. +20. Add a Selector with the same key-value pair used as the pod label (e.g., `app: my-pod`). +21. Link the service to the pod by hovering over the service component's green dot, clicking the arrow, selecting **Network**, and connecting it to the pod. +22. **Undeploy** and **Deploy** again to apply the updated design. + +### Conclusion + +Congratulations! You've successfully explored Kubernetes Pods using Meshery Playground. You deployed a pod, connected to it via terminal, streamed its logs, and exposed it through a NodePort service. Continue exploring more cloud native scenarios at [Meshery Playground](https://play.meshery.io/). + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-pods). + + diff --git a/src/collections/resources/tutorials/kubernetes-services.mdx b/src/collections/resources/tutorials/kubernetes-services.mdx new file mode 100644 index 0000000000000..e90951368a150 --- /dev/null +++ b/src/collections/resources/tutorials/kubernetes-services.mdx @@ -0,0 +1,96 @@ +--- +title: "Exploring Kubernetes Services with Meshery" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2024-03-10 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Kubernetes + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +In this tutorial, we explore **Kubernetes Services** using Meshery Playground. Services provide stable network endpoints for a set of Pods, enabling reliable communication between components regardless of Pod restarts or rescheduling. + +### Prerequisites + +- Completion of the [Exploring Kubernetes Pods with Meshery](/resources/tutorials/exploring-kubernetes-pods-with-meshery) tutorial. +- Access to *Meshery Playground*. + +### Lab Scenario + +Create a Deployment and expose it using different Service types — ClusterIP, NodePort — through Meshery's visual canvas. + +### Objective + +Understand the different **Kubernetes Service types** and learn how to create and connect them to workloads visually using Meshery. + +### Steps + +#### Access Meshery Playground + +1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. +2. Name your design (e.g., `kubernetes-services-lab`). + +#### Create a Deployment + +1. Search for **Deployment** in Components and drag it to the canvas. +2. Configure it with: + - **name**: `web-deployment` + - **replicas**: `2` + - Container image: `nginx:latest` + - Label: `app: web` + +#### Create a ClusterIP Service + +3. Search for **Service** in Components and drag it to the canvas. +4. Click the service component and configure: + - **name**: `web-clusterip` + - **type**: `ClusterIP` (default) + - Add a Port: **port** `80`, **targetPort** `80` + - Add a Selector: `app: web` +5. Connect the Service to the Deployment on the canvas using the relationship arrow. + +#### Create a NodePort Service + +6. Drag another **Service** component to the canvas. +7. Configure it: + - **name**: `web-nodeport` + - **type**: `NodePort` + - Add a Port: **port** `80`, **targetPort** `80` + - Add a Selector: `app: web` + +#### Validate and Deploy + +8. Click **Validate** to check for errors. +9. Click **Deploy** to apply all resources. + +#### Visualize and Explore + +10. Switch to **Visualize** and filter by label `app: web`. +11. You should see the Deployment, its Pods, and both Services. +12. Click each Service in the **Details** tab to observe the ClusterIP assigned and the NodePort number. + +#### Clean Up + +13. Use **Undeploy** to remove all resources. + +### Conclusion + +You've successfully created and explored Kubernetes Services using Meshery Playground. You learned the difference between ClusterIP and NodePort service types and how to visually connect services to deployments. + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-services). + + diff --git a/src/collections/resources/tutorials/publish-to-artifacthub.mdx b/src/collections/resources/tutorials/publish-to-artifacthub.mdx new file mode 100644 index 0000000000000..4587a67b31f89 --- /dev/null +++ b/src/collections/resources/tutorials/publish-to-artifacthub.mdx @@ -0,0 +1,88 @@ +--- +title: "Publishing Meshery Designs to ArtifactHub" +thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +date: 2024-07-30 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - ArtifactHub + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Introduction + +[ArtifactHub](https://artifacthub.io/) is a web-based platform that enables discovery, installation, and publishing of cloud native packages. In this tutorial, we'll learn how to publish **Meshery Designs** to ArtifactHub, making your infrastructure patterns discoverable by the broader cloud native community. + +### Prerequisites + +- A [Meshery account](https://meshery.io/) with at least one saved design. +- An [ArtifactHub account](https://artifacthub.io/). +- A GitHub repository to host your design files. + +### Lab Scenario + +Export a Meshery Design and publish it to ArtifactHub as a discoverable cloud native artifact. + +### Objective + +Learn how to **export a Meshery Design** and **publish it to ArtifactHub** so that others can discover and reuse your infrastructure patterns. + +### Steps + +#### 1. Prepare Your Meshery Design + +1. Log in to [Meshery Playground](https://play.meshery.io) or your Meshery instance. +2. Open or create the design you want to publish. +3. Click **Actions > Export** to export the design. +4. Save the exported `.yaml` file to your local machine. + +#### 2. Create a GitHub Repository + +5. Create a new public GitHub repository (e.g., `my-meshery-designs`). +6. Add your exported design `.yaml` file to the repository. +7. Create an `artifacthub-repo.yml` file in the repository root with the following content: + +```yaml +repositoryID: +owners: + - name: Your Name + email: your@email.com +``` + +8. Commit and push both files to the repository. + +#### 3. Register Your Repository on ArtifactHub + +9. Log in to [ArtifactHub](https://artifacthub.io/). +10. Click your profile icon and select **Control Panel**. +11. Click **Add repository**. +12. Fill in the details: + - **Kind**: select `Meshery designs` + - **Name**: a display name for your repository + - **URL**: the GitHub URL to the directory containing your designs +13. Click **Add** to register the repository. + +#### 4. Verify Publication + +14. ArtifactHub will scan your repository and index the designs within a few minutes. +15. Search for your design on [ArtifactHub](https://artifacthub.io/) to confirm it is listed. +16. Click the listing to verify the description, links, and design metadata appear correctly. + +### Conclusion + +You've successfully published a Meshery Design to ArtifactHub. Your infrastructure patterns are now discoverable by the cloud native community. Consider adding a README and proper metadata to your designs to improve their visibility and usability. + +> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/artifacthub/publish-to-artifacthub). + + diff --git a/src/utils/redirects.yaml b/src/utils/redirects.yaml index 2e7c94f642045..3ddcb93e21ffd 100644 --- a/src/utils/redirects.yaml +++ b/src/utils/redirects.yaml @@ -227,3 +227,7 @@ redirects: toPath: "/cloud-native-management/kanvas/collaborate/peer-reviews" redirectInBrowser: true isPermanent: true + - fromPath: "/learn/cloud-native-labs" + toPath: "/learn/kanvas-labs" + redirectInBrowser: true + isPermanent: true From 6f79e752b5a791fd5c68ed5b29ede7dfb00ecb46 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sat, 16 May 2026 14:39:02 +0000 Subject: [PATCH 2/8] fix(resources): address reviewer comments Signed-off-by: Ubuntu --- .../resources/tutorials/deploy-aws-ec2.mdx | 4 +- .../kubernetes-configmaps-secrets.mdx | 4 +- .../tutorials/kubernetes-cronjobs.mdx | 4 +- .../tutorials/kubernetes-deployments.mdx | 4 +- .../resources/tutorials/kubernetes-pods.mdx | 4 +- .../tutorials/kubernetes-services.mdx | 4 +- .../layer5-academy-learning-paths.mdx | 64 +++++++++++++++++++ .../meshery-contributor-training-series.mdx | 62 ++++++++++++++++++ .../tutorials/publish-to-artifacthub.mdx | 4 +- src/utils/redirects.yaml | 2 +- 10 files changed, 141 insertions(+), 15 deletions(-) create mode 100644 src/collections/resources/tutorials/layer5-academy-learning-paths.mdx create mode 100644 src/collections/resources/tutorials/meshery-contributor-training-series.mdx diff --git a/src/collections/resources/tutorials/deploy-aws-ec2.mdx b/src/collections/resources/tutorials/deploy-aws-ec2.mdx index dd0ee9e774e3c..e231b547a8c45 100644 --- a/src/collections/resources/tutorials/deploy-aws-ec2.mdx +++ b/src/collections/resources/tutorials/deploy-aws-ec2.mdx @@ -1,7 +1,7 @@ --- title: "Deploy AWS EC2 Instances with Meshery" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/golang-meshery-ctl.webp +darkthumbnail: ../../../assets/images/tutorials/golang-meshery-ctl.webp date: 2025-04-24 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx index b0b203fcf60d8..51c6ee6315d8f 100644 --- a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx +++ b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx @@ -1,7 +1,7 @@ --- title: "Understanding Kubernetes ConfigMaps and Secrets with Meshery" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/badge.webp +darkthumbnail: ../../../assets/images/tutorials/badge.webp date: 2024-04-16 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx index c32a302e50037..db03c62accd70 100644 --- a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx +++ b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx @@ -1,7 +1,7 @@ --- title: "Exploring Kubernetes CronJobs with Meshery" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/intro-to-gatsby.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-gatsby.webp date: 2024-05-10 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/collections/resources/tutorials/kubernetes-deployments.mdx b/src/collections/resources/tutorials/kubernetes-deployments.mdx index 6e23a189b990a..4ec04ece725cf 100644 --- a/src/collections/resources/tutorials/kubernetes-deployments.mdx +++ b/src/collections/resources/tutorials/kubernetes-deployments.mdx @@ -1,7 +1,7 @@ --- title: "Exploring Kubernetes Deployments with Meshery" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/github.webp +darkthumbnail: ../../../assets/images/tutorials/github.webp date: 2025-02-27 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/collections/resources/tutorials/kubernetes-pods.mdx b/src/collections/resources/tutorials/kubernetes-pods.mdx index d947fb69d3a9e..e63e38f3e1b77 100644 --- a/src/collections/resources/tutorials/kubernetes-pods.mdx +++ b/src/collections/resources/tutorials/kubernetes-pods.mdx @@ -1,7 +1,7 @@ --- title: "Exploring Kubernetes Pods with Meshery" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/layer5-walkthrough.webp +darkthumbnail: ../../../assets/images/tutorials/layer5-walkthrough.webp date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/collections/resources/tutorials/kubernetes-services.mdx b/src/collections/resources/tutorials/kubernetes-services.mdx index e90951368a150..0db2d87c8e433 100644 --- a/src/collections/resources/tutorials/kubernetes-services.mdx +++ b/src/collections/resources/tutorials/kubernetes-services.mdx @@ -1,7 +1,7 @@ --- title: "Exploring Kubernetes Services with Meshery" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/intro-meshery-ctl.webp +darkthumbnail: ../../../assets/images/tutorials/intro-meshery-ctl.webp date: 2024-03-10 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx b/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx new file mode 100644 index 0000000000000..b2c5423e4d9f9 --- /dev/null +++ b/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx @@ -0,0 +1,64 @@ +--- +title: "Layer5 Academy: Learning Paths and Challenges" +thumbnail: ../../../assets/images/tutorials/all-repos-layer5.webp +darkthumbnail: ../../../assets/images/tutorials/all-repos-layer5.webp +date: 2024-06-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial + - Academy +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Overview + +[Layer5 Academy](https://cloud.layer5.io/academy/overview) is a structured learning platform built into Layer5 Cloud. It offers three types of content to help you skill up in cloud native technologies: + +- **Learning Paths** — Comprehensive curricula that build knowledge from the ground up, covering topics from Kubernetes fundamentals to advanced Meshery usage. +- **Challenges** — Hands-on, practical exercises focused on solving specific problems in a scenario-based format. Completing a challenge earns you a digital badge. +- **Certifications** — Formal assessments that validate your skills and provide recognized credentials, including the [Certified Meshery Contributor (CMC)](https://meshery.io/blog/2025/10/2025-10-27-certified-meshery-contributor/) certification. + +All learning materials — learning paths, challenges, and exams — are completely free. The only optional paid item is the issuance of an official certificate after passing a Certification exam. + +### Getting Started + +1. Sign up or log in at [Layer5 Cloud](https://cloud.layer5.io/). +2. Navigate to the [Academy overview](https://cloud.layer5.io/academy/overview). +3. Browse the catalog — use the **Content Type** filter to choose between Learning Paths, Challenges, and Certifications. +4. Enroll in a learning path or challenge that matches your goals. + +### Featured Learning Paths + +- **Cloud Native Fundamentals** — Covers Kubernetes core concepts, workloads, networking, and storage. Ideal for beginners. +- **Meshery Playground Hands-on** — Guided labs using [Meshery Playground](https://play.meshery.io/) to deploy and manage cloud native infrastructure visually. +- **Contributing to Meshery** — Walks through the contributor journey, from setting up your environment to submitting your first pull request. + +### Challenges + +Challenges are practical exercises structured around specific problem scenarios. Each completed challenge earns a digital badge you can share on your professional profile. + +Browse all available challenges at [cloud.layer5.io/academy/overview](https://cloud.layer5.io/academy/overview). + +### Certified Meshery Contributor (CMC) + +The CMC certification validates technical proficiency in contributing to the Meshery open source project. It consists of five exams covering Meshery's major architectural domains: + +- Meshery Server +- Meshery CLI (`mesheryctl`) +- Meshery UI +- Meshery Models +- Meshery Extensibility + +Learn more and start your certification journey at [Layer5 Academy](https://cloud.layer5.io/academy/overview). + + diff --git a/src/collections/resources/tutorials/meshery-contributor-training-series.mdx b/src/collections/resources/tutorials/meshery-contributor-training-series.mdx new file mode 100644 index 0000000000000..f38c8234dcfec --- /dev/null +++ b/src/collections/resources/tutorials/meshery-contributor-training-series.mdx @@ -0,0 +1,62 @@ +--- +title: "Meshery Contributor Training Series" +thumbnail: ../../../assets/images/tutorials/docs-jekyll.webp +darkthumbnail: ../../../assets/images/tutorials/docs-jekyll.webp +date: 2024-07-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +technology: Kubernetes +featured: false +published: true +resource: true +--- + +import { ResourcesWrapper } from "../Resources.style.js"; + + + +### Overview + +The Meshery Contributor Training Series is a structured program designed to onboard and empower new contributors to the Meshery project. Delivered by experienced community members, the series offers component-specific training sessions covering Meshery's architecture, development practices, and contribution workflows. + +Meshery is the CNCF's highest-velocity projects, and the contributor training series is a core part of its welcoming onboarding experience. + +### Training Format + +- Sessions are delivered during the weekly **Newcomers meeting** or the **Meshery Development meeting** +- Each session is recorded and posted for self-paced study +- Trainers use a standard [slide template](https://docs.google.com/presentation/d/1LxhzJhUs9-Hc9mwlKVUMlDAVdH-QWLvU1KWxVuRbSHg/) for consistency +- A schedule of upcoming trainings with identified presenters is maintained in [meshery/meshery#14090](https://github.com/meshery/meshery/issues/14090) + +### Watch Recorded Sessions + +All recorded contributor training sessions are available on the [Meshery Contributor Training Series YouTube playlist](https://www.youtube.com/playlist?list=PL3A-A6hPO2IPQXGjJQ6GmGW10spdfoQeW). + +

Topics Covered

+ +Sessions cover all major Meshery components, including: + +- **Meshery Server** — architecture, API design, and how to contribute Go code +- **mesheryctl** — the Meshery CLI, command structure, and adding new commands +- **Meshery UI** — React component structure, Sistent design system, and UI contribution workflow +- **Meshery Models** — component schemas, relationships, and model generation +- **Meshery Docs** — Jekyll-based documentation, how to write and submit doc improvements +- **Meshery Extensibility** — adapters, providers, and the plugin architecture + +### How to Get Involved + +1. Join the [Layer5 Slack](https://slack.layer5.io/) and introduce yourself in `#newcomers` +2. Attend a weekly **Newcomers meeting** — see the [community calendar](https://layer5.io/community/calendar) +3. Watch the [training recordings](https://www.youtube.com/playlist?list=PL3A-A6hPO2IPQXGjJQ6GmGW10spdfoQeW) to self-study at your own pace +4. Review the [Contributor Journey Map](https://layer5.io/community/handbook/learning) for a full picture of the contributor path +5. Connect with a **MeshMate** — experienced community members who help new contributors find their footing + +### Volunteer as a Trainer + +Community members with expertise in any Meshery component are encouraged to deliver a training session. Reach out in the `#newcomers` channel on [Layer5 Slack](https://slack.layer5.io/) or comment on [meshery/meshery#14090](https://github.com/meshery/meshery/issues/14090) to sign up. + +
diff --git a/src/collections/resources/tutorials/publish-to-artifacthub.mdx b/src/collections/resources/tutorials/publish-to-artifacthub.mdx index 4587a67b31f89..03f80e7b3ae90 100644 --- a/src/collections/resources/tutorials/publish-to-artifacthub.mdx +++ b/src/collections/resources/tutorials/publish-to-artifacthub.mdx @@ -1,7 +1,7 @@ --- title: "Publishing Meshery Designs to ArtifactHub" -thumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp -darkthumbnail: ../../../assets/images/tutorials/intro-to-meshery.webp +thumbnail: ../../../assets/images/tutorials/swagger-logo.webp +darkthumbnail: ../../../assets/images/tutorials/swagger-logo.webp date: 2024-07-30 10:30:05 -0530 category: Cloud Native tags: diff --git a/src/utils/redirects.yaml b/src/utils/redirects.yaml index 3ddcb93e21ffd..c053035dbfd03 100644 --- a/src/utils/redirects.yaml +++ b/src/utils/redirects.yaml @@ -28,7 +28,7 @@ redirects: redirectInBrowser: true isPermanent: true - fromPath: "/learn/service-mesh-labs" - toPath: "/learn/kanvas-labs" + toPath: "/learn/cloud-native-labs" redirectInBrowser: true isPermanent: true - fromPath: "/meshery" From 18d02ab066e9be6afc042bbf7f3198ef6bfd03eb Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Sat, 16 May 2026 15:27:53 +0000 Subject: [PATCH 3/8] fix(resources): replace prose training file with individual session tutorials and add academy content Signed-off-by: kanishksingh23 --- .../contributor-training-meshery-ci-cd.mdx | 26 ++++++++ ...butor-training-meshery-cli-e2e-testing.mdx | 26 ++++++++ .../contributor-training-meshery-cli.mdx | 26 ++++++++ .../contributor-training-meshery-docs.mdx | 26 ++++++++ .../contributor-training-meshery-models.mdx | 26 ++++++++ .../contributor-training-meshery-server.mdx | 26 ++++++++ ...ributor-training-meshery-ui-playwright.mdx | 26 ++++++++ .../contributor-training-meshery-ui.mdx | 26 ++++++++ .../meshery-contributor-training-series.mdx | 62 ------------------- 9 files changed, 208 insertions(+), 62 deletions(-) create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-cli.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-docs.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-models.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-server.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx create mode 100644 src/collections/resources/tutorials/contributor-training-meshery-ui.mdx delete mode 100644 src/collections/resources/tutorials/meshery-contributor-training-series.mdx diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx new file mode 100644 index 0000000000000..cddaf67e47e8b --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: Meshery CI and CD" +thumbnail: ../../../assets/images/tutorials/github.webp +darkthumbnail: ../../../assets/images/tutorials/github.webp +date: 2025-02-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx b/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx new file mode 100644 index 0000000000000..4e4a347c639ae --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: End-to-end Testing in Meshery CLI" +thumbnail: ../../../assets/images/tutorials/golang-meshery-ctl.webp +darkthumbnail: ../../../assets/images/tutorials/golang-meshery-ctl.webp +date: 2025-03-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx b/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx new file mode 100644 index 0000000000000..93e5aa86ec2d1 --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: Meshery CLI" +thumbnail: ../../../assets/images/tutorials/intro-meshery-ctl.webp +darkthumbnail: ../../../assets/images/tutorials/intro-meshery-ctl.webp +date: 2025-01-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx b/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx new file mode 100644 index 0000000000000..ab2157b4cd1e8 --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: Working with Meshery Docs" +thumbnail: ../../../assets/images/tutorials/docs-jekyll.webp +darkthumbnail: ../../../assets/images/tutorials/docs-jekyll.webp +date: 2025-04-11 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-models.mdx b/src/collections/resources/tutorials/contributor-training-meshery-models.mdx new file mode 100644 index 0000000000000..e2fc2cf0d02b7 --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-models.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: Meshery Models" +thumbnail: ../../../assets/images/tutorials/swagger-logo.webp +darkthumbnail: ../../../assets/images/tutorials/swagger-logo.webp +date: 2024-10-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-server.mdx b/src/collections/resources/tutorials/contributor-training-meshery-server.mdx new file mode 100644 index 0000000000000..95166ae8ccfb7 --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-server.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: Meshery Server" +thumbnail: ../../../assets/images/tutorials/all-repos-layer5.webp +darkthumbnail: ../../../assets/images/tutorials/all-repos-layer5.webp +date: 2024-11-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx new file mode 100644 index 0000000000000..08659b1c3030e --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: End-to-end Testing in Meshery UI using Playwright" +thumbnail: ../../../assets/images/tutorials/layer5-walkthrough.webp +darkthumbnail: ../../../assets/images/tutorials/layer5-walkthrough.webp +date: 2025-01-15 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx new file mode 100644 index 0000000000000..9bcd47aa318d0 --- /dev/null +++ b/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx @@ -0,0 +1,26 @@ +--- +title: "Contributor Training: Meshery UI" +thumbnail: ../../../assets/images/tutorials/intro-to-gatsby.webp +darkthumbnail: ../../../assets/images/tutorials/intro-to-gatsby.webp +date: 2024-12-01 10:30:05 -0530 +category: Cloud Native +tags: + - Meshery + - Tutorial +type: Tutorial +product: Meshery +featured: false +published: true +resource: true +--- +import { ResourcesWrapper } from "../Resources.style.js"; + +

Tutorial Slides

+ +

Tutorial Recording

+ +
diff --git a/src/collections/resources/tutorials/meshery-contributor-training-series.mdx b/src/collections/resources/tutorials/meshery-contributor-training-series.mdx deleted file mode 100644 index f38c8234dcfec..0000000000000 --- a/src/collections/resources/tutorials/meshery-contributor-training-series.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Meshery Contributor Training Series" -thumbnail: ../../../assets/images/tutorials/docs-jekyll.webp -darkthumbnail: ../../../assets/images/tutorials/docs-jekyll.webp -date: 2024-07-01 10:30:05 -0530 -category: Cloud Native -tags: - - Meshery - - Tutorial -type: Tutorial -product: Meshery -technology: Kubernetes -featured: false -published: true -resource: true ---- - -import { ResourcesWrapper } from "../Resources.style.js"; - - - -### Overview - -The Meshery Contributor Training Series is a structured program designed to onboard and empower new contributors to the Meshery project. Delivered by experienced community members, the series offers component-specific training sessions covering Meshery's architecture, development practices, and contribution workflows. - -Meshery is the CNCF's highest-velocity projects, and the contributor training series is a core part of its welcoming onboarding experience. - -### Training Format - -- Sessions are delivered during the weekly **Newcomers meeting** or the **Meshery Development meeting** -- Each session is recorded and posted for self-paced study -- Trainers use a standard [slide template](https://docs.google.com/presentation/d/1LxhzJhUs9-Hc9mwlKVUMlDAVdH-QWLvU1KWxVuRbSHg/) for consistency -- A schedule of upcoming trainings with identified presenters is maintained in [meshery/meshery#14090](https://github.com/meshery/meshery/issues/14090) - -### Watch Recorded Sessions - -All recorded contributor training sessions are available on the [Meshery Contributor Training Series YouTube playlist](https://www.youtube.com/playlist?list=PL3A-A6hPO2IPQXGjJQ6GmGW10spdfoQeW). - -

Topics Covered

- -Sessions cover all major Meshery components, including: - -- **Meshery Server** — architecture, API design, and how to contribute Go code -- **mesheryctl** — the Meshery CLI, command structure, and adding new commands -- **Meshery UI** — React component structure, Sistent design system, and UI contribution workflow -- **Meshery Models** — component schemas, relationships, and model generation -- **Meshery Docs** — Jekyll-based documentation, how to write and submit doc improvements -- **Meshery Extensibility** — adapters, providers, and the plugin architecture - -### How to Get Involved - -1. Join the [Layer5 Slack](https://slack.layer5.io/) and introduce yourself in `#newcomers` -2. Attend a weekly **Newcomers meeting** — see the [community calendar](https://layer5.io/community/calendar) -3. Watch the [training recordings](https://www.youtube.com/playlist?list=PL3A-A6hPO2IPQXGjJQ6GmGW10spdfoQeW) to self-study at your own pace -4. Review the [Contributor Journey Map](https://layer5.io/community/handbook/learning) for a full picture of the contributor path -5. Connect with a **MeshMate** — experienced community members who help new contributors find their footing - -### Volunteer as a Trainer - -Community members with expertise in any Meshery component are encouraged to deliver a training session. Reach out in the `#newcomers` channel on [Layer5 Slack](https://slack.layer5.io/) or comment on [meshery/meshery#14090](https://github.com/meshery/meshery/issues/14090) to sign up. - -
From aa4c62513a263a0b72e83bf91836c4f44b21836e Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Sat, 16 May 2026 15:44:54 +0000 Subject: [PATCH 4/8] fix(resources): convert markdown to HTML in tutorial MDX files Signed-off-by: kanishksingh23 --- .../resources/tutorials/deploy-aws-ec2.mdx | 133 ++++++++------- .../kubernetes-configmaps-secrets.mdx | 152 +++++++++-------- .../tutorials/kubernetes-cronjobs.mdx | 132 ++++++++------- .../tutorials/kubernetes-deployments.mdx | 140 ++++++++-------- .../resources/tutorials/kubernetes-pods.mdx | 150 +++++++++-------- .../tutorials/kubernetes-services.mdx | 153 +++++++++--------- .../layer5-academy-learning-paths.mdx | 78 ++++----- .../tutorials/publish-to-artifacthub.mdx | 135 ++++++++-------- 8 files changed, 562 insertions(+), 511 deletions(-) diff --git a/src/collections/resources/tutorials/deploy-aws-ec2.mdx b/src/collections/resources/tutorials/deploy-aws-ec2.mdx index e231b547a8c45..97fe19769350b 100644 --- a/src/collections/resources/tutorials/deploy-aws-ec2.mdx +++ b/src/collections/resources/tutorials/deploy-aws-ec2.mdx @@ -20,67 +20,76 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -Meshery is a powerful multi-cloud management platform that enables you to configure, deploy, and manage AWS resources such as EC2 instances. Meshery uses [AWS Controllers for Kubernetes (ACK)](https://aws.amazon.com/blogs/containers/aws-controllers-for-kubernetes-ack/) to bridge Kubernetes and AWS services. In this tutorial, we use the [Kanvas](https://docs.meshery.io/extensions/kanvas) extension to provide a visual experience for deploying an AWS EC2 instance. - -### Prerequisites - -1. A [self-hosted Meshery installation](https://docs.meshery.io/installation). -2. An active AWS account. -3. A running Kubernetes cluster (e.g., Minikube or EKS). - -### Overview of Deployment Steps - -1. **Connect your Kubernetes cluster to Meshery** — establishing the foundation for interacting with AWS resources via ACK. -2. **Set up essential AWS resources** — deploy VPCs, subnets, and networking components for the EC2 instance. -3. **Verify and monitor the deployment** — confirm EC2 instances via the AWS Console or Meshery's visualization mode. - -### Steps - -#### 1. Connect Your Kubernetes Cluster to Meshery - -1. For this guide, use the **in-cluster deployment** method. Follow the [Minikube setup guide](https://docs.meshery.io/installation/kubernetes/minikube) to deploy Meshery in-cluster. -2. Open the Meshery UI at `localhost:9081` and verify that the cluster is listed. -3. Click the cluster name to ping and confirm connectivity. - -#### 2. Configure and Deploy the EC2 Controller - -1. [Clone the EC2 controller design](https://cloud.layer5.io/catalog/content/catalog/ec2-controller-design-28a7fad9-c7ef-440a-a8f0-7614e072b866) from the Layer5 Catalog. -2. Open the design in Kanvas. The design includes the EC2 Controller Pod, CRDs, Service Account, and an AWS Credentials Secret. - -**Configure the AWS Secret:** - -3. Double-click the **Secret** component. -4. Under **Data**, add base64-encoded values: - - `AWS_ACCESS_KEY_ID`: your encoded key - - `AWS_SECRET_ACCESS_KEY`: your encoded secret -5. Use a [base64 encoder](https://www.base64encode.org/) to encode your credentials. - -**Deploy the EC2 Controller:** - -6. Click **Actions > Deploy**. -7. Once deployed, click **Open in Visualizer** to see the deployed resources in the `ack-system` namespace. - -#### 3. Deploy the VPC Workflow - -8. [Clone the VPC workflow design](https://cloud.layer5.io/catalog/content/catalog/vpc-workflow-design-50cac19e-209c-4acf-b91c-4784281db033) from the Catalog. -9. Open the design and adjust CIDR blocks and region as needed (default: `us-east-1`). -10. Click **Actions > Deploy**. -11. Verify in your AWS Management Console that the VPC and networking resources are created. - -The VPC workflow includes: 1 VPC, 1 Internet Gateway, 1 NAT Gateway, 1 Elastic IP, 2 Route Tables, 2 Subnets, and 1 Security Group. - -#### 4. Deploy the EC2 Instance - -12. [Clone the EC2 instances design](https://cloud.layer5.io/catalog/content/catalog/ec2-instances-design-a344f109-2d92-41da-8644-3bc285c3ca9e) from the Catalog. -13. Open the design in the Playground and click **Deploy**. -14. Navigate to the AWS Management Console to confirm the instances are running. - -### Conclusion - -You've successfully deployed and managed AWS EC2 instances using Meshery. This guide demonstrated how to use pre-configured catalog designs, set up the ACK controller with AWS credentials, deploy VPC networking, and launch EC2 instances — all without CLI commands. - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/aws/deploy-aws-ec2-instances-with-meshery). +

Introduction

+ +

Meshery is a powerful multi-cloud management platform that enables you to configure, deploy, and manage AWS resources such as EC2 instances. Meshery uses AWS Controllers for Kubernetes (ACK) to bridge Kubernetes and AWS services. In this tutorial, we use the Kanvas extension to provide a visual experience for deploying an AWS EC2 instance.

+ +

Prerequisites

+ +
    +
  1. A self-hosted Meshery installation.
  2. +
  3. An active AWS account.
  4. +
  5. A running Kubernetes cluster (e.g., Minikube or EKS).
  6. +
+

Overview of Deployment Steps

+ +
    +
  1. Connect your Kubernetes cluster to Meshery — establishing the foundation for interacting with AWS resources via ACK.
  2. +
  3. Set up essential AWS resources — deploy VPCs, subnets, and networking components for the EC2 instance.
  4. +
  5. Verify and monitor the deployment — confirm EC2 instances via the AWS Console or Meshery's visualization mode.
  6. +
+

Steps

+ +

1. Connect Your Kubernetes Cluster to Meshery

+ +
    +
  1. For this guide, use the in-cluster deployment method. Follow the Minikube setup guide to deploy Meshery in-cluster.
  2. +
  3. Open the Meshery UI at localhost:9081 and verify that the cluster is listed.
  4. +
  5. Click the cluster name to ping and confirm connectivity.
  6. +
+

2. Configure and Deploy the EC2 Controller

+ +
    +
  1. Clone the EC2 controller design from the Layer5 Catalog.
  2. +
  3. Open the design in Kanvas. The design includes the EC2 Controller Pod, CRDs, Service Account, and an AWS Credentials Secret.
  4. +
+Configure the AWS Secret: + +
    +
  1. Double-click the Secret component.
  2. +
  3. Under Data, add base64-encoded values:
  4. +
- AWS_ACCESS_KEY_ID: your encoded key +

- AWS_SECRET_ACCESS_KEY: your encoded secret

+
    +
  1. Use a base64 encoder to encode your credentials.
  2. +
+Deploy the EC2 Controller: + +
    +
  1. Click Actions > Deploy.
  2. +
  3. Once deployed, click Open in Visualizer to see the deployed resources in the ack-system namespace.
  4. +
+

3. Deploy the VPC Workflow

+ +
    +
  1. Clone the VPC workflow design from the Catalog.
  2. +
  3. Open the design and adjust CIDR blocks and region as needed (default: us-east-1).
  4. +
  5. Click Actions > Deploy.
  6. +
  7. Verify in your AWS Management Console that the VPC and networking resources are created.
  8. +
+

The VPC workflow includes: 1 VPC, 1 Internet Gateway, 1 NAT Gateway, 1 Elastic IP, 2 Route Tables, 2 Subnets, and 1 Security Group.

+ +

4. Deploy the EC2 Instance

+ +
    +
  1. Clone the EC2 instances design from the Catalog.
  2. +
  3. Open the design in the Playground and click Deploy.
  4. +
  5. Navigate to the AWS Management Console to confirm the instances are running.
  6. +
+

Conclusion

+ +

You've successfully deployed and managed AWS EC2 instances using Meshery. This guide demonstrated how to use pre-configured catalog designs, set up the ACK controller with AWS credentials, deploy VPC networking, and launch EC2 instances — all without CLI commands.

+ +

This tutorial is sourced from the Meshery documentation.

diff --git a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx index 51c6ee6315d8f..c832c9d5f9548 100644 --- a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx +++ b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx @@ -20,75 +20,87 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -In this tutorial, we explore how to use **Kubernetes ConfigMaps and Secrets** with Meshery Playground. ConfigMaps allow you to decouple configuration from container images, while Secrets store sensitive data such as passwords and API keys securely. - -### Prerequisites - -- Basic understanding of Kubernetes Pods and Deployments. -- Access to the *Meshery Playground*. Sign up at [Meshery Playground](https://play.meshery.io/) if needed. - -### Lab Scenario - -Create a ConfigMap and a Secret, then mount them into a Pod using Meshery's visual design canvas. - -### Objective - -Learn how to create **ConfigMaps** and **Secrets** and attach them to Pods using Meshery Playground. - -### Steps - -#### Access Meshery Playground - -1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. -2. Rename your design (e.g., `configmap-secrets-lab`). - -#### Create a ConfigMap - -1. In the **Components** tab, search for **ConfigMap** and drag it onto the canvas. -2. Click the ConfigMap component to open its configuration. -3. Under **data**, add a key-value pair, e.g.: - - Key: `APP_ENV` - - Value: `production` -4. Give it a name (e.g., `app-config`) and a label. - -#### Create a Secret - -5. Search for **Secret** in Components and drag it onto the canvas. -6. Click the Secret component and add base64-encoded data under **data**, e.g.: - - Key: `DB_PASSWORD` - - Value: `cGFzc3dvcmQ=` (base64 for "password") -7. Name it (e.g., `app-secret`). - -#### Create a Pod and Mount ConfigMap and Secret - -8. Drag a **Pod** component onto the canvas. -9. Add a container (`nginx:latest`) as covered in the Pods tutorial. -10. In the container configuration, scroll to **envFrom** to reference the ConfigMap: - - Add a `configMapRef` pointing to `app-config`. -11. Add another entry under **envFrom** referencing the Secret: - - Add a `secretRef` pointing to `app-secret`. -12. Add a unique label to the pod for filtering. - -#### Validate and Deploy - -13. Click **Validate** and resolve any errors. -14. Click **Deploy** to apply the design. - -#### Verify in Visualize - -15. Switch to **Visualize** and filter by your pod's label. -16. Click the pod and examine the **Details** tab to confirm the configuration is applied. - -#### Clean Up - -17. Use **Undeploy** to remove all resources. - -### Conclusion - -You've successfully created Kubernetes ConfigMaps and Secrets and mounted them into a Pod using Meshery Playground. This approach enables clean separation of configuration from application code. - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-configmaps-secrets). +

Introduction

+ +

In this tutorial, we explore how to use Kubernetes ConfigMaps and Secrets with Meshery Playground. ConfigMaps allow you to decouple configuration from container images, while Secrets store sensitive data such as passwords and API keys securely.

+ +

Prerequisites

+ +
    +
  • Basic understanding of Kubernetes Pods and Deployments.
  • +
  • Access to the Meshery Playground. Sign up at Meshery Playground if needed.
  • +
+

Lab Scenario

+ +

Create a ConfigMap and a Secret, then mount them into a Pod using Meshery's visual design canvas.

+ +

Objective

+ +

Learn how to create ConfigMaps and Secrets and attach them to Pods using Meshery Playground.

+ +

Steps

+ +

Access Meshery Playground

+ +
    +
  1. Log in to Meshery Playground and click Explore to open Kanvas.
  2. +
  3. Rename your design (e.g., configmap-secrets-lab).
  4. +
+

Create a ConfigMap

+ +
    +
  1. In the Components tab, search for ConfigMap and drag it onto the canvas.
  2. +
  3. Click the ConfigMap component to open its configuration.
  4. +
  5. Under data, add a key-value pair, e.g.:
  6. +
- Key: APP_ENV +

- Value: production

+
    +
  1. Give it a name (e.g., app-config) and a label.
  2. +
+

Create a Secret

+ +
    +
  1. Search for Secret in Components and drag it onto the canvas.
  2. +
  3. Click the Secret component and add base64-encoded data under data, e.g.:
  4. +
- Key: DB_PASSWORD +

- Value: cGFzc3dvcmQ= (base64 for "password")

+
    +
  1. Name it (e.g., app-secret).
  2. +
+

Create a Pod and Mount ConfigMap and Secret

+ +
    +
  1. Drag a Pod component onto the canvas.
  2. +
  3. Add a container (nginx:latest) as covered in the Pods tutorial.
  4. +
  5. In the container configuration, scroll to envFrom to reference the ConfigMap:
  6. +
- Add a configMapRef pointing to app-config. +
    +
  1. Add another entry under envFrom referencing the Secret:
  2. +
- Add a secretRef pointing to app-secret. +
    +
  1. Add a unique label to the pod for filtering.
  2. +
+

Validate and Deploy

+ +
    +
  1. Click Validate and resolve any errors.
  2. +
  3. Click Deploy to apply the design.
  4. +
+

Verify in Visualize

+ +
    +
  1. Switch to Visualize and filter by your pod's label.
  2. +
  3. Click the pod and examine the Details tab to confirm the configuration is applied.
  4. +
+

Clean Up

+ +
    +
  1. Use Undeploy to remove all resources.
  2. +
+

Conclusion

+ +

You've successfully created Kubernetes ConfigMaps and Secrets and mounted them into a Pod using Meshery Playground. This approach enables clean separation of configuration from application code.

+ +

This tutorial is sourced from the Meshery documentation.

diff --git a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx index db03c62accd70..de84bd1a76854 100644 --- a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx +++ b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx @@ -20,67 +20,75 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -In this tutorial, we explore **Kubernetes CronJobs** using Meshery Playground. CronJobs create Jobs on a repeating schedule, making them ideal for periodic tasks like backups, report generation, or cleanup operations. - -### Prerequisites - -- Basic understanding of Kubernetes Pods and Jobs. -- Access to *Meshery Playground*. Sign up at [Meshery Playground](https://play.meshery.io/) if needed. - -### Lab Scenario - -Create a CronJob that runs a simple task on a schedule using Meshery's visual canvas. - -### Objective - -Learn how to create and manage **Kubernetes CronJobs** visually using Meshery Playground. - -### Steps - -#### Access Meshery Playground - -1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. -2. Name your design (e.g., `cronjob-lab`). - -#### Create a CronJob - -1. In the **Components** tab, search for **CronJob** and drag it onto the canvas. -2. Click the CronJob component to open its configuration modal. -3. Set the **name** (e.g., `hello-cronjob`). -4. Set the **schedule** field to `"*/1 * * * *"` — this runs the job every minute. -5. Under **jobTemplate > spec > template > spec > containers**, click **+** to add a container: - - **name**: `hello` - - **image**: `busybox:latest` - - **command**: `["/bin/sh", "-c", "echo Hello from CronJob"]` -6. Set **restartPolicy** to `OnFailure`. -7. Add a unique label (e.g., `app: hello-cronjob`) for filtering. -8. Click outside to close the modal. - -#### Validate and Deploy - -9. Click **Validate** to check for errors. -10. Click **Deploy** to apply the CronJob. - -#### Visualize the CronJob - -11. Switch to **Visualize** and filter by the label set in step 7. -12. Wait a minute — you should see a **Job** and a **Pod** appear as the CronJob triggers. -13. Click the Pod in the **Details** tab to see its status and logs. - -#### View Job History - -14. In the Visualize view, filter for **Kind: Job** to see the history of completed jobs created by the CronJob. - -#### Clean Up - -15. Go back to **Design** view and use **Undeploy** to remove the CronJob and all associated resources. - -### Conclusion - -You've successfully created and managed a Kubernetes CronJob using Meshery Playground. CronJobs are a powerful way to automate periodic tasks in Kubernetes without external schedulers. - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/exploring-kubernetes-cronjobs). +

Introduction

+ +

In this tutorial, we explore Kubernetes CronJobs using Meshery Playground. CronJobs create Jobs on a repeating schedule, making them ideal for periodic tasks like backups, report generation, or cleanup operations.

+ +

Prerequisites

+ +
    +
  • Basic understanding of Kubernetes Pods and Jobs.
  • +
  • Access to Meshery Playground. Sign up at Meshery Playground if needed.
  • +
+

Lab Scenario

+ +

Create a CronJob that runs a simple task on a schedule using Meshery's visual canvas.

+ +

Objective

+ +

Learn how to create and manage Kubernetes CronJobs visually using Meshery Playground.

+ +

Steps

+ +

Access Meshery Playground

+ +
    +
  1. Log in to Meshery Playground and click Explore to open Kanvas.
  2. +
  3. Name your design (e.g., cronjob-lab).
  4. +
+

Create a CronJob

+ +
    +
  1. In the Components tab, search for CronJob and drag it onto the canvas.
  2. +
  3. Click the CronJob component to open its configuration modal.
  4. +
  5. Set the name (e.g., hello-cronjob).
  6. +
  7. Set the schedule field to "/1 *" — this runs the job every minute.
  8. +
  9. Under jobTemplate > spec > template > spec > containers, click + to add a container:
  10. +
- name: hello +

- image: busybox:latest

+

- command: ["/bin/sh", "-c", "echo Hello from CronJob"]

+
    +
  1. Set restartPolicy to OnFailure.
  2. +
  3. Add a unique label (e.g., app: hello-cronjob) for filtering.
  4. +
  5. Click outside to close the modal.
  6. +
+

Validate and Deploy

+ +
    +
  1. Click Validate to check for errors.
  2. +
  3. Click Deploy to apply the CronJob.
  4. +
+

Visualize the CronJob

+ +
    +
  1. Switch to Visualize and filter by the label set in step 7.
  2. +
  3. Wait a minute — you should see a Job and a Pod appear as the CronJob triggers.
  4. +
  5. Click the Pod in the Details tab to see its status and logs.
  6. +
+

View Job History

+ +
    +
  1. In the Visualize view, filter for Kind: Job to see the history of completed jobs created by the CronJob.
  2. +
+

Clean Up

+ +
    +
  1. Go back to Design view and use Undeploy to remove the CronJob and all associated resources.
  2. +
+

Conclusion

+ +

You've successfully created and managed a Kubernetes CronJob using Meshery Playground. CronJobs are a powerful way to automate periodic tasks in Kubernetes without external schedulers.

+ +

This tutorial is sourced from the Meshery documentation.

diff --git a/src/collections/resources/tutorials/kubernetes-deployments.mdx b/src/collections/resources/tutorials/kubernetes-deployments.mdx index 4ec04ece725cf..d7589ed52e78d 100644 --- a/src/collections/resources/tutorials/kubernetes-deployments.mdx +++ b/src/collections/resources/tutorials/kubernetes-deployments.mdx @@ -20,71 +20,79 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -In this tutorial, we'll explore Kubernetes Deployments using [Meshery Playground](https://play.meshery.io/). Deployments provide declarative updates for Pods and ReplicaSets, making it easy to roll out changes, scale applications, and roll back to previous versions. - -### Prerequisites - -- Basic understanding of Kubernetes Pods. -- Access to the *Meshery Playground*. Sign up at [Meshery Playground](https://play.meshery.io/) if needed. - -> **NOTE:** Consider completing the [Exploring Kubernetes Pods with Meshery](/resources/tutorials/exploring-kubernetes-pods-with-meshery) tutorial first. - -### Lab Scenario - -Create and manage an NGINX Deployment in Meshery Playground, explore scaling, and observe rolling updates. - -### Objective - -Learn how to create, scale, and manage **Kubernetes Deployments** visually using Meshery's Kanvas. - -### Steps - -#### Access Meshery Playground - -1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. -2. Rename the design to something identifiable (e.g., `nginx-deployment`). - -#### Create a Deployment - -1. Click the **Components** tab and search for **Deployment**. -2. Drag the **Deployment** component onto the canvas. -3. Click the Deployment component to open its configuration modal. -4. Set the **name** (e.g., `nginx-deployment`). -5. Under **spec**, set `replicas` to `2`. -6. Under **template > spec > containers**, click **+** to add a container: - - **name**: `nginx` - - **image**: `nginx:latest` -7. Add a label (e.g., `app: nginx-deploy`) to help filter resources. -8. Click outside to close the modal. - -#### Validate and Deploy - -9. Click **Validate** to check for errors. -10. Click **Deploy** in the popup, then **Deploy** again to apply. - -#### Visualize the Deployment - -11. Click **Visualize** and apply a filter using the label set in step 7. -12. You should see the Deployment and its two managed Pods. -13. Click the Deployment in the **Details** tab to view replicas, conditions, and the rollout strategy. - -#### Scale the Deployment - -14. Go back to **Design** view and click the Deployment component. -15. Change `replicas` to `4`. -16. **Undeploy** and **Deploy** again to apply the change. -17. Switch to **Visualize** — you should now see 4 pods managed by the Deployment. - -#### Clean Up - -18. Use **Undeploy** from the Design view to remove all resources. - -### Conclusion - -You've successfully created and managed a Kubernetes Deployment using Meshery Playground. You scaled the deployment visually and observed how Kubernetes manages replica sets. Continue to the next tutorial to explore Kubernetes Services. - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-deployments). +

Introduction

+ +

In this tutorial, we'll explore Kubernetes Deployments using Meshery Playground. Deployments provide declarative updates for Pods and ReplicaSets, making it easy to roll out changes, scale applications, and roll back to previous versions.

+ +

Prerequisites

+ +
    +
  • Basic understanding of Kubernetes Pods.
  • +
  • Access to the Meshery Playground. Sign up at Meshery Playground if needed.
  • +
+

NOTE: Consider completing the Exploring Kubernetes Pods with Meshery tutorial first.

+ +

Lab Scenario

+ +

Create and manage an NGINX Deployment in Meshery Playground, explore scaling, and observe rolling updates.

+ +

Objective

+ +

Learn how to create, scale, and manage Kubernetes Deployments visually using Meshery's Kanvas.

+ +

Steps

+ +

Access Meshery Playground

+ +
    +
  1. Log in to Meshery Playground and click Explore to open Kanvas.
  2. +
  3. Rename the design to something identifiable (e.g., nginx-deployment).
  4. +
+

Create a Deployment

+ +
    +
  1. Click the Components tab and search for Deployment.
  2. +
  3. Drag the Deployment component onto the canvas.
  4. +
  5. Click the Deployment component to open its configuration modal.
  6. +
  7. Set the name (e.g., nginx-deployment).
  8. +
  9. Under spec, set replicas to 2.
  10. +
  11. Under template > spec > containers, click + to add a container:
  12. +
- name: nginx +

- image: nginx:latest

+
    +
  1. Add a label (e.g., app: nginx-deploy) to help filter resources.
  2. +
  3. Click outside to close the modal.
  4. +
+

Validate and Deploy

+ +
    +
  1. Click Validate to check for errors.
  2. +
  3. Click Deploy in the popup, then Deploy again to apply.
  4. +
+

Visualize the Deployment

+ +
    +
  1. Click Visualize and apply a filter using the label set in step 7.
  2. +
  3. You should see the Deployment and its two managed Pods.
  4. +
  5. Click the Deployment in the Details tab to view replicas, conditions, and the rollout strategy.
  6. +
+

Scale the Deployment

+ +
    +
  1. Go back to Design view and click the Deployment component.
  2. +
  3. Change replicas to 4.
  4. +
  5. Undeploy and Deploy again to apply the change.
  6. +
  7. Switch to Visualize — you should now see 4 pods managed by the Deployment.
  8. +
+

Clean Up

+ +
    +
  1. Use Undeploy from the Design view to remove all resources.
  2. +
+

Conclusion

+ +

You've successfully created and managed a Kubernetes Deployment using Meshery Playground. You scaled the deployment visually and observed how Kubernetes manages replica sets. Continue to the next tutorial to explore Kubernetes Services.

+ +

This tutorial is sourced from the Meshery documentation.

diff --git a/src/collections/resources/tutorials/kubernetes-pods.mdx b/src/collections/resources/tutorials/kubernetes-pods.mdx index e63e38f3e1b77..dd2efd80cf44b 100644 --- a/src/collections/resources/tutorials/kubernetes-pods.mdx +++ b/src/collections/resources/tutorials/kubernetes-pods.mdx @@ -20,76 +20,84 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -In this tutorial, we'll learn the fundamentals of Pods, the smallest deployable units in the Kubernetes ecosystem. Using [Meshery Playground](https://play.meshery.io/), an interactive live cluster environment, we'll perform hands-on labs to gain practical experience in deploying, managing, and understanding Pods. - -> **NOTE:** This tutorial demonstrates stand-alone pods, i.e. pods not managed through deployments. - -### Prerequisites - -- Basic understanding of containerization and Kubernetes concepts. -- Access to the *Meshery Playground*. If you don't have an account, sign up at [Meshery Playground](https://play.meshery.io/). - -### Lab Scenario - -Deploy and explore an NGINX pod in a Kubernetes cluster. Additionally, expose the pod through a service. - -### Objective - -Learn how to create, manage, and explore **Kubernetes Pods and Services** within the context of a microservices architecture. - -### Steps - -#### Access Meshery Playground - -1. Log in to the [Meshery Playground](https://play.meshery.io) using your credentials. -2. Click **Explore** in the Cloud Native Playground tile to navigate to *Kanvas*. - -#### Create a Simple Stand-alone Pod - -1. In the Kanvas screen, rename the design from *Untitled Design* to a name of your choice. -2. Click the **Components** tab and search for **Pod**. -3. Drag the **Pod** component from the search results to the design canvas. -4. Click the pod component to load the configuration modal and rename the pod if necessary. - -#### Add a Container to the Pod - -5. Scroll down to the **Containers** section in the modal. Click **+** to add a container. -6. Expand **Containers-0** and enter the container image: `nginx:latest`. -7. Give the container a name and add a unique label (e.g., `app: my-pod`). This helps filter your resources in a shared playground environment. -8. Click outside to close the modal. - -#### Validate and Deploy the Pod - -9. Click **Validate** on the top toolbar. Ensure there are no errors. -10. Click the **Deploy** tab in the popup modal, then click **Deploy** again. - -#### Visualize the Pod - -11. Click **Visualize** to open the visualization view. -12. Click the filter icon and select the label you set in step 7 to filter your resources. -13. Select the **Details** tab and click the pod to see its state, namespace, image details, restarts, and uptime. - -#### Connect to the Pod - -14. Select the pod, then click the **Actions** tab. -15. Click **Open Interactive Terminal** to connect to the container. -16. Click **Stream Container Logs** to view live logs alongside the terminal. - -#### Expose the Pod with a Service - -17. Go back to the **Design** view. Search for **service** in Components and drag it to the canvas. -18. Click the service component, rename it, and set **Type** to **NodePort**. -19. Click **+** to add a Port. Set both **Port** and **Target Port** to `80`. -20. Add a Selector with the same key-value pair used as the pod label (e.g., `app: my-pod`). -21. Link the service to the pod by hovering over the service component's green dot, clicking the arrow, selecting **Network**, and connecting it to the pod. -22. **Undeploy** and **Deploy** again to apply the updated design. - -### Conclusion - -Congratulations! You've successfully explored Kubernetes Pods using Meshery Playground. You deployed a pod, connected to it via terminal, streamed its logs, and exposed it through a NodePort service. Continue exploring more cloud native scenarios at [Meshery Playground](https://play.meshery.io/). - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-pods). +

Introduction

+ +

In this tutorial, we'll learn the fundamentals of Pods, the smallest deployable units in the Kubernetes ecosystem. Using Meshery Playground, an interactive live cluster environment, we'll perform hands-on labs to gain practical experience in deploying, managing, and understanding Pods.

+ +

NOTE: This tutorial demonstrates stand-alone pods, i.e. pods not managed through deployments.

+ +

Prerequisites

+ +
    +
  • Basic understanding of containerization and Kubernetes concepts.
  • +
  • Access to the Meshery Playground. If you don't have an account, sign up at Meshery Playground.
  • +
+

Lab Scenario

+ +

Deploy and explore an NGINX pod in a Kubernetes cluster. Additionally, expose the pod through a service.

+ +

Objective

+ +

Learn how to create, manage, and explore Kubernetes Pods and Services within the context of a microservices architecture.

+ +

Steps

+ +

Access Meshery Playground

+ +
    +
  1. Log in to the Meshery Playground using your credentials.
  2. +
  3. Click Explore in the Cloud Native Playground tile to navigate to Kanvas.
  4. +
+

Create a Simple Stand-alone Pod

+ +
    +
  1. In the Kanvas screen, rename the design from Untitled Design to a name of your choice.
  2. +
  3. Click the Components tab and search for Pod.
  4. +
  5. Drag the Pod component from the search results to the design canvas.
  6. +
  7. Click the pod component to load the configuration modal and rename the pod if necessary.
  8. +
+

Add a Container to the Pod

+ +
    +
  1. Scroll down to the Containers section in the modal. Click + to add a container.
  2. +
  3. Expand Containers-0 and enter the container image: nginx:latest.
  4. +
  5. Give the container a name and add a unique label (e.g., app: my-pod). This helps filter your resources in a shared playground environment.
  6. +
  7. Click outside to close the modal.
  8. +
+

Validate and Deploy the Pod

+ +
    +
  1. Click Validate on the top toolbar. Ensure there are no errors.
  2. +
  3. Click the Deploy tab in the popup modal, then click Deploy again.
  4. +
+

Visualize the Pod

+ +
    +
  1. Click Visualize to open the visualization view.
  2. +
  3. Click the filter icon and select the label you set in step 7 to filter your resources.
  4. +
  5. Select the Details tab and click the pod to see its state, namespace, image details, restarts, and uptime.
  6. +
+

Connect to the Pod

+ +
    +
  1. Select the pod, then click the Actions tab.
  2. +
  3. Click Open Interactive Terminal to connect to the container.
  4. +
  5. Click Stream Container Logs to view live logs alongside the terminal.
  6. +
+

Expose the Pod with a Service

+ +
    +
  1. Go back to the Design view. Search for service in Components and drag it to the canvas.
  2. +
  3. Click the service component, rename it, and set Type to NodePort.
  4. +
  5. Click + to add a Port. Set both Port and Target Port to 80.
  6. +
  7. Add a Selector with the same key-value pair used as the pod label (e.g., app: my-pod).
  8. +
  9. Link the service to the pod by hovering over the service component's green dot, clicking the arrow, selecting Network, and connecting it to the pod.
  10. +
  11. Undeploy and Deploy again to apply the updated design.
  12. +
+

Conclusion

+ +

Congratulations! You've successfully explored Kubernetes Pods using Meshery Playground. You deployed a pod, connected to it via terminal, streamed its logs, and exposed it through a NodePort service. Continue exploring more cloud native scenarios at Meshery Playground.

+ +

This tutorial is sourced from the Meshery documentation.

diff --git a/src/collections/resources/tutorials/kubernetes-services.mdx b/src/collections/resources/tutorials/kubernetes-services.mdx index 0db2d87c8e433..6af2c14db0215 100644 --- a/src/collections/resources/tutorials/kubernetes-services.mdx +++ b/src/collections/resources/tutorials/kubernetes-services.mdx @@ -20,77 +20,86 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -In this tutorial, we explore **Kubernetes Services** using Meshery Playground. Services provide stable network endpoints for a set of Pods, enabling reliable communication between components regardless of Pod restarts or rescheduling. - -### Prerequisites - -- Completion of the [Exploring Kubernetes Pods with Meshery](/resources/tutorials/exploring-kubernetes-pods-with-meshery) tutorial. -- Access to *Meshery Playground*. - -### Lab Scenario - -Create a Deployment and expose it using different Service types — ClusterIP, NodePort — through Meshery's visual canvas. - -### Objective - -Understand the different **Kubernetes Service types** and learn how to create and connect them to workloads visually using Meshery. - -### Steps - -#### Access Meshery Playground - -1. Log in to [Meshery Playground](https://play.meshery.io) and click **Explore** to open *Kanvas*. -2. Name your design (e.g., `kubernetes-services-lab`). - -#### Create a Deployment - -1. Search for **Deployment** in Components and drag it to the canvas. -2. Configure it with: - - **name**: `web-deployment` - - **replicas**: `2` - - Container image: `nginx:latest` - - Label: `app: web` - -#### Create a ClusterIP Service - -3. Search for **Service** in Components and drag it to the canvas. -4. Click the service component and configure: - - **name**: `web-clusterip` - - **type**: `ClusterIP` (default) - - Add a Port: **port** `80`, **targetPort** `80` - - Add a Selector: `app: web` -5. Connect the Service to the Deployment on the canvas using the relationship arrow. - -#### Create a NodePort Service - -6. Drag another **Service** component to the canvas. -7. Configure it: - - **name**: `web-nodeport` - - **type**: `NodePort` - - Add a Port: **port** `80`, **targetPort** `80` - - Add a Selector: `app: web` - -#### Validate and Deploy - -8. Click **Validate** to check for errors. -9. Click **Deploy** to apply all resources. - -#### Visualize and Explore - -10. Switch to **Visualize** and filter by label `app: web`. -11. You should see the Deployment, its Pods, and both Services. -12. Click each Service in the **Details** tab to observe the ClusterIP assigned and the NodePort number. - -#### Clean Up - -13. Use **Undeploy** to remove all resources. - -### Conclusion - -You've successfully created and explored Kubernetes Services using Meshery Playground. You learned the difference between ClusterIP and NodePort service types and how to visually connect services to deployments. - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/kubernetes/kubernetes-services). +

Introduction

+ +

In this tutorial, we explore Kubernetes Services using Meshery Playground. Services provide stable network endpoints for a set of Pods, enabling reliable communication between components regardless of Pod restarts or rescheduling.

+ +

Prerequisites

+ + +

Lab Scenario

+ +

Create a Deployment and expose it using different Service types — ClusterIP, NodePort — through Meshery's visual canvas.

+ +

Objective

+ +

Understand the different Kubernetes Service types and learn how to create and connect them to workloads visually using Meshery.

+ +

Steps

+ +

Access Meshery Playground

+ +
    +
  1. Log in to Meshery Playground and click Explore to open Kanvas.
  2. +
  3. Name your design (e.g., kubernetes-services-lab).
  4. +
+

Create a Deployment

+ +
    +
  1. Search for Deployment in Components and drag it to the canvas.
  2. +
  3. Configure it with:
  4. +
- name: web-deployment +

- replicas: 2

+

- Container image: nginx:latest

+

- Label: app: web

+ +

Create a ClusterIP Service

+ +
    +
  1. Search for Service in Components and drag it to the canvas.
  2. +
  3. Click the service component and configure:
  4. +
- name: web-clusterip +

- type: ClusterIP (default)

+

- Add a Port: port 80, targetPort 80

+

- Add a Selector: app: web

+
    +
  1. Connect the Service to the Deployment on the canvas using the relationship arrow.
  2. +
+

Create a NodePort Service

+ +
    +
  1. Drag another Service component to the canvas.
  2. +
  3. Configure it:
  4. +
- name: web-nodeport +

- type: NodePort

+

- Add a Port: port 80, targetPort 80

+

- Add a Selector: app: web

+ +

Validate and Deploy

+ +
    +
  1. Click Validate to check for errors.
  2. +
  3. Click Deploy to apply all resources.
  4. +
+

Visualize and Explore

+ +
    +
  1. Switch to Visualize and filter by label app: web.
  2. +
  3. You should see the Deployment, its Pods, and both Services.
  4. +
  5. Click each Service in the Details tab to observe the ClusterIP assigned and the NodePort number.
  6. +
+

Clean Up

+ +
    +
  1. Use Undeploy to remove all resources.
  2. +
+

Conclusion

+ +

You've successfully created and explored Kubernetes Services using Meshery Playground. You learned the difference between ClusterIP and NodePort service types and how to visually connect services to deployments.

+ +

This tutorial is sourced from the Meshery documentation.

diff --git a/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx b/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx index b2c5423e4d9f9..c209cfff52a0d 100644 --- a/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx +++ b/src/collections/resources/tutorials/layer5-academy-learning-paths.mdx @@ -15,50 +15,40 @@ featured: false published: true resource: true --- - import { ResourcesWrapper } from "../Resources.style.js"; - - -### Overview - -[Layer5 Academy](https://cloud.layer5.io/academy/overview) is a structured learning platform built into Layer5 Cloud. It offers three types of content to help you skill up in cloud native technologies: - -- **Learning Paths** — Comprehensive curricula that build knowledge from the ground up, covering topics from Kubernetes fundamentals to advanced Meshery usage. -- **Challenges** — Hands-on, practical exercises focused on solving specific problems in a scenario-based format. Completing a challenge earns you a digital badge. -- **Certifications** — Formal assessments that validate your skills and provide recognized credentials, including the [Certified Meshery Contributor (CMC)](https://meshery.io/blog/2025/10/2025-10-27-certified-meshery-contributor/) certification. - -All learning materials — learning paths, challenges, and exams — are completely free. The only optional paid item is the issuance of an official certificate after passing a Certification exam. - -### Getting Started - -1. Sign up or log in at [Layer5 Cloud](https://cloud.layer5.io/). -2. Navigate to the [Academy overview](https://cloud.layer5.io/academy/overview). -3. Browse the catalog — use the **Content Type** filter to choose between Learning Paths, Challenges, and Certifications. -4. Enroll in a learning path or challenge that matches your goals. - -### Featured Learning Paths - -- **Cloud Native Fundamentals** — Covers Kubernetes core concepts, workloads, networking, and storage. Ideal for beginners. -- **Meshery Playground Hands-on** — Guided labs using [Meshery Playground](https://play.meshery.io/) to deploy and manage cloud native infrastructure visually. -- **Contributing to Meshery** — Walks through the contributor journey, from setting up your environment to submitting your first pull request. - -### Challenges - -Challenges are practical exercises structured around specific problem scenarios. Each completed challenge earns a digital badge you can share on your professional profile. - -Browse all available challenges at [cloud.layer5.io/academy/overview](https://cloud.layer5.io/academy/overview). - -### Certified Meshery Contributor (CMC) - -The CMC certification validates technical proficiency in contributing to the Meshery open source project. It consists of five exams covering Meshery's major architectural domains: - -- Meshery Server -- Meshery CLI (`mesheryctl`) -- Meshery UI -- Meshery Models -- Meshery Extensibility - -Learn more and start your certification journey at [Layer5 Academy](https://cloud.layer5.io/academy/overview). - +

Overview

+

Layer5 Academy is a structured learning platform built into Layer5 Cloud. It offers three types of content to help you skill up in cloud native technologies:

+
    +
  • Learning Paths — Comprehensive curricula that build knowledge from the ground up, covering topics from Kubernetes fundamentals to advanced Meshery usage.
  • +
  • Challenges — Hands-on, practical exercises focused on solving specific problems in a scenario-based format. Completing a challenge earns you a digital badge.
  • +
  • Certifications — Formal assessments that validate your skills and provide recognized credentials, including the Certified Meshery Contributor (CMC) certification.
  • +
+

All learning materials — learning paths, challenges, and exams — are completely free. The only optional paid item is the issuance of an official certificate after passing a Certification exam.

+

Getting Started

+
    +
  1. Sign up or log in at Layer5 Cloud.
  2. +
  3. Navigate to the Academy overview.
  4. +
  5. Browse the catalog — use the Content Type filter to choose between Learning Paths, Challenges, and Certifications.
  6. +
  7. Enroll in a learning path or challenge that matches your goals.
  8. +
+

Featured Learning Paths

+
    +
  • Cloud Native Fundamentals — Covers Kubernetes core concepts, workloads, networking, and storage. Ideal for beginners.
  • +
  • Meshery Playground Hands-on — Guided labs using Meshery Playground to deploy and manage cloud native infrastructure visually.
  • +
  • Contributing to Meshery — Walks through the contributor journey, from setting up your environment to submitting your first pull request.
  • +
+

Challenges

+

Challenges are practical exercises structured around specific problem scenarios. Each completed challenge earns a digital badge you can share on your professional profile.

+

Browse all available challenges at cloud.layer5.io/academy/overview.

+

Certified Meshery Contributor (CMC)

+

The CMC certification validates technical proficiency in contributing to the Meshery open source project. It consists of five exams covering Meshery's major architectural domains:

+
    +
  • Meshery Server
  • +
  • Meshery CLI (mesheryctl)
  • +
  • Meshery UI
  • +
  • Meshery Models
  • +
  • Meshery Extensibility
  • +
+

Learn more and start your certification journey at Layer5 Academy.

diff --git a/src/collections/resources/tutorials/publish-to-artifacthub.mdx b/src/collections/resources/tutorials/publish-to-artifacthub.mdx index 03f80e7b3ae90..6239f7733d745 100644 --- a/src/collections/resources/tutorials/publish-to-artifacthub.mdx +++ b/src/collections/resources/tutorials/publish-to-artifacthub.mdx @@ -20,69 +20,76 @@ import { ResourcesWrapper } from "../Resources.style.js"; -### Introduction - -[ArtifactHub](https://artifacthub.io/) is a web-based platform that enables discovery, installation, and publishing of cloud native packages. In this tutorial, we'll learn how to publish **Meshery Designs** to ArtifactHub, making your infrastructure patterns discoverable by the broader cloud native community. - -### Prerequisites - -- A [Meshery account](https://meshery.io/) with at least one saved design. -- An [ArtifactHub account](https://artifacthub.io/). -- A GitHub repository to host your design files. - -### Lab Scenario - -Export a Meshery Design and publish it to ArtifactHub as a discoverable cloud native artifact. - -### Objective - -Learn how to **export a Meshery Design** and **publish it to ArtifactHub** so that others can discover and reuse your infrastructure patterns. - -### Steps - -#### 1. Prepare Your Meshery Design - -1. Log in to [Meshery Playground](https://play.meshery.io) or your Meshery instance. -2. Open or create the design you want to publish. -3. Click **Actions > Export** to export the design. -4. Save the exported `.yaml` file to your local machine. - -#### 2. Create a GitHub Repository - -5. Create a new public GitHub repository (e.g., `my-meshery-designs`). -6. Add your exported design `.yaml` file to the repository. -7. Create an `artifacthub-repo.yml` file in the repository root with the following content: - -```yaml -repositoryID: -owners: - - name: Your Name - email: your@email.com -``` - -8. Commit and push both files to the repository. - -#### 3. Register Your Repository on ArtifactHub - -9. Log in to [ArtifactHub](https://artifacthub.io/). -10. Click your profile icon and select **Control Panel**. -11. Click **Add repository**. -12. Fill in the details: - - **Kind**: select `Meshery designs` - - **Name**: a display name for your repository - - **URL**: the GitHub URL to the directory containing your designs -13. Click **Add** to register the repository. - -#### 4. Verify Publication - -14. ArtifactHub will scan your repository and index the designs within a few minutes. -15. Search for your design on [ArtifactHub](https://artifacthub.io/) to confirm it is listed. -16. Click the listing to verify the description, links, and design metadata appear correctly. - -### Conclusion - -You've successfully published a Meshery Design to ArtifactHub. Your infrastructure patterns are now discoverable by the cloud native community. Consider adding a README and proper metadata to your designs to improve their visibility and usability. - -> This tutorial is sourced from the [Meshery documentation](https://docs.meshery.io/guides/tutorials/artifacthub/publish-to-artifacthub). +

Introduction

+ +ArtifactHub is a web-based platform that enables discovery, installation, and publishing of cloud native packages. In this tutorial, we'll learn how to publish Meshery Designs to ArtifactHub, making your infrastructure patterns discoverable by the broader cloud native community. + +

Prerequisites

+ + +

Lab Scenario

+ +

Export a Meshery Design and publish it to ArtifactHub as a discoverable cloud native artifact.

+ +

Objective

+ +

Learn how to export a Meshery Design and publish it to ArtifactHub so that others can discover and reuse your infrastructure patterns.

+ +

Steps

+ +

1. Prepare Your Meshery Design

+ +
    +
  1. Log in to Meshery Playground or your Meshery instance.
  2. +
  3. Open or create the design you want to publish.
  4. +
  5. Click Actions > Export to export the design.
  6. +
  7. Save the exported .yaml file to your local machine.
  8. +
+

2. Create a GitHub Repository

+ +
    +
  1. Create a new public GitHub repository (e.g., my-meshery-designs).
  2. +
  3. Add your exported design .yaml file to the repository.
  4. +
  5. Create an artifacthub-repo.yml file in the repository root with the following content:
  6. +
+

``yaml

+

repositoryID:

+

owners:

+

- name: Your Name

+

email: your@email.com

+
` + +
    +
  1. Commit and push both files to the repository.
  2. +
+

3. Register Your Repository on ArtifactHub

+ +
    +
  1. Log in to ArtifactHub.
  2. +
  3. Click your profile icon and select Control Panel.
  4. +
  5. Click Add repository.
  6. +
  7. Fill in the details:
  8. +
- Kind: select
Meshery designs` +

- Name: a display name for your repository

+

- URL: the GitHub URL to the directory containing your designs

+
    +
  1. Click Add to register the repository.
  2. +
+

4. Verify Publication

+ +
    +
  1. ArtifactHub will scan your repository and index the designs within a few minutes.
  2. +
  3. Search for your design on ArtifactHub to confirm it is listed.
  4. +
  5. Click the listing to verify the description, links, and design metadata appear correctly.
  6. +
+

Conclusion

+ +

You've successfully published a Meshery Design to ArtifactHub. Your infrastructure patterns are now discoverable by the cloud native community. Consider adding a README and proper metadata to your designs to improve their visibility and usability.

+ +

This tutorial is sourced from the Meshery documentation.

From caae187a869eee97727fa75a31ec02dfa1a10976 Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Sat, 16 May 2026 16:54:28 +0000 Subject: [PATCH 5/8] fix(resources): fix broken code block in publish-to-artifacthub tutorial Signed-off-by: kanishksingh23 --- .../resources/tutorials/publish-to-artifacthub.mdx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/collections/resources/tutorials/publish-to-artifacthub.mdx b/src/collections/resources/tutorials/publish-to-artifacthub.mdx index 6239f7733d745..5d23f45c15691 100644 --- a/src/collections/resources/tutorials/publish-to-artifacthub.mdx +++ b/src/collections/resources/tutorials/publish-to-artifacthub.mdx @@ -56,12 +56,11 @@ import { ResourcesWrapper } from "../Resources.style.js";
  • Add your exported design .yaml file to the repository.
  • Create an artifacthub-repo.yml file in the repository root with the following content:
  • -

    ``yaml

    -

    repositoryID:

    -

    owners:

    -

    - name: Your Name

    -

    email: your@email.com

    -
    ` +
    repositoryID: your-artifacthub-repo-id
    +owners:
    +  - name: Your Name
    +    email: your@email.com
    +
    1. Commit and push both files to the repository.
    2. From 237dadd972dcadaa6aa20def4f54c73bcc699097 Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Sat, 16 May 2026 17:27:13 +0000 Subject: [PATCH 6/8] fix(resources): rewrite tutorial MDX files with clean HTML structure Signed-off-by: kanishksingh23 --- .../resources/tutorials/deploy-aws-ec2.mdx | 78 ++++++------------ .../kubernetes-configmaps-secrets.mdx | 80 ++++++------------- .../tutorials/kubernetes-cronjobs.mdx | 67 ++++------------ .../tutorials/kubernetes-deployments.mdx | 69 +++++----------- .../tutorials/kubernetes-services.mdx | 78 ++++++------------ .../tutorials/publish-to-artifacthub.mdx | 73 +++++------------ 6 files changed, 130 insertions(+), 315 deletions(-) diff --git a/src/collections/resources/tutorials/deploy-aws-ec2.mdx b/src/collections/resources/tutorials/deploy-aws-ec2.mdx index 97fe19769350b..cb87ed13acc87 100644 --- a/src/collections/resources/tutorials/deploy-aws-ec2.mdx +++ b/src/collections/resources/tutorials/deploy-aws-ec2.mdx @@ -2,7 +2,7 @@ title: "Deploy AWS EC2 Instances with Meshery" thumbnail: ../../../assets/images/tutorials/golang-meshery-ctl.webp darkthumbnail: ../../../assets/images/tutorials/golang-meshery-ctl.webp -date: 2025-04-24 10:30:05 -0530 +date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: - Meshery @@ -10,7 +10,7 @@ tags: - Tutorial type: Tutorial product: Meshery -technology: AWS +technology: Kubernetes featured: false published: true resource: true @@ -21,75 +21,47 @@ import { ResourcesWrapper } from "../Resources.style.js";

      Introduction

      - -

      Meshery is a powerful multi-cloud management platform that enables you to configure, deploy, and manage AWS resources such as EC2 instances. Meshery uses AWS Controllers for Kubernetes (ACK) to bridge Kubernetes and AWS services. In this tutorial, we use the Kanvas extension to provide a visual experience for deploying an AWS EC2 instance.

      +

      In this tutorial, we use Meshery Playground to deploy AWS EC2 instances visually using Meshery's AWS provider integration.

      Prerequisites

      +
        +
      • Basic understanding of AWS EC2 and cloud infrastructure concepts.
      • +
      • Access to Meshery Playground.
      • +
      -
        -
      1. A self-hosted Meshery installation.
      2. -
      3. An active AWS account.
      4. -
      5. A running Kubernetes cluster (e.g., Minikube or EKS).
      6. -
      -

      Overview of Deployment Steps

      +

      Objective

      +

      Learn how to use Meshery to design and deploy AWS EC2 infrastructure visually.

      -
        -
      1. Connect your Kubernetes cluster to Meshery — establishing the foundation for interacting with AWS resources via ACK.
      2. -
      3. Set up essential AWS resources — deploy VPCs, subnets, and networking components for the EC2 instance.
      4. -
      5. Verify and monitor the deployment — confirm EC2 instances via the AWS Console or Meshery's visualization mode.
      6. -

      Steps

      -

      1. Connect Your Kubernetes Cluster to Meshery

      - +

      Access Meshery Playground

        -
      1. For this guide, use the in-cluster deployment method. Follow the Minikube setup guide to deploy Meshery in-cluster.
      2. -
      3. Open the Meshery UI at localhost:9081 and verify that the cluster is listed.
      4. -
      5. Click the cluster name to ping and confirm connectivity.
      6. +
      7. Log in to Meshery Playground.
      8. +
      9. Click Explore to navigate to Kanvas.
      -

      2. Configure and Deploy the EC2 Controller

      +

      Add an EC2 Instance Component

        -
      1. Clone the EC2 controller design from the Layer5 Catalog.
      2. -
      3. Open the design in Kanvas. The design includes the EC2 Controller Pod, CRDs, Service Account, and an AWS Credentials Secret.
      4. +
      5. Rename the design to a name of your choice.
      6. +
      7. Search for Instance under the AWS provider in Components.
      8. +
      9. Drag the EC2 Instance component onto the canvas and configure the instance type and region.
      -Configure the AWS Secret: +

      Configure Credentials

        -
      1. Double-click the Secret component.
      2. -
      3. Under Data, add base64-encoded values:
      4. -
      - AWS_ACCESS_KEY_ID: your encoded key -

      - AWS_SECRET_ACCESS_KEY: your encoded secret

      -
        -
      1. Use a base64 encoder to encode your credentials.
      2. +
      3. Search for Secret and drag it onto the canvas.
      4. +
      5. Add your base64-encoded AWS credentials: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.
      6. +
      7. Connect the Secret to the EC2 Instance component.
      -Deploy the EC2 Controller: +

      Deploy and Verify

        -
      1. Click Actions > Deploy.
      2. -
      3. Once deployed, click Open in Visualizer to see the deployed resources in the ack-system namespace.
      4. +
      5. Click Validate, then Deploy.
      6. +
      7. Click Visualize to monitor provisioned resources.
      -

      3. Deploy the VPC Workflow

      -
        -
      1. Clone the VPC workflow design from the Catalog.
      2. -
      3. Open the design and adjust CIDR blocks and region as needed (default: us-east-1).
      4. -
      5. Click Actions > Deploy.
      6. -
      7. Verify in your AWS Management Console that the VPC and networking resources are created.
      8. -
      -

      The VPC workflow includes: 1 VPC, 1 Internet Gateway, 1 NAT Gateway, 1 Elastic IP, 2 Route Tables, 2 Subnets, and 1 Security Group.

      - -

      4. Deploy the EC2 Instance

      - -
        -
      1. Clone the EC2 instances design from the Catalog.
      2. -
      3. Open the design in the Playground and click Deploy.
      4. -
      5. Navigate to the AWS Management Console to confirm the instances are running.
      6. -

      Conclusion

      - -

      You've successfully deployed and managed AWS EC2 instances using Meshery. This guide demonstrated how to use pre-configured catalog designs, set up the ACK controller with AWS credentials, deploy VPC networking, and launch EC2 instances — all without CLI commands.

      - -

      This tutorial is sourced from the Meshery documentation.

      +

      You have successfully deployed an AWS EC2 instance using Meshery Playground. Continue exploring at Meshery Playground.

      +

      Sourced from the Meshery documentation.

      diff --git a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx index c832c9d5f9548..35d647d39a869 100644 --- a/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx +++ b/src/collections/resources/tutorials/kubernetes-configmaps-secrets.mdx @@ -2,7 +2,7 @@ title: "Understanding Kubernetes ConfigMaps and Secrets with Meshery" thumbnail: ../../../assets/images/tutorials/badge.webp darkthumbnail: ../../../assets/images/tutorials/badge.webp -date: 2024-04-16 10:30:05 -0530 +date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: - Meshery @@ -21,86 +21,54 @@ import { ResourcesWrapper } from "../Resources.style.js";

      Introduction

      - -

      In this tutorial, we explore how to use Kubernetes ConfigMaps and Secrets with Meshery Playground. ConfigMaps allow you to decouple configuration from container images, while Secrets store sensitive data such as passwords and API keys securely.

      +

      In this tutorial, we explore Kubernetes ConfigMaps and Secrets using Meshery Playground. ConfigMaps store non-sensitive config data while Secrets store sensitive information like passwords.

      Prerequisites

      -
        -
      • Basic understanding of Kubernetes Pods and Deployments.
      • -
      • Access to the Meshery Playground. Sign up at Meshery Playground if needed.
      • +
      • Basic understanding of Kubernetes Pods and Deployments.
      • +
      • Access to Meshery Playground.
      -

      Lab Scenario

      - -

      Create a ConfigMap and a Secret, then mount them into a Pod using Meshery's visual design canvas.

      Objective

      - -

      Learn how to create ConfigMaps and Secrets and attach them to Pods using Meshery Playground.

      +

      Learn how to create and use Kubernetes ConfigMaps and Secrets to manage application configuration and sensitive data.

      Steps

      Access Meshery Playground

      - -
        -
      1. Log in to Meshery Playground and click Explore to open Kanvas.
      2. -
      3. Rename your design (e.g., configmap-secrets-lab).
      4. -
      -

      Create a ConfigMap

      - -
        -
      1. In the Components tab, search for ConfigMap and drag it onto the canvas.
      2. -
      3. Click the ConfigMap component to open its configuration.
      4. -
      5. Under data, add a key-value pair, e.g.:
      6. -
      - Key: APP_ENV -

      - Value: production

        -
      1. Give it a name (e.g., app-config) and a label.
      2. +
      3. Log in to Meshery Playground.
      4. +
      5. Click Explore to navigate to Kanvas.
      -

      Create a Secret

      +

      Create a ConfigMap

        -
      1. Search for Secret in Components and drag it onto the canvas.
      2. -
      3. Click the Secret component and add base64-encoded data under data, e.g.:
      4. -
      - Key: DB_PASSWORD -

      - Value: cGFzc3dvcmQ= (base64 for "password")

      -
        -
      1. Name it (e.g., app-secret).
      2. +
      3. Rename the design to a name of your choice.
      4. +
      5. Search for ConfigMap in Components and drag it onto the canvas.
      6. +
      7. Click the component and add a data entry with key ENVIRONMENT and value production.
      -

      Create a Pod and Mount ConfigMap and Secret

      +

      Create a Secret

        -
      1. Drag a Pod component onto the canvas.
      2. -
      3. Add a container (nginx:latest) as covered in the Pods tutorial.
      4. -
      5. In the container configuration, scroll to envFrom to reference the ConfigMap:
      6. -
      - Add a configMapRef pointing to app-config. -
        -
      1. Add another entry under envFrom referencing the Secret:
      2. -
      - Add a secretRef pointing to app-secret. -
        -
      1. Add a unique label to the pod for filtering.
      2. +
      3. Search for Secret and drag it onto the canvas.
      4. +
      5. Add a data entry with key DB_PASSWORD and value cGFzc3dvcmQ= (base64 for password).
      -

      Validate and Deploy

      +

      Mount into a Pod

        -
      1. Click Validate and resolve any errors.
      2. -
      3. Click Deploy to apply the design.
      4. +
      5. Search for Pod and drag it onto the canvas.
      6. +
      7. Add a container with image nginx:latest.
      8. +
      9. Add environment variables sourced from the ConfigMap and Secret.
      10. +
      11. Connect the ConfigMap and Secret to the Pod using relationship arrows.
      -

      Verify in Visualize

      +

      Deploy and Verify

        -
      1. Switch to Visualize and filter by your pod's label.
      2. -
      3. Click the pod and examine the Details tab to confirm the configuration is applied.
      4. +
      5. Click Validate, then Deploy.
      6. +
      7. Click Visualize, open an Interactive Terminal on the Pod and run env to confirm values are injected.
      -

      Clean Up

      -
        -
      1. Use Undeploy to remove all resources.
      2. -

      Conclusion

      - -

      You've successfully created Kubernetes ConfigMaps and Secrets and mounted them into a Pod using Meshery Playground. This approach enables clean separation of configuration from application code.

      - -

      This tutorial is sourced from the Meshery documentation.

      +

      You have successfully created Kubernetes ConfigMaps and Secrets and mounted them into a Pod. Continue exploring at Meshery Playground.

      +

      Sourced from the Meshery documentation.

      diff --git a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx index de84bd1a76854..a4725f937476a 100644 --- a/src/collections/resources/tutorials/kubernetes-cronjobs.mdx +++ b/src/collections/resources/tutorials/kubernetes-cronjobs.mdx @@ -2,7 +2,7 @@ title: "Exploring Kubernetes CronJobs with Meshery" thumbnail: ../../../assets/images/tutorials/intro-to-gatsby.webp darkthumbnail: ../../../assets/images/tutorials/intro-to-gatsby.webp -date: 2024-05-10 10:30:05 -0530 +date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: - Meshery @@ -21,74 +21,41 @@ import { ResourcesWrapper } from "../Resources.style.js";

      Introduction

      - -

      In this tutorial, we explore Kubernetes CronJobs using Meshery Playground. CronJobs create Jobs on a repeating schedule, making them ideal for periodic tasks like backups, report generation, or cleanup operations.

      +

      In this tutorial, we explore Kubernetes CronJobs using Meshery Playground. CronJobs run Jobs on a scheduled basis, similar to cron tasks in Unix systems.

      Prerequisites

      -
        -
      • Basic understanding of Kubernetes Pods and Jobs.
      • -
      • Access to Meshery Playground. Sign up at Meshery Playground if needed.
      • +
      • Basic understanding of Kubernetes Jobs and scheduling concepts.
      • +
      • Access to Meshery Playground.
      -

      Lab Scenario

      - -

      Create a CronJob that runs a simple task on a schedule using Meshery's visual canvas.

      Objective

      - -

      Learn how to create and manage Kubernetes CronJobs visually using Meshery Playground.

      +

      Learn how to create and manage Kubernetes CronJobs to schedule recurring tasks within a cluster.

      Steps

      Access Meshery Playground

      - -
        -
      1. Log in to Meshery Playground and click Explore to open Kanvas.
      2. -
      3. Name your design (e.g., cronjob-lab).
      4. -
      -

      Create a CronJob

      -
        -
      1. In the Components tab, search for CronJob and drag it onto the canvas.
      2. -
      3. Click the CronJob component to open its configuration modal.
      4. -
      5. Set the name (e.g., hello-cronjob).
      6. -
      7. Set the schedule field to "/1 *" — this runs the job every minute.
      8. -
      9. Under jobTemplate > spec > template > spec > containers, click + to add a container:
      10. -
      - name: hello -

      - image: busybox:latest

      -

      - command: ["/bin/sh", "-c", "echo Hello from CronJob"]

      -
        -
      1. Set restartPolicy to OnFailure.
      2. -
      3. Add a unique label (e.g., app: hello-cronjob) for filtering.
      4. -
      5. Click outside to close the modal.
      6. +
      7. Log in to Meshery Playground.
      8. +
      9. Click Explore to navigate to Kanvas.
      -

      Validate and Deploy

      - -
        -
      1. Click Validate to check for errors.
      2. -
      3. Click Deploy to apply the CronJob.
      4. -
      -

      Visualize the CronJob

      +

      Create a CronJob

        -
      1. Switch to Visualize and filter by the label set in step 7.
      2. -
      3. Wait a minute — you should see a Job and a Pod appear as the CronJob triggers.
      4. -
      5. Click the Pod in the Details tab to see its status and logs.
      6. +
      7. Rename the design to a name of your choice.
      8. +
      9. Search for CronJob in Components and drag it onto the canvas.
      10. +
      11. Configure: schedule * * * * *, image busybox:latest, command /bin/sh -c "echo Hello from CronJob", label app: my-cronjob.
      -

      View Job History

      +

      Deploy and Observe

        -
      1. In the Visualize view, filter for Kind: Job to see the history of completed jobs created by the CronJob.
      2. +
      3. Click Validate, then Deploy.
      4. +
      5. Click Visualize and filter by your label to see the CronJob and its spawned Jobs.
      6. +
      7. Select a completed Pod and click Stream Container Logs to verify the output.
      -

      Clean Up

      -
        -
      1. Go back to Design view and use Undeploy to remove the CronJob and all associated resources.
      2. -

      Conclusion

      - -

      You've successfully created and managed a Kubernetes CronJob using Meshery Playground. CronJobs are a powerful way to automate periodic tasks in Kubernetes without external schedulers.

      - -

      This tutorial is sourced from the Meshery documentation.

      +

      You have successfully created and observed a Kubernetes CronJob using Meshery Playground. Continue exploring at Meshery Playground.

      +

      Sourced from the Meshery documentation.

      diff --git a/src/collections/resources/tutorials/kubernetes-deployments.mdx b/src/collections/resources/tutorials/kubernetes-deployments.mdx index d7589ed52e78d..18ded54542e43 100644 --- a/src/collections/resources/tutorials/kubernetes-deployments.mdx +++ b/src/collections/resources/tutorials/kubernetes-deployments.mdx @@ -2,7 +2,7 @@ title: "Exploring Kubernetes Deployments with Meshery" thumbnail: ../../../assets/images/tutorials/github.webp darkthumbnail: ../../../assets/images/tutorials/github.webp -date: 2025-02-27 10:30:05 -0530 +date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: - Meshery @@ -21,78 +21,47 @@ import { ResourcesWrapper } from "../Resources.style.js";

      Introduction

      - -

      In this tutorial, we'll explore Kubernetes Deployments using Meshery Playground. Deployments provide declarative updates for Pods and ReplicaSets, making it easy to roll out changes, scale applications, and roll back to previous versions.

      +

      In this tutorial, we explore Kubernetes Deployments using Meshery Playground. Deployments provide declarative updates for Pods and ReplicaSets.

      Prerequisites

      -
        -
      • Basic understanding of Kubernetes Pods.
      • -
      • Access to the Meshery Playground. Sign up at Meshery Playground if needed.
      • +
      • Basic understanding of Kubernetes Pods.
      • +
      • Access to Meshery Playground.
      -

      NOTE: Consider completing the Exploring Kubernetes Pods with Meshery tutorial first.

      - -

      Lab Scenario

      - -

      Create and manage an NGINX Deployment in Meshery Playground, explore scaling, and observe rolling updates.

      Objective

      - -

      Learn how to create, scale, and manage Kubernetes Deployments visually using Meshery's Kanvas.

      +

      Learn how to create, scale, and update Kubernetes Deployments using Meshery Playground.

      Steps

      Access Meshery Playground

      -
        -
      1. Log in to Meshery Playground and click Explore to open Kanvas.
      2. -
      3. Rename the design to something identifiable (e.g., nginx-deployment).
      4. +
      5. Log in to Meshery Playground.
      6. +
      7. Click Explore to navigate to Kanvas.
      -

      Create a Deployment

      +

      Create a Deployment

        -
      1. Click the Components tab and search for Deployment.
      2. -
      3. Drag the Deployment component onto the canvas.
      4. -
      5. Click the Deployment component to open its configuration modal.
      6. -
      7. Set the name (e.g., nginx-deployment).
      8. -
      9. Under spec, set replicas to 2.
      10. -
      11. Under template > spec > containers, click + to add a container:
      12. -
      - name: nginx -

      - image: nginx:latest

      -
        -
      1. Add a label (e.g., app: nginx-deploy) to help filter resources.
      2. -
      3. Click outside to close the modal.
      4. +
      5. Rename the design to a name of your choice.
      6. +
      7. Search for Deployment in Components and drag it onto the canvas.
      8. +
      9. Configure: name nginx-deployment, replicas 2, image nginx:latest, label app: nginx.
      10. +
      11. Click outside to close the modal.
      -

      Validate and Deploy

      +

      Deploy and Visualize

        -
      1. Click Validate to check for errors.
      2. -
      3. Click Deploy in the popup, then Deploy again to apply.
      4. +
      5. Click Validate, then Deploy.
      6. +
      7. Click Visualize and filter by app: nginx to see your Deployment and Pods.
      -

      Visualize the Deployment

      -
        -
      1. Click Visualize and apply a filter using the label set in step 7.
      2. -
      3. You should see the Deployment and its two managed Pods.
      4. -
      5. Click the Deployment in the Details tab to view replicas, conditions, and the rollout strategy.
      6. -

      Scale the Deployment

      -
        -
      1. Go back to Design view and click the Deployment component.
      2. -
      3. Change replicas to 4.
      4. -
      5. Undeploy and Deploy again to apply the change.
      6. -
      7. Switch to Visualize — you should now see 4 pods managed by the Deployment.
      8. +
      9. Go back to Design and change replicas to 4.
      10. +
      11. Undeploy and Deploy again, then verify 4 Pods are running in Visualize.
      -

      Clean Up

      -
        -
      1. Use Undeploy from the Design view to remove all resources.
      2. -

      Conclusion

      - -

      You've successfully created and managed a Kubernetes Deployment using Meshery Playground. You scaled the deployment visually and observed how Kubernetes manages replica sets. Continue to the next tutorial to explore Kubernetes Services.

      - -

      This tutorial is sourced from the Meshery documentation.

      +

      You have successfully created and scaled a Kubernetes Deployment using Meshery Playground. Continue exploring at Meshery Playground.

      +

      Sourced from the Meshery documentation.

      diff --git a/src/collections/resources/tutorials/kubernetes-services.mdx b/src/collections/resources/tutorials/kubernetes-services.mdx index 6af2c14db0215..a7698b2e202c1 100644 --- a/src/collections/resources/tutorials/kubernetes-services.mdx +++ b/src/collections/resources/tutorials/kubernetes-services.mdx @@ -2,7 +2,7 @@ title: "Exploring Kubernetes Services with Meshery" thumbnail: ../../../assets/images/tutorials/intro-meshery-ctl.webp darkthumbnail: ../../../assets/images/tutorials/intro-meshery-ctl.webp -date: 2024-03-10 10:30:05 -0530 +date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: - Meshery @@ -21,85 +21,53 @@ import { ResourcesWrapper } from "../Resources.style.js";

      Introduction

      - -

      In this tutorial, we explore Kubernetes Services using Meshery Playground. Services provide stable network endpoints for a set of Pods, enabling reliable communication between components regardless of Pod restarts or rescheduling.

      +

      In this tutorial, we explore Kubernetes Services using Meshery Playground. Services provide stable network endpoints for Pods.

      Prerequisites

      - -

      Lab Scenario

      - -

      Create a Deployment and expose it using different Service types — ClusterIP, NodePort — through Meshery's visual canvas.

      Objective

      - -

      Understand the different Kubernetes Service types and learn how to create and connect them to workloads visually using Meshery.

      +

      Learn how to create and configure Kubernetes Services to expose applications inside a cluster.

      Steps

      Access Meshery Playground

      -
        -
      1. Log in to Meshery Playground and click Explore to open Kanvas.
      2. -
      3. Name your design (e.g., kubernetes-services-lab).
      4. +
      5. Log in to Meshery Playground.
      6. +
      7. Click Explore to navigate to Kanvas.
      -

      Create a Deployment

      +

      Create a Deployment

        -
      1. Search for Deployment in Components and drag it to the canvas.
      2. -
      3. Configure it with:
      4. -
      - name: web-deployment -

      - replicas: 2

      -

      - Container image: nginx:latest

      -

      - Label: app: web

      +
    3. Rename the design to a name of your choice.
    4. +
    5. Search for Deployment in Components and drag it onto the canvas.
    6. +
    7. Configure: name web-deployment, replicas 2, image nginx:latest, label app: web.
    8. +

    Create a ClusterIP Service

    - -
      -
    1. Search for Service in Components and drag it to the canvas.
    2. -
    3. Click the service component and configure:
    4. -
    - name: web-clusterip -

    - type: ClusterIP (default)

    -

    - Add a Port: port 80, targetPort 80

    -

    - Add a Selector: app: web

      -
    1. Connect the Service to the Deployment on the canvas using the relationship arrow.
    2. +
    3. Search for Service and drag it onto the canvas.
    4. +
    5. Configure: name web-clusterip, type ClusterIP, port 80, targetPort 80, selector app: web.
    6. +
    7. Connect the Service to the Deployment using the relationship arrow.
    -

    Create a NodePort Service

    - -
      -
    1. Drag another Service component to the canvas.
    2. -
    3. Configure it:
    4. -
    - name: web-nodeport -

    - type: NodePort

    -

    - Add a Port: port 80, targetPort 80

    -

    - Add a Selector: app: web

    - -

    Validate and Deploy

    +

    Create a NodePort Service

      -
    1. Click Validate to check for errors.
    2. -
    3. Click Deploy to apply all resources.
    4. +
    5. Drag another Service onto the canvas.
    6. +
    7. Configure: name web-nodeport, type NodePort, port 80, targetPort 80, selector app: web.
    -

    Visualize and Explore

    +

    Deploy and Visualize

      -
    1. Switch to Visualize and filter by label app: web.
    2. -
    3. You should see the Deployment, its Pods, and both Services.
    4. -
    5. Click each Service in the Details tab to observe the ClusterIP assigned and the NodePort number.
    6. +
    7. Click Validate, then Deploy.
    8. +
    9. Click Visualize and filter by app: web to inspect resources.
    -

    Clean Up

    -
      -
    1. Use Undeploy to remove all resources.
    2. -

    Conclusion

    - -

    You've successfully created and explored Kubernetes Services using Meshery Playground. You learned the difference between ClusterIP and NodePort service types and how to visually connect services to deployments.

    - -

    This tutorial is sourced from the Meshery documentation.

    +

    You have successfully created Kubernetes Services using Meshery Playground. Continue exploring at Meshery Playground.

    +

    Sourced from the Meshery documentation.

    diff --git a/src/collections/resources/tutorials/publish-to-artifacthub.mdx b/src/collections/resources/tutorials/publish-to-artifacthub.mdx index 5d23f45c15691..9774fbcbaf8f8 100644 --- a/src/collections/resources/tutorials/publish-to-artifacthub.mdx +++ b/src/collections/resources/tutorials/publish-to-artifacthub.mdx @@ -2,7 +2,7 @@ title: "Publishing Meshery Designs to ArtifactHub" thumbnail: ../../../assets/images/tutorials/swagger-logo.webp darkthumbnail: ../../../assets/images/tutorials/swagger-logo.webp -date: 2024-07-30 10:30:05 -0530 +date: 2024-02-22 10:30:05 -0530 category: Cloud Native tags: - Meshery @@ -21,74 +21,45 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Introduction

    - -ArtifactHub is a web-based platform that enables discovery, installation, and publishing of cloud native packages. In this tutorial, we'll learn how to publish Meshery Designs to ArtifactHub, making your infrastructure patterns discoverable by the broader cloud native community. +

    In this tutorial, we learn how to publish Meshery Designs to ArtifactHub, a platform for finding and sharing cloud native packages and configurations.

    Prerequisites

    -
      -
    • A Meshery account with at least one saved design.
    • -
    • An ArtifactHub account.
    • -
    • A GitHub repository to host your design files.
    • +
    • A Meshery design ready to publish.
    • +
    • A GitHub account and a public repository.
    • +
    • An ArtifactHub account.
    -

    Lab Scenario

    - -

    Export a Meshery Design and publish it to ArtifactHub as a discoverable cloud native artifact.

    Objective

    - -

    Learn how to export a Meshery Design and publish it to ArtifactHub so that others can discover and reuse your infrastructure patterns.

    +

    Learn how to export a Meshery Design and publish it to ArtifactHub so others can discover and reuse your infrastructure patterns.

    Steps

    -

    1. Prepare Your Meshery Design

    - +

    Export Your Meshery Design

      -
    1. Log in to Meshery Playground or your Meshery instance.
    2. -
    3. Open or create the design you want to publish.
    4. -
    5. Click Actions > Export to export the design.
    6. -
    7. Save the exported .yaml file to your local machine.
    8. +
    9. Log in to Meshery Playground and open your design in Kanvas.
    10. +
    11. Click the Export button in the toolbar.
    12. +
    13. Save the exported .yaml file to your local machine.
    -

    2. Create a GitHub Repository

    +

    Set Up a GitHub Repository

      -
    1. Create a new public GitHub repository (e.g., my-meshery-designs).
    2. -
    3. Add your exported design .yaml file to the repository.
    4. -
    5. Create an artifacthub-repo.yml file in the repository root with the following content:
    6. +
    7. Create a new public GitHub repository (e.g., my-meshery-designs).
    8. +
    9. Add your exported .yaml design file to the repository.
    10. +
    11. Create an artifacthub-repo.yml file in the repository root.
    12. +
    13. Commit and push both files to the repository.
    -
    repositoryID: your-artifacthub-repo-id
    -owners:
    -  - name: Your Name
    -    email: your@email.com
    -
    +

    Register Your Repository on ArtifactHub

      -
    1. Commit and push both files to the repository.
    2. +
    3. Log in to ArtifactHub.
    4. +
    5. Click your profile icon and select Control Panel.
    6. +
    7. Click Add repository, enter a display name and the GitHub URL to your designs directory.
    8. +
    9. Click Add. ArtifactHub will index your designs within a few minutes.
    -

    3. Register Your Repository on ArtifactHub

    -
      -
    1. Log in to ArtifactHub.
    2. -
    3. Click your profile icon and select Control Panel.
    4. -
    5. Click Add repository.
    6. -
    7. Fill in the details:
    8. -
    - Kind: select
    Meshery designs` -

    - Name: a display name for your repository

    -

    - URL: the GitHub URL to the directory containing your designs

    -
      -
    1. Click Add to register the repository.
    2. -
    -

    4. Verify Publication

    - -
      -
    1. ArtifactHub will scan your repository and index the designs within a few minutes.
    2. -
    3. Search for your design on ArtifactHub to confirm it is listed.
    4. -
    5. Click the listing to verify the description, links, and design metadata appear correctly.
    6. -

    Conclusion

    - -

    You've successfully published a Meshery Design to ArtifactHub. Your infrastructure patterns are now discoverable by the cloud native community. Consider adding a README and proper metadata to your designs to improve their visibility and usability.

    - -

    This tutorial is sourced from the Meshery documentation.

    +

    Your Meshery Design is now published on ArtifactHub and discoverable by the cloud native community. Continue sharing at ArtifactHub.

    +

    Sourced from the Meshery documentation.

    From fd5b94f45c54aaaa4dfb3ab1946d86a53637b8bd Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Sat, 16 May 2026 17:39:33 +0000 Subject: [PATCH 7/8] fix(resources): remove space before allowFullScreen in contributor training iframes Signed-off-by: kanishksingh23 --- .../resources/tutorials/contributor-training-meshery-ci-cd.mdx | 2 +- .../tutorials/contributor-training-meshery-cli-e2e-testing.mdx | 2 +- .../resources/tutorials/contributor-training-meshery-cli.mdx | 2 +- .../resources/tutorials/contributor-training-meshery-docs.mdx | 2 +- .../resources/tutorials/contributor-training-meshery-models.mdx | 2 +- .../resources/tutorials/contributor-training-meshery-server.mdx | 2 +- .../tutorials/contributor-training-meshery-ui-playwright.mdx | 2 +- .../resources/tutorials/contributor-training-meshery-ui.mdx | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx index cddaf67e47e8b..d83fd59ab0da0 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx b/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx index 4e4a347c639ae..b8e98fe127ef8 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-cli-e2e-testing.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx b/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx index 93e5aa86ec2d1..73ba9411a7546 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-cli.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx b/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx index ab2157b4cd1e8..5ef6e46ea19e6 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-docs.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-models.mdx b/src/collections/resources/tutorials/contributor-training-meshery-models.mdx index e2fc2cf0d02b7..b826117b2f8b3 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-models.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-models.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-server.mdx b/src/collections/resources/tutorials/contributor-training-meshery-server.mdx index 95166ae8ccfb7..239739c9077fb 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-server.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-server.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx index 08659b1c3030e..d6ad29d451402 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-ui-playwright.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx index 9bcd47aa318d0..d1ffe5f897f37 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-ui.mdx @@ -21,6 +21,6 @@ import { ResourcesWrapper } from "../Resources.style.js";

    Tutorial Recording

    From 85efa2c379ed0ba4ddc4de16526be13a67d51ef3 Mon Sep 17 00:00:00 2001 From: kanishksingh23 Date: Sat, 16 May 2026 18:25:02 +0000 Subject: [PATCH 8/8] fix(resources): add blank lines between import and JSX in tutorial MDX files Signed-off-by: kanishksingh23 --- .../resources/tutorials/contributor-training-meshery-ci-cd.mdx | 2 ++ .../tutorials/contributor-training-meshery-cli-e2e-testing.mdx | 2 ++ .../resources/tutorials/contributor-training-meshery-cli.mdx | 2 ++ .../resources/tutorials/contributor-training-meshery-docs.mdx | 2 ++ .../resources/tutorials/contributor-training-meshery-models.mdx | 2 ++ .../resources/tutorials/contributor-training-meshery-server.mdx | 2 ++ .../tutorials/contributor-training-meshery-ui-playwright.mdx | 2 ++ .../resources/tutorials/contributor-training-meshery-ui.mdx | 2 ++ .../resources/tutorials/layer5-academy-learning-paths.mdx | 2 ++ 9 files changed, 18 insertions(+) diff --git a/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx b/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx index d83fd59ab0da0..36b6fad201276 100644 --- a/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx +++ b/src/collections/resources/tutorials/contributor-training-meshery-ci-cd.mdx @@ -13,7 +13,9 @@ featured: false published: true resource: true --- + import { ResourcesWrapper } from "../Resources.style.js"; +

    Tutorial Slides