Components

In Meshery, a Component is a fundamental building block used to represent and define the infrastructure under management. Each component provides granular and specific support for your infrastructure and applications. Each component represents a distinct capability or feature, like a specific service, protocol, or configuration element. Components can be semantically meaningful (orchestratable) or non-semantically meaningful (an annotation).

Components as building blocks

Meshery Models and their packaged Components represent a standardized and reusable collection of building blocks used to describe both the desired and actual configuration of infrastructure pre and post-deployment. More than this Components are using to describe non-infrastructure concepts, for example, a component might capture a comment or a visual element that you’ve placed into a Meshery Design. To aid in distinguishing between types of Components, they are categorized into two groups: Semantic and Non-Semantic components. A component is considered semantically meaningful when it behaves as a direct representation of an aspect of your infrastructure. A component is considered non-semantically meaningful when it behaves as an annotation to aid in the comprehension of your designs.

Semantic Components

Semantic components represent actual infrastructure and application resources that Meshery can manage. These components map directly to real resources in your environment. For example:

  • Kubernetes resources like Deployments, Services, and Pods
  • Infrastructure configurations like virtual services and gateways
  • Cloud provider resources like load balancers and storage volumes

Semantic components can be deployed, configured, and managed by Meshery’s lifecycle management capabilities. They have real operational impact when used in Designs.

Non-Semantic Components

Non-semantic components are visual and organizational elements that help document and organize your Designs but don’t represent actual infrastructure. For example:

  • Text boxes and comments to add documentation
  • Shapes and containers to visually group related components
  • Lines and arrows to show logical relationships
  • Labels and tags for organization

While non-semantic components help communicate intent and organization in your Designs, they don’t result in any actual infrastructure changes when deployed. Meshery’s lifecycle management treats them as purely visual/organizational elements.

Component Properties

Components have several key properties that define their behavior:

  • Model: The model that the component belongs to, defining its capabilities
  • Kind: The specific type of resource the component represents
  • Version: The API version of the component
  • Spec: The detailed configuration for the component
  • Status: The current state of the component (for semantic components)

Understanding the distinction between semantic and non-semantic components helps you effectively use them to both manage real infrastructure and document your designs clearly.

Once registered with Meshery Server (in the Registry), components are available for inclusion in Designs that you create. Components can be created and published by anyone, allowing you to share you custom extensions with the community. This fosters a collaborative ecosystem where you can leverage and contribute to the growing collection of Meshery components.

Components having the same kind, apiVersion and model.name attributes are considered duplicates.