Dry Running Designs
Categories:
Dry Run lets you try out your design without making any changes to your Kubernetes clusters.
It’s a safe way to check if everything is set up correctly before you actually deploy.

Why you should perform Dry Runs
- Catch mistakes early before real resources are created or modified.
- Validate permissions to ensure your service account can perform the intended actions.
- Ensure compatibility with your cluster’s API versions and admission policies.
- Speed up reviews by sharing simulation results instead of waiting for full deployments.
Dry Run does not create, update, or delete any live resources.
How to Perform a Dry Run
In Kanvas, there are two ways to trigger a Dry Run—via the Actions dropdown or the arrow-shaped dropdown in design mode. Both options perform exactly the same operation:
- They simulate the deployment or undeployment of your design across all selected Kubernetes clusters.
- They use the same backend mechanism and validation pipeline.
- The results of the simulation are identical regardless of the entry point.
The only difference lies in how results are delivered:
- Actions Dropdown: A modal window appears to display the dry-run results.
- Arrow Dropdown: Feedback is shown in the Notification Center.
To Start a Dry Run
- Navigate to Kanvas.
- Choose one of the following entry points:
- Actions dropdown
- Arrow-shaped dropdown
- Actions dropdown
- Select Dry Run.
Depending on the entry point, you will either see a modal or receive a notification, but the operation and its output remain the same.1.
How It Works
When you trigger a Dry Run in Meshery, the following steps happen behind the scenes:
Frontend Sends a Dry Run Request
Meshery’s UI sends your design and selected Kubernetes clusters to the server, with the Dry Run option enabled.Backend Simulates Deployment
Meshery reads your design and prepares it for deployment, but instead of applying changes, it simulates the actions against the selected Kubernetes clusters.Kubernetes Validates the Changes
Meshery asks Kubernetes to review the deployment using its built-in dry-run feature, checking if the resources would succeed without actually creating or modifying anything.Results Are Returned
Simulation results for each component and each cluster are collected and sent back to the UI. You can view any errors or warnings directly in the Notification Center.
Meshery’s Dry Run feature leverages Kubernetes’ native dry-run support to ensure highly accurate and cluster-aware simulations.
Q&A
Q: What’s the difference between Validate, Dry Run, and Deploy?
- Validate checks whether the design’s structure and schema are correct based on MeshModel component definitions. It does not contact the cluster.
- Dry Run simulates the deployment against real clusters without changing any resources. It checks compatibility, permissions, and configuration issues.
- Deploy actually applies the design to the cluster, creating or updating resources as needed.
Simply put:
- Validate checks “Did I fill out this design correctly?”
- Dry Run asks “If I try to apply this, will Kubernetes accept it?”
- Deploy means “Go ahead and create the actual resources now.”
Q: Is Dry Run 100% accurate?
Dry Run is highly accurate because it uses Kubernetes’ official dryRun=All
API flag.
However, certain dynamic behaviors (e.g., runtime environment differences, sidecar injection) may still only surface during real deployment.
Q: Does Dry Run include the schema Validate step? Should I click both?*
No, Dry Run and Validate are separate steps.
Dry Run does not include schema validation.
We recommend clicking Validate first, then Dry Run, then Deploy.
Best Practices & Tips
- As a best practice, always Validate → Dry Run → Deploy - in that order.
- Use Dry Run in your CI pipelines to catch issues before merge.
- Ensure your Kubernetes context is correctly configured and you have network access to the clusters you are targeting.
In the current release, you may occasionally encounter a case where the Arrow Dropdown Menu does not respond as expected. This is a known issue and is currently being addressed. In the meantime, please use the Actions Dropdown Menu as an alternative for triggering a Dry Run. ↩︎
Recent Discussions on Kanvas
- Oct 14 | Explore Meshery's Published Relationship Design Examples by Awani Alero
- Oct 03 | Design Review RFC: Kanvas Empty State Enhancement by Lee Calcote
- Jul 19 | [For Discussion] Visual indication of semantically vs non-semantically meaningful Meshery components by Lee Calcote
- Jun 07 | What are the conditions for a "System is unhealthy" warning? by James
- May 30 | Looking for a meshmate to help with first PR by Faisal Imtiyaz123
- Feb 28 | For Discussion: Capturing potential, but unrealized Relationships in Design Snapshots by Lee Calcote
- Feb 12 | Hint on Scaling & Verifying Cronjob in Playground by Sandra Ashipala
- Sep 28 | Trying to add screenshots of Containerd & Curiefense integration by Raman Thakur