Performance Testing in Operator

Measure the behavior of a running service from the Operator canvas, using saved performance profiles.

Operator mode gives you continuous visibility across all of your clusters and workloads: MeshSync discovers every resource in every connected cluster and streams changes back to Kanvas, so the canvas is a live picture rather than a periodic snapshot. Performance testing closes the loop on that picture. Having found the service you are interested in, you can generate load against it in place and keep the result as a reusable performance profile.

The Operator canvas draws every resource MeshSync has discovered across the Kubernetes clusters connected to your Meshery deployment. Filters in the Layers panel narrow that down to the clusters, namespaces and kinds you care about, and a saved view makes a given slice repeatable. Because discovery is continuous, resources appear, change status and disappear on the canvas as they do in the cluster - you are never looking at a stale export.

From there, the Details panel gives you the state of any single resource, log streaming and the interactive terminal give you its behavior, and performance testing gives you its response under load.

Performance tests are run against the resources that expose an endpoint, so the action is available on Service and Ingress components. It is not offered on Pods, Deployments or other kinds.

  1. Switch Kanvas to Operator mode and locate the Service or Ingress you want to test.
  2. Either right-click the component and choose Initiate Performance Test, or select the component and click the performance action in the header of the Details panel.
  3. The Performance panel opens on the right of the canvas, pre-filled from the resource you selected.

For a Service, Kanvas derives the target URL from the resource itself rather than asking you to type it. It reads the service’s type and its declared ports, and builds an endpoint accordingly:

Service typeEndpoint
ClusterIPhttp://<clusterIP>:<port>
NodePorthttp://<nodeIP>:<nodePort>
LoadBalancerhttp://<ingress IP or hostname>:<port>
ExternalNamehttp://<externalName>:<port>

A service that declares several ports yields several endpoints, and the first of them is the one seeded into the form. If you want to test a different port, pick it from the URL field before running.

For an Ingress, the action is offered but no URL is derived - an Ingress has no type, clusterIP or ports for Kanvas to read, so the URL field arrives empty and you supply the host and path you want to test. The same is true of a ClusterIP service that has not been assigned a cluster IP.

The Performance panel is Meshery’s performance test form, loaded in performance-profile mode: the settings you run with are saved as a named profile, and existing profiles can be selected and re-run instead of being retyped. That is what makes a test repeatable - the same load, against the same endpoint, before and after a change.

Kanvas seeds a new profile from the selected component, so a straightforward HTTP endpoint can be tested on the seeded values alone:

SettingSeeded value
Profile name<Kind> - <component name>, for example Service - checkout
URL to testThe first endpoint derived from the service; empty for an Ingress
Concurrent requests10
Queries per second20
Duration30s
Load generatorfortio

Every one of these can be changed before you run. Endpoints that need more than a plain GET will need more than the defaults, and the form exposes what they require: request headers, cookies, content type and body, a CA certificate upload for TLS endpoints, and additional load-generator options. Nothing runs until you start the test explicitly - opening the panel does not generate load.

Saved profiles, historical results and comparisons between runs live in Meshery’s performance management screens. For the full description of profiles, load generators and how results are interpreted, see Performance Management in the Meshery documentation.


Related Reading