KubeCon Workshop: Publish a Design and Build a Custom Model
This is a 60-minute hands-on session for Meshery ContribFests. Every attendee first creates a very simple Kubernetes design in the Meshery Playground, publishes it to the Catalog, then builds a custom annotation-only model with the KubeCon logo and adds that component to the same design.
This page is a choose-your-own-adventure. Pick Path A or Path B at the start, and stay on that path for both labs. The outcome is the same: a published design, and a KubeCon logo model on that design.
Learning goals: build and validate a Design; publish it to the Meshery Catalog; create or import an annotation-only Model; and incorporate one of that model’s components into the design.
Choose your path
Path A uses the Kanvas extension on https://playground.meshery.io for both labs.
- Lab 1: you build the Deployment and Service visually in Kanvas Designer, then Validate and Publish To Catalog.
- Lab 2: you open the Registry’s Create Model wizard in the Playground, mark the model as visual annotation only, and upload the KubeCon logos. You then pin the component in Kanvas Designer and drop it onto your Lab 1 design.
You work in the browser. You do not need mesheryctl on Path A.
Path B uses only Meshery UI and/or mesheryctl. It does not use the Kanvas extension.
- Lab 1: you import a ready-made Kubernetes manifest (a Deployment and a Service) from the Designs page or with
mesheryctl design import, then Validate and publish from Meshery UI. - Lab 2: you scaffold, package, and import the KubeCon logo model with
mesheryctl(or import the ready-made archive in the Registry), then add that component to your Lab 1 design by editing the design in the Design Configurator or by updating the design file.
You will point mesheryctl at the Playground before the Path B labs.
At a glance
- Duration: 60 minutes
- Where attendees work: https://playground.meshery.io in a browser. Path A uses Kanvas Designer and the Registry. Path B uses Configuration > Designs and, for Lab 2,
mesheryctl. - Outcome: A saved design (a Kubernetes Deployment and Service) submitted to the Catalog, and a custom KubeCon logo model registered in the Playground and added to that design
- Audience: Kubernetes users; no Meshery experience needed
- Format: Short talk, two guided labs (each with Path A and Path B), wrap-up
- Resources: Meshery Models explainers (architecture slides)
Timed agenda
| Min | Block | Attendees leave with |
|---|---|---|
| 8 | Welcome, goals, logistics, path choice, and sign-in | A working Playground session and a chosen path |
| 5 | Concepts: designs, the Catalog, models and annotations | The mental model for the labs |
| 22 | Lab 1: Create and publish your design | A saved, validated Deployment and Service, submitted to the Catalog |
| 20 | Lab 2: Create a custom model and add it to your design | The KubeCon logo on that design |
| 5 | Wrap-up and next steps | Links to keep going |
The five blocks are 8, 5, 22, 20 and 5 minutes, which add up to 60. If Lab 1 runs long, take the time from wrap-up, never from Lab 2.
Prerequisites
Attendees
- A laptop with a current Chrome, Edge, Firefox or Safari.
- A GitHub or Google account, or an email address, to sign in to the Playground. Sign-in is required: the Playground runs live clusters and every user needs a named account.
- Optional but faster: sign in at https://playground.meshery.io before the session.
- Basic Kubernetes vocabulary: Deployment, Service, label, selector.
- Path A: a screen large enough for drag and drop in Kanvas. Tablets and phones are not enough.
- Path B: install
mesheryctlon your computer if you will use the CLI steps. You can complete Lab 1 with Meshery UI alone. Lab 2 is smoother withmesheryctl, and has a UI import fallback.
Instructor prerequisites
- A Playground account that has completed both labs, on both paths, within 24 hours of the session, including a Catalog publish request. On Path A, walk through Create Model and Import Model in the Registry, then pin and drop the logo in Kanvas. On Path B, import the ready-made manifest and run
mesheryctl model importinto the Playground. - Projector at 1080p or better, browser zoom at 125% so the back row can read the Kanvas form and the Registry wizard.
- This page open on a second screen, and the attendee steps (Labs 1 and 2, both paths) on a slide or QR code.
- A note to the Meshery Playground maintainers that a room of attendees will submit Catalog publish requests and import a small annotation model.
Instructor prep (morning of)
- Dry run both labs on both paths. Use a fresh design name such as
kubecon-instructor-designand, on Path B, a fresh model name such askubecon-instructor-logoso you hit the same screens attendees will. Note any UI label that differs from this page and tell the room at the start. - Confirm the demo image still exists. The Deployment uses
meshery/meshery-milestone:latest. Docker Hub listed only thelatesttag when this page was last checked on Nov 12, 2026. - Confirm the logo files and the Path B manifest on this page download. Color SVG, white SVG, the ready-made model archive, and kubecon-design.yaml should all open or download from the published docs page.
- Pre-build a finished design. Keep a completed Lab 2 design open in a second tab. If the network or Playground stalls, you can keep teaching from it.
- Prepare the handle list. Ask attendees to use their GitHub handle (or first name plus last initial) in every name, so dozens of designs and models never collide.
- Brief helpers. Helpers own sign-in problems, path choice, Kanvas configuration, the Registry wizard, and
mesheryctllogin so the instructor keeps the room moving. Agree on a raised-hand or sticky-note signal.
Welcome and sign-in
Instructor guide: welcome and sign-in
- Set the goal in one sentence. “In 60 minutes you will publish a simple Kubernetes design to the Catalog, then add your own KubeCon logo model to it.”
- Logistics. Wi-Fi, the Playground URL, the helper signal, and the naming rule: put your handle in every name.
- Path choice. Point at Path A (Kanvas, first tab) and Path B (Meshery UI and mesheryctl). Ask the room to pick one and stay on it for both labs.
- Live sign-in. Open https://playground.meshery.io on the projector and sign in so the room sees the provider choice.
- Hands-on sign-in. Helpers walk the room. Anyone not signed in by the end of this block pairs with a neighbor for Lab 1 and keeps trying in parallel.
Attendees
- Open the Playground. Go to https://playground.meshery.io. You are sent to the Meshery Cloud sign-in page.
- Sign in. Continue with GitHub or Google, or create an account with email. You land back in Meshery.
- Check you are in. You see the Meshery dashboard with your avatar in the top right. Raise your hand if you do not.
- Pick your path. Stay on Path A or Path B for both labs. You can switch later if you need to, but you will save time by picking one now.
Concepts
A design is something you build and can publish. A model is a package of components you can drop into a design. Today’s custom model is annotation-only: it is a logo, not a workload.
| Term | Meaning |
|---|---|
| Design | A declarative document of the components you want, their configuration and their relationships. You can validate, dry run, deploy, share and publish it. |
| Catalog | The public library of published designs. Publishing submits your design for review so others can find and clone it. |
| Model | A versioned package that teaches Meshery about a set of components and their styling. Kubernetes is a model; today’s KubeCon logo will be a model too. |
| Component | One kind of thing inside a model. In Lab 1 that is a Deployment or a Service. In Lab 2 it is a KubeCon logo (or, on Path A, the component registered with your model). |
| Annotation | A visual-only component. It appears on a design for diagramming and is not deployed to a cluster. |
| Kanvas | The visual designer in the Playground (Path A) where you drag components onto a canvas to build a design. |
| Registry | Where Meshery keeps every model it knows. You will create or import yours into it in Lab 2. |
Designs are saved to your account and survive. Deployments in the Playground clusters are reset daily. Today’s real artifacts are the design you publish and the model you import, not a running workload.
Lab 1: Create and publish your design
Attendees build an extremely simple design: one Kubernetes Deployment that runs the Meshery milestone Nginx image, and one Kubernetes Service that targets it. They save, validate, and publish the design to the Catalog.
- Open Kanvas Designer. Go to https://playground.meshery.io/extension/meshmap and choose the Designer tab.
- Create and name the design. Start a new design and name it
kubecon-<your-handle>-design, for examplekubecon-octocat-design. The save indicator beside the name is a cloud with a tick when the design is saved. Kanvas saves automatically about 3 seconds after you stop editing. - Add a Deployment. From the Kubernetes model, drag a Deployment onto the canvas. Open its configuration form, give it a name, and set the container image to
meshery/meshery-milestone:latest. That image is a small Nginx app; Docker Hub currently publishes it under thelatesttag only. Add a label such asapp: kubecon-<your-handle>. - Add a Service. Drag a Service onto the canvas. In its configuration form, set the selector to the same
app: kubecon-<your-handle>value so the Service targets the Deployment, and set port and targetPort to80. - Connect them. Tap the Service, pick a relationship type from the edge picker, and drag to the Deployment. Kanvas highlights compatible targets.
- Validate. Run Validate and fix anything it reports. Validate checks every component against its schema and does not contact a cluster. The count in the result comes from the design, so it includes components whose definitions could not be fetched; a clean result does not guarantee every component was checked.
- Confirm it is saved. Check the save indicator shows a cloud with a tick.
- Publish to the Catalog. Open Details for the design: click the info (“i”) button, or choose Details from the File menu, or go to Configuration > Designs and open the design’s Design Information. Fill in Type, Technology, Description and Caveats (for example: Type “Workload”, Technology “Kubernetes”, a one-sentence description of your Deployment and Service). Click Publish to Catalog.
Download the ready-made manifest first: kubecon-design.yaml. It defines a Deployment that uses meshery/meshery-milestone:latest and a Service that selects it on port 80. You can edit the resource names and the app: kubecon-demo label to include your handle before you import, or leave them as they are and just give the design a unique name.
If you will use mesheryctl in this lab or in Lab 2, point it at the Playground once, before you import anything. Signing in to the Playground in your browser does not configure mesheryctl.
mesheryctl system context create playground --url https://playground.meshery.io --set
mesheryctl system token create playground-token -f ~/.meshery/playground-auth.json --set
mesheryctl system login
chmod 600 ~/.meshery/playground-auth.json
mesheryctl system context view
The token file is separate so signing in does not overwrite the token your other contexts use. Confirm mesheryctl system context view shows the Playground endpoint before you import or delete anything.
Import the manifest as a design
Use the UI, or mesheryctl, or both.
Meshery UI
- Go to Configuration > Designs, or open https://playground.meshery.io/configuration/designs.
- Click Import Design.
- Enter the Design Name
kubecon-<your-handle>-design, for examplekubecon-octocat-design. - Choose File Upload, then pick
kubecon-design.yamlfrom your computer. - Click Import. Importing does not deploy anything.
mesheryctl
mesheryctl design import -f kubecon-design.yaml -n kubecon-<your-handle>-design
-f is a local path or a direct URL. -n names the design; without it, mesheryctl uses the file name. -s is optional because Meshery Server detects the format. If you pass it, use -s "Kubernetes Manifest" (the value is case-insensitive). Confirm the import:
mesheryctl design list
mesheryctl design view kubecon-<your-handle>-design
mesheryctl design view prints YAML by default. Use -o json if you want JSON.
Optional: build the design in the Design Configurator
Instead of importing the manifest, you can create the design from forms in Meshery UI (still without Kanvas):
- Go to Configuration > Designs and click Create Design. The Design Configurator opens at
/configuration/designs/configurator. - Enter the Design Name
kubecon-<your-handle>-design. - In Select Category, choose Orchestration & Management. In Select Model, choose Kubernetes.
- Expand the Deployment form, set the container image to
meshery/meshery-milestone:latest, and add a label such asapp: kubecon-<your-handle>. - Expand the Service form, set the selector to that same label, and set port and targetPort to
80. - Click the Save Design as New File icon. The design appears on the Designs page.
Validate and dry run
On the Designs page, open the action menu for your design:
- Choose Validate Design. This checks the design against component schemas and does not contact a cluster. Fix anything it reports, then validate again.
- Optionally choose Dry Run. Dry Run talks to a cluster and is not required to finish the lab.
There is no mesheryctl design validate or mesheryctl design check command. mesheryctl design evaluate runs relationship-evaluation policies and writes an evaluated design to a file; it is not a substitute for Validate Design and is not required in this lab.
Publish to the Catalog
The Designs table does not have a separate Publish action. Publish from Design Information:
- On Configuration > Designs, open the action menu for your design and choose Design Information.
- Fill in Type, Technology, Description and Caveats (for example: Type “Workload”, Technology “Kubernetes”, a one-sentence description of your Deployment and Service). Technology maps to the form’s compatibility field; pick at least one.
- Click Publish to Catalog. You must be signed in, you must own the design, and you need the Publish Design permission.
There is no mesheryctl command that publishes a design to the Catalog.
If your account is an Organization Admin or Provider Admin, the design is published immediately, and the UI reports that the design was published. For a regular user, the request is queued for review (catalog request status pending). The UI reports that the design is queued for publishing and that maintainers have been notified. The design stays in My Designs, with its existing visibility (private or public), until an Organization Admin or Provider Admin approves or rejects the request. You will get an email when that happens. While the request is pending, you can keep editing the same design; the submitted request updates automatically, and you do not need to publish again. After a design is approved it is locked, its visibility becomes published, and it is listed in the Catalog. You would clone it to make a new version. For this lab, success is submitting the publish request, not waiting for approval.
Instructor guide: Lab 1
Path A. Open Kanvas Designer at https://playground.meshery.io/extension/meshmap and start a design named kubecon-instructor-design. Point at the save indicator. Drag a Deployment, set the image to meshery/meshery-milestone:latest, and apply a label such as app: kubecon-instructor. Drag a Service, set the selector to that same label, and set port and targetPort to 80. Draw an edge from the Service to the Deployment. Run Validate and show a saved state. Open Details and click Publish to Catalog.
Path B. Open https://playground.meshery.io/configuration/designs, import kubecon-design.yaml with Import Design, or run mesheryctl design import -f kubecon-design.yaml -n kubecon-instructor-design. Show Validate Design in the action menu, then Design Information and Publish to Catalog.
Tell the room about a queued request versus an admin publish, and that submitting the request is the lab goal.
Lab 2: Create a custom model and add it to your design
Attendees create an annotation-only model whose visual identity is the KubeCon logo, import or register that model in the Playground, and add it to the Lab 1 design.
Download these files from this page first:
- KubeCon logo, color (
svgColor, Path A: Logo (Light Theme)) - KubeCon logo, white (
svgWhite, Path A: Logo (Dark Theme)) - Fallback (and the working Path A model file): ready-made model archive
The logos are the official KubeCon + CloudNativeCon North America 2026 artwork from the CNCF artwork repository.
Path A builds the model in the Playground Registry, then adds the component in Kanvas Designer. You do not need mesheryctl.
Open the Create Model wizard
- Open the Registry: click your avatar in the top right and choose Registry, or go to Settings > Registry, or open https://playground.meshery.io/settings?settingsCategory=Registry&tab=Models.
- On the Models tab, click Create Model. The modal title is Create Model.
Walk through the wizard
The stepper labels are Model Details, Model Categorization, Styling, Source, Additional Details, and Finalize Generation. Use Next to advance. Generate runs on the summary step and registers the model immediately. The wizard has no separate Immediate Registration toggle.
- Model Details. Enter a unique Model Name such as
kubecon-<your-handle>-logo(lowercase letters, digits, and hyphens only, no spaces) and a Model Display Name such asKubeCon Logo (<your-handle>). - Model Categorization. Choose a Category and Subcategory. If nothing fits, choose Uncategorized for both, so the model is easy to find later.
- Styling. Upload kubecon-logo-color.svg as Logo (Light Theme) and kubecon-logo-white.svg as Logo (Dark Theme). The inputs accept
.svgfiles only (the browser reportsimage/svg+xml). Optionally set Primary Color, Secondary Color, and Shape. If you leave colors and shape empty, Meshery uses its defaults. Light Theme maps tosvgColor; Dark Theme maps tosvgWhite. - Source. Choose GitHub or Artifact Hub, then enter a Model URL. This step is required: Next stays disabled until the source and a valid URL are set.
- Additional Details. Check The components in this model are visual annotations only. The wizard’s help text and the generation summary call this option Visual Annotation Only.
- Finalize Generation. Review the summary, including Visual Annotation Only: Yes, then click Generate. When it finishes, click Finish.
Create Model always sources components from a GitHub or Artifact Hub URL. On Generate, Meshery processes that URL, extracts component definitions (for example, CRDs), and registers the model. Your uploaded logos and colors style those sourced components. Checking Visual Annotation Only marks those sourced components as annotations; it does not invent a new component from the SVGs. There is no wizard field for a single custom component kind, and Source cannot be skipped.
Do not invent a dummy URL just to click Generate. That would either fail, or register unrelated components styled with the KubeCon logo, which is not the lab goal.
The working Path A step for a single KubeCon Logo component is Import Model with the ready-made archive, next.
Import the ready-made KubeCon logo model
- Stay on the Registry Models tab and click Import Model.
- Choose File Import, pick kubecon-logo.tar.gz from your computer, and import it.
- Confirm the model appears in the Registry. This fallback model is named
kubecon-logoand is shared, so prefer a handle-specific model when you have one. The archive already hasisAnnotationset totrueand the SVGs inlined, with a single component whose kind and display name arekubecon-logoandKubeCon Logo.
Add the logo to your Lab 1 design in Kanvas
- Reopen your design in Kanvas Designer at https://playground.meshery.io/extension/meshmap.
- Find the component. Search the component list for
KubeCon Logoor your model display name. Hover it and click the pin icon (Pin To Dock) so it sits in the dock at the bottom. If it does not appear, refresh the Kanvas tab and search again. - Drop it on the canvas. Drag the KubeCon Logo component onto the design near your Deployment and Service. It is annotation-only, so it is a visual label, not a workload.
- Save. Wait for the cloud-with-a-tick save indicator.
- Optional: update the Catalog request. If your Lab 1 publish request is still pending review, this save is enough; the submitted design updates automatically. If the design was already approved and is locked in the Catalog, clone it, add the logo to the clone, and publish the new design.
Path B builds the model with mesheryctl (or imports the ready-made archive in the Registry) and adds the component without Kanvas. If you did not already point mesheryctl at the Playground in Lab 1, do that first. Signing in to the Playground in your browser does not configure mesheryctl.
mesheryctl system context create playground --url https://playground.meshery.io --set
mesheryctl system token create playground-token -f ~/.meshery/playground-auth.json --set
mesheryctl system login
chmod 600 ~/.meshery/playground-auth.json
mesheryctl system context view
Confirm mesheryctl system context view shows the Playground endpoint before you import or delete anything.
Scaffold, edit, package and import
Scaffold the model. Pick a unique model name that includes your handle, using lowercase letters, digits and hyphens only:
mesheryctl model init kubecon-<your-handle>-logo --version v0.1.0That creates
kubecon-<your-handle>-logo/v0.1.0/, withmodel.json, a sample file undercomponents/, and emptyrelationships/,connections/andcredentials/directories.Edit
model.json. Setmetadata.isAnnotationtotrue. Setregistrant.kindtomeshery, give the model a short description, and paste the color SVG intometadata.svgColorand the white SVG intometadata.svgWhite. Strip any XML header (<?xml ... ?>) and collapse each SVG to a single line before pasting. LeaveschemaVersionasmodels.meshery.io/v1beta2. If you set a category, Uncategorized is a safe choice.Replace the sample component. In
components/, keep a single JSON file (you can renamecomponent.jsontokubecon-logo.json). Set:displayNametoKubeCon Logocomponent.kindtokubecon-logometadata.isAnnotationtotruestyles.svgColorandstyles.svgWhiteto the same inlined SVGsschemaVersiontocomponents.meshery.io/v1beta1(this wire format is the most widely accepted by current Meshery Servers)- the nested
model.nameto the same name you passed tomodel init
You can delete the sample file under
relationships/if you do not need it. A model imports if it contains at least one valid component.Package the model as an OCI archive:
mesheryctl model build kubecon-<your-handle>-logo/v0.1.0This writes
kubecon-<your-handle>-logo-v0-1-0.tarin your current directory.Import it into the Playground:
mesheryctl model import -f kubecon-<your-handle>-logo-v0-1-0.tar mesheryctl model view kubecon-<your-handle>-logoYou can also import from the UI: avatar, then Registry, then Import Model, then File Import, and choose the
.tarfile. Either route registers the model in the shared Playground instance.
Download the ready-made model archive from this page and import it with mesheryctl model import -f kubecon-logo.tar.gz, or use Import Model in the Registry. This fallback model is named kubecon-logo and is shared, so prefer the handle-specific path above when you can. The archive is a model directory with model.json and one annotation component; isAnnotation is already set to true and the SVGs are already inlined.
Add the logo to your Lab 1 design (without Kanvas)
Without Kanvas you will not see the logo on a canvas. You can still add the annotation component to the design document, save or update it, and confirm it with mesheryctl design view.
Preferred: add it in the Design Configurator
- Go to Configuration > Designs, open the action menu for your Lab 1 design, and choose Edit. The Design Configurator opens at
/configuration/designs/configurator?design_id=.... - In Select Category, look for the category you gave the model (the ready-made archive uses Uncategorized). In Select Model, choose your KubeCon logo model.
- Expand the KubeCon Logo component form, give it a name if prompted, and confirm it appears in the YAML editor next to the forms.
- Click the Update Design icon (not Save Design as New File, unless you want a copy).
If the model does not appear in the category or model dropdowns, refresh the page and search again. Whether a just-imported annotation-only model always appears in the Design Configurator has not been verified in the Playground; if it does not, use the YAML path below.
YAML path: export, add a component, and update
Export the design. In Meshery UI, on the Designs page, choose Download and pick Meshery Design (yaml). Or run:
mesheryctl design export kubecon-<your-handle>-designThe default
--typeiscurrent(the design as Meshery stores it now).Open the exported YAML. It should have a top-level
components:list and aschemaVersionsuch asdesigns.meshery.io/v1beta1. Append this component to that list. Replace the modelnamewith your handle-specific model name, or usekubecon-logoif you imported the fallback archive. Generate a fresh UUID forid(for example withuuidgen):- id: 00000000-0000-0000-0000-000000000000 schemaVersion: components.meshery.io/v1beta1 version: v0.1.0 displayName: KubeCon Logo format: JSON status: enabled model: schemaVersion: models.meshery.io/v1beta2 version: v0.1.0 name: kubecon-<your-handle>-logo displayName: KubeCon Logo status: enabled metadata: isAnnotation: true model: version: v0.1.0 metadata: isAnnotation: true component: kind: kubecon-logo version: v0.1.0 schema: "" configuration: {}This snippet matches the v1beta1 component shape used in published catalog designs and in the ready-made
kubecon-logomodel (schemaVersion,component.kind, nestedmodel.name/model.version, andmetadata.isAnnotation). It omits Kanvas-onlystyles.positionfields. The Registry should supply the component’s SVG styling when the referenced model is registered. This exact append-and-update path has been checked against the schema and against Meshery source, but it has not been dry-run in the Playground.Update the existing design: open it in the Design Configurator, paste the edited YAML into the editor, and click Update Design.
mesheryctl design importalways creates a new design (it posts to/api/pattern/importand does not update an existing ID). If you re-import the edited file, give it a new name, for example:mesheryctl design import -f kubecon-<your-handle>-design-with-logo.yaml -s "Meshery Design" -n kubecon-<your-handle>-design-with-logoConfirm the logo component is in the design:
mesheryctl design view kubecon-<your-handle>-designOptional: update the Catalog request. If your Lab 1 publish request is still pending review, updating the same design is enough; the submitted request updates automatically. If you created a new design by re-importing, publish that new design. If the original design was already approved and is locked, clone it, add the logo to the clone, and publish the new design.
Instructor guide: Lab 2
Path A. Show the logo downloads on this page. Open the Registry at https://playground.meshery.io/settings?settingsCategory=Registry&tab=Models, walk through Create Model far enough to show Model Details, Styling (the two SVG uploads), Visual Annotation Only, and the required Source step. Tell the room, honestly, that Generate sources components from a GitHub or Artifact Hub URL and cannot create a single logo component from the SVGs alone. Switch to Import Model and import kubecon-logo.tar.gz. In Kanvas Designer, pin the component, drop it on the Lab 1 design, and save.
Path B. Run mesheryctl model init, edit isAnnotation and the SVG fields, run model build, and model import -f against the Playground context. If the CLI path is slow for the room, switch early to the ready-made kubecon-logo.tar.gz and Import Model in the Registry. Show adding the component in the Design Configurator, or the YAML snippet and Update Design. Confirm with mesheryctl design view.
Remind people that a pending Catalog request on the same design picks up the edit automatically.
Wrap-up and next steps
- Recap. A Deployment and Service design, submitted to the Catalog; a custom annotation-only KubeCon logo model registered in the Playground and added to that design. Deployments in the Playground reset daily; designs and models you own do not.
- One quick share if time. If the labs finished early, one volunteer shows their design. On Path A, show the Service-to-Deployment edge and the logo on the canvas. On Path B, show the design on the Designs page and the logo component in Design Information or
mesheryctl design view. - Next steps. Contribute a model upstream, try the stretch goals at home, join the community Slack at https://slack.layer5.io, and keep using your Playground account.
What success looks like
Each attendee can show all of the following before leaving.
- Signed in to the Playground with their own account
- A design named with their handle contains a Deployment using
meshery/meshery-milestone:latestand a Service that selects it on port 80 - Validate has been run (Kanvas Validate on Path A, or Validate Design on the Designs page on Path B), and the design is saved
- A Catalog publish request has been submitted (the design is published, or the request is queued / pending review)
- A KubeCon logo model is listed in the Registry (their handle-specific model, or the shared fallback)
- The logo component has been added to the Lab 1 design, and the design has been saved or updated again (visible on the Kanvas canvas on Path A, or in the design file /
mesheryctl design viewon Path B)
Instructor and helper notes
Helpers can use this list as a walk-around check during the last few minutes.
Room-level target: at least 80% of attendees complete both labs. Track it with a show of hands after Lab 1 and after Lab 2. If useful, also ask how many are on Path A versus Path B.
Troubleshooting and fallbacks
| Symptom | Fix |
|---|---|
| Stuck on the sign-in page | Try another provider (GitHub, Google or email). If the venue blocks it, pair with a neighbor and keep trying on a phone hotspot. |
| Model name rejected | Use lowercase letters, digits, and hyphens only, no spaces or underscores. |
| Create Model will not leave the Source step | The wizard requires a GitHub or Artifact Hub URL and generates components from that URL. It cannot create a component from an SVG alone. Use Import Model with kubecon-logo.tar.gz instead. |
mesheryctl talks to the wrong server | Run mesheryctl system context view and confirm the endpoint is https://playground.meshery.io before import or delete. Recreate the context and token if it is not. |
model build or model import fails | Open the Notification Center or the CLI error. Check that metadata.isAnnotation is true, that each SVG is a single-line string, and that the component schemaVersion is components.meshery.io/v1beta1. If it stays stuck, import the ready-made kubecon-logo.tar.gz. |
| Model not in the Kanvas component list | Refresh the Kanvas tab, then search by display name (KubeCon Logo). If you used Import Model, confirm the model is listed in the Registry first. |
| Model not in the Design Configurator dropdowns | Refresh the configurator tab, then look under the category you chose (the ready-made archive uses Uncategorized). If it still does not appear, use the YAML export-and-update path. |
| Service does not target the Deployment | The Service selector must match a label on the Deployment, for example app: kubecon-<your-handle> or app: kubecon-demo if you imported the ready-made manifest unchanged. Port and targetPort should both be 80. |
| Publish to Catalog is disabled | Sign in again and reopen Design Information. Publish requires a signed-in account that owns the design and has the Publish Design permission. |
| Catalog request still says it is queued or pending | That is expected for a regular user. The lab is complete once the request is submitted. Keep editing if you are still in Lab 2; a pending request on the same design updates automatically. |
| Name already taken | Someone else used it. Add a suffix such as -two. |
| Save indicator shows Unable to save | Stop editing until it clears. Usually a dropped connection or an expired session; sign in again. |
| Playground slow for the whole room | Attendees who already have a design move to publish or to Lab 2. If model import is slow, use the ready-made archive or pin any already-imported kubecon-logo model. |
Instructor notes: fallbacks
- If the Playground is slow for the whole room, continue teaching from the pre-built design.
- The UI steps come from current Meshery, Kanvas, and Registry source. The instructor’s morning dry run is the check; update the session if a label differs.
- Path A attendees who cannot use Kanvas can switch to Path B mid-session. Path B attendees who want a canvas can switch to Path A after the model is imported and pick up at “Add the logo to your Lab 1 design in Kanvas.”
Stretch goals
These are optional. Use them if you finish a lab early, or after the session.
- Finish the Create Model wizard with a real CRD source, such as
git://github.com/cert-manager/cert-manager/master/deploy/crds, to see how Generate builds components from a URL. This is separate from the KubeCon logo component. - Dry run or deploy only the Deployment and Service, then look at them in Operator mode (Path A) or from the Designs page Dry Run / Deploy actions (Path B). The Playground clusters reset daily.
- Export the design to keep a file copy. On Path A, open Details from the File menu to share it with a neighbor. On Path B, use Download on the Designs page or
mesheryctl design export. - Path A: wrap the Deployment and Service in a Namespace and let Kanvas create the parent-child relationship.
Related docs
- Creating a Meshery Design
- Importing and Exporting Designs
- Catalog
- Publishing Designs
- Create Models
- Importing Models
- mesheryctl design import
- mesheryctl design list
- mesheryctl design view
- mesheryctl design export
- mesheryctl model init
- mesheryctl model build
- mesheryctl model import
- Using Meshery Playground
- Kanvas: Getting started, Creating relationships, Pin a model to the dock, Saving designs
- Contributor Training