meshery / helm-kanvas-snapshot

Apache License 2.0
17 stars 15 forks source link
architecture-diagram helm kanvas kubernetes layer5 meshery solution-architecture topology

Meshery Extension: Kanvas Snapshot Helm Plugin

Meshery Extensions are plugins or add-ons that enhance the functionality of the Meshery platform beyond its core capabilities. Meshery supports different types of extensions (docs):

Table of Contents

Extension Overview

The Kanvas Snapshot Helm Plugin allows users to generate a visual snapshot of their Helm charts directly from the command line. It simplifies the process of creating Meshery Snapshots, providing a visual representation of packaged Helm charts. This plugin integrates with Meshery Cloud and GitHub Actions to automate the workflow of snapshot creation, which is especially useful for Helm users who need to quickly visualize their chart configurations.

Helm charts can be complex, especially when custom configurations are applied via values.yaml files. This Meshery extension bridges the gap between Helm chart configurations and their visual representation by converting Helm charts into Kanvas Snapshots. These snapshots can be received either via email or as a URL displayed directly in the terminal.

Features

  1. Snapshot Generation: Create visual snapshots of Helm charts, complete with associated resources.
  2. Synchronous/Asynchronous Delivery: Choose between receiving snapshots via email or directly in the terminal.
  3. Seamless Integration: Leverages Meshery Cloud and GitHub Actions to handle snapshot rendering.
  4. Support for Packaged Charts: Works with both packaged .tar.gz charts and unpackaged Helm charts.

Installation and Use

To install the Meshery Snapshot Helm Plugin, use the following steps:

Prerequisites

Plugin Installation

  1. Run the following command to install the Helm Kanvas Snapshot plugin:

    helm plugin install https://github.com/meshery/helm-kanvas-snapshot
  2. Verify the installation by running:

    helm plugin list

    You should see the Kanvas Snapshot listed as snapshot.

  3. Set up the required environment variables (see the Environment Variables section).

Usage

Once the plugin is installed, you can generate a snapshot using either a packaged or unpackaged Helm chart.

helm snapshot -f <chart-URI> [-n <snapshot-name>] [-e <email>]

Example

To generate a snapshot for a Helm chart located at https://meshery.io/charts/v0.8.0-meshery.tar.gz, you can use:

helm snapshot -f https://meshery.io/charts/v0.8.0-meshery.tar.gz -n meshery-chart

Contributing

Please do! Thank you for your help in improving this Meshery extension! :balloon:

Start by forking the repository.

1. Fork the Repository

To get started, you'll first need to clone the Meshery Snapshot Helm Plugin repository from GitHub. Run the following command in your terminal:

git clone https://github.com/layer5labs/meshery-extensions-packages.git

2. Navigate to the Plugin Directory

Once the repository is cloned, navigate to the helm-kanvas-snapshot directory.

cd helm-kanvas-snapshot

3. Replace the placeholder values with your actual credentials.

4. Build the binary

make

5. Install the Snapshot plugin

helm plugin install kanvas-snapshot

6. Test the Plugin Locally

Once the plugin is built, you can test it locally. For example, to generate a snapshot for a Helm chart, run the following command:

helm kanvas-snapshot -f https://meshery.io/charts/v0.8.0-meshery.tar.gz -n meshery-chart

This command will trigger the snapshot generation process. If everything is set up correctly, you should see a visual snapshot URL or receive the snapshot via email, depending on the options you specified.

7. Debugging

If you encounter any issues during testing, check the log file generated in the snapshot-plugin directory. The logs can provide more insight into any errors that may occur.

To check the logs, open the log file in your preferred text editor:

cat snapshot.log

This file contains a timestamped log of operations performed during the snapshot generation process.

 

Join the Meshery community!

Our projects are community-built and welcome collaboration. 👍 Be sure to see the Contributor Journey Map and Community Handbook for a tour of resources available to you and the Repository Overview for a cursory description of repository by technology and programming language. Jump into community Slack or discussion forum to participate.

MeshMates

Find your MeshMate

MeshMates are experienced Layer5 community members, who will help you learn your way around, discover live projects, and expand your community network. Connect with a Meshmate today!

Find out more on the Layer5 community.



Layer5 Cloud Native Community

✔️ Join any or all of the weekly meetings on community calendar.
✔️ Watch community meeting recordings.
✔️ Fill-in a community member form to gain access to community resources.
✔️ Discuss in the Community Forum.
✔️ Explore more in the Community Handbook.



Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode.


     Not sure where to start? Grab an open issue with the help-wanted label.



 
## Contributing Please do! We're a warm and welcoming community of open source contributors. Please join. All types of contributions are welcome. Be sure to read the [Contributor Guides](https://docs.meshery.io/project/contributing) for a tour of resources available to you and how to get started.
 
### Show Your Support

If you like Meshery, please star this repository to show your support! 🤩

### License This repository and site are available as open-source under the terms of the [Apache 2.0 License](https://opensource.org/licenses/Apache-2.0).