Solo.io · Istio Ambient · ztunnel · Waypoints · Gateway API

Demos, deployment patterns and guides for Istio Ambient and the service mesh.

Hands-on demos covering Istio Ambient and service-mesh networking — ztunnel and waypoints, L4 and L7 routing, multicluster connectivity, and zero-trust mTLS identity. Everything runs locally on kind so you can replay it end-to-end.

Disclaimer: Thoughts and ideas here are my own. I joined Solo.io as EMEA Field CTO in May 2026, and these pages are my working notes on the product set — labs I've built and run, findings I've documented, and a journal of what I learn along the way. Whilst I work at Solo, this is not an official Solo.io website.

MCP Ask this site questions from your AI client — point Claude Code, Claude.ai or Cursor at https://solo-demos-mcp.tom-ed6.workers.dev/mcp. Setup guide →
Agentic Architecture Part 1 of 3 Enterprise

Secure Sovereign AI on EKS, Part 1: Zero Trust Infrastructure

An open-weight European model on UK infrastructure, with a control at every layer. An interactive topology of the real eu-west-2 deployment: the hardened AWS edge, Istio ambient with ztunnel and a waypoint, a Vault that is both the mesh CA and the secrets store, agentgateway as the one door for LLM, MCP and inference, kagent, agentregistry and Kyverno, in front of Mistral on vLLM. Sovereignty stated in tiers (data residency, key custody, traffic control), secrets leased from Vault, etcd and backups encrypted in-region, and backup/restore with Velero and a Vault raft snapshot.

Istio ambient + Vault CAagentgateway one doorkagent + gVisorPSA + KyvernoMistral on vLLM
Open the lab
Agentic Reference Part 2 of 3 Enterprise

Secure Sovereign AI on EKS, Part 2: Testing the exploits

The proof to part 1's architecture: twelve controls, each made to refuse a real request, live on the cluster with its real output. Mistral over TLS, a 401 with no token, five admission refusals, a pod that cannot steal the node's role, Vault surviving a pod kill, one-hour SPIFFE certs, an agent that only runs if it came from the registry, an agent denied a tool it isn't entitled to, a per-identity rate limit capping the tempo, a pod provably in a gVisor sandbox, and a real alert email, with a live Grafana dashboard of the stack.

JWT 401 / 2005 admission refusalsagent from registry onlyper-tool MCP authzper-identity rate limitgVisor proof
Open the lab
Agentic Architecture Part 3 of 3 Enterprise

Secure Sovereign AI on GKE, Part 3: The Same Architecture on Google Cloud

The Part 1 architecture on Google Cloud: the same interactive topology with every AWS service swapped for its GCP equivalent, EKS to GKE, S3 to Cloud Storage, KMS to Cloud KMS, IRSA to Workload Identity, the NLB to a passthrough Network Load Balancer, in europe-west2 (London). The security lives in the mesh and the gateway, so the move is a substrate swap, not a redesign. A service-by-service mapping table and a short why-it-ports note; the layer explanations stay in Part 1. This lab deploys to AWS today.

EKS → GKES3 → Cloud StorageKMS → Cloud KMSIRSA → Workload Identityeurope-west2
Open the lab
Agentic Application Lab Part 1 of 2 Enterprise

Claude Code plugins in AgentRegistry, part 1: publish and install

Register a Claude Code plugin as a commit-pinned Plugin pointer, read the inventory the controller scans out of the bundle, serve the catalogue as a marketplace.json through agentgateway, then install it into your own Claude Code and run it. Nine steps on one kind cluster. Pre-GA, so step 1 builds the image.

Plugin · ar.dev/v1alpha1status.inventorymarketplace.jsonagentgateway ingressclaude plugin install
Open the lab
Agentic Reference Part 2 of 2 OSS

Claude Code plugins in AgentRegistry, part 2: inside the policy-review plugin

Part two. The plugin from part one, taken apart: one rule engine behind policy-lint (a file or a whole tree) and cluster-review (a live cluster over kubectl), where each rule is grounded, why the same {{ }} is right in kgateway and an error in agentgateway, and what the PreToolUse hook does to a kubectl apply.

policy-lint · file or treecluster-review · kubectlstatus.ancestors AttachedCEL vs InjaPreToolUse hook
Read the reference
Agentic POC Getting Started Enterprise

kagent quickstart: your first POC

The kagent companion to the agentgateway POC: empty cluster to a working, governed, observable Solo Enterprise for kagent. Install (CRDs + controller + UI by Helm), Keycloak, an MCP tool server, agents deployed declaratively and BYO (Google ADK), AccessPolicies, tracing, and a gVisor SandboxAgent. Helm only, YAML + copy-paste per step, apply and validate in separate cells.

Helm installKeycloak (OIDC)MCPDeclarative + BYO/ADKAccessPoliciesTracingSandboxAgentkind / any k8s
Open the lab
Agentic POC Getting Started Enterprise

agentgateway quickstart: your first POC

The lab to hand a customer on day one: empty cluster to a working, secured, observable Solo Enterprise for agentgateway. Install (CRDs + control plane + UI by Helm), Keycloak, a Gateway + HTTPRoute, an MCP tool server, observability, and LLM cost by dimension. A checklist up top and an official-docs link on every step. Runs on kind or any cluster.

Helm installKeycloak (OIDC)Gateway + HTTPRouteMCPObservabilityCost Managementkind / any k8s
Open the lab
Agentic Application Lab OSS

Per-team Bedrock cost profiling with application inference profiles, through agentgateway

See Amazon Bedrock LLM usage and cost broken out per team even though every team shares one gateway to Bedrock: one application inference profile per team, one AgentgatewayBackend, per-team tokens from the gateway's gen_ai_request_model metric and per-team dollars from AWS Cost Explorer. A JWT team claim picks each team's profile so no client carries an ARN.

Solo Enterprise for agentgatewayAmazon Bedrock · ConverseApplication inference profilesgen_ai_request_model metrickind
Open the demo
Agentic Application Lab OSS

Claude Code on a non-Anthropic model, through agentgateway

Run Claude Code against a model you run instead of Anthropic's, with the model key held in the cluster and every call gated by identity. Solo Enterprise for agentgateway serves the Anthropic Messages API, translates it to an OpenAI model behind the gateway and translates the reply back, with JWT authentication and a CEL rule in front.

Solo Enterprise for agentgatewayAnthropic ↔ OpenAIEnterpriseAgentgatewayPolicy · JWT + CELAgentgatewayBackend · ai.routeskind
Open the demo
Cloud Connect Application Lab OSS

Shipping request events from kgateway over OpenTelemetry

Meter API usage per customer at the kgateway edge with no backend instrumentation: one ListenerPolicy ships each request as an OpenTelemetry access-log record over OTLP to a collector and into self-hosted OpenMeter, off the request path so metering never slows or breaks live traffic.

OSS kgateway 2.2ListenerPolicy · OTLP access logOpenMeter collectorself-hosted OpenMeterkind
Open the demo
Cloud Connect Application Lab Enterprise

Versioned cluster routing with Solo Enterprise for kgateway

Route every request to the right versioned app cluster and keep those clusters independent, using an out-of-cluster kgateway that picks the target from a client header or a JWT version claim and defaults to latest.

Solo Enterprise for kgatewayGateway API · HTTPRouteout-of-cluster BackendentJWT · claimsToHeaderskind
Open the demo
Cloud Connect Application Lab OSS

Versioned cluster routing with agentgateway (part 2)

Route each request to the right versioned app cluster from a gateway outside them, choosing v2 or latest from an override header or a JWT claim and defaulting to latest, so no client can fake its version. Same lab as part 1, now on the agentgateway Rust data plane.

Solo Enterprise for agentgatewayEnterpriseAgentgatewayPolicyCEL · PreRoutingAgentgatewayBackendkind
Open the demo
Agentic Application Lab Enterprise

AgentRegistry end to end, part 3: one agent, three runtimes, governed MCP tools

Run one published agent unchanged on three runtimes (Solo Enterprise for kagent, AWS Bedrock AgentCore, Google Cloud Vertex), pulling approved MCP tools from the AgentRegistry catalog, then lock down which tools it may call with a kagent AccessPolicy enforced at an agentgateway waypoint and watch its tool list shrink live.

arctl · init / build / applyAgentRegistry · in-clusterRuntime · kagent / AgentCore / GeminiAgentRuntimeAccessPolicy · agentgateway waypointKeycloak · OIDC
Open the demo
Agentic Application Lab Enterprise

AgentRegistry end to end, part 2: one realm, two teams, a policy-partitioned catalog

Give three people three different views of one shared AgentRegistry catalog. Registry OIDC maps each Keycloak group to a role, the catalog goes default-deny, and two AccessPolicy resources partition it per team, with every read and publish denial captured live.

AccessPolicy · ar.dev/v1alpha1registry:read / publishRBAC_ROLE_CLAIM=groupssuperuser · field-adminKeycloak · one realm
Open the demo
Agentic Application Lab Enterprise

AgentRegistry end to end, part 1: arctl from init to an agent hosted on kagent

Take three catalog artifacts (an MCP server, a skill, and an agent) from an arctl init scaffold to a summarizer agent hosted on Solo Enterprise for kagent, reachable only with a valid Keycloak token. One kind cluster runs the whole AgentRegistry lifecycle: scaffold, build, publish, deploy, then invoke live over the OIDC-protected A2A endpoint.

arctl · init / run / build / applyAgentRegistry · ar.dev/v1alpha1Runtime · Kuberneteskagent · BYO Agent + kmcpKeycloak · OIDC · A2A
Open the demo
Agentic Platform Lab Enterprise

Full Solo Enterprise Install deployment

Stand up the whole Solo Enterprise agentic platform on one kind cluster: Keycloak as the single OIDC issuer, Solo for kagent, the Enterprise UI, in-cluster AgentRegistry, and Istio ambient with enterprise agentgateway, all reachable at http://*.localtest.me. Installed product by product in dependency order, with every Helm flag and config note explained.

Istio ambient · Gloo OperatorKeycloak · one OIDC realmkagent + AgentRegistryagentgateway · ingress + waypointOTel · ClickHouse · Tracing
Open the lab
Agentic Application Lab OSS

agentgateway standalone on AWS — three nodes, one config file, no Kubernetes

Run agentgateway as a systemd binary on three EC2 instances across three AZs, configured by a single YAML file. S3 for config with the gateway's own file watcher doing the reload, Aurora for the request log and the config overlay, ElastiCache for fleet-wide rate limits, Cognito for identity. Every feature shown config-first then proved, plus four HA exercises.

standalone binarysystemd on EC23 AZs + ASGAurora overlayportable MCP sessions
Open the lab
Agentic Application Lab Enterprise

Code mode in agentgateway — one run_code tool instead of a wall of MCP tools

Expose the whole nineteen-operation Swagger petstore through agentgateway as a single run_code tool (toolMode: Code) on kind, then watch a model answer a plain-English question by writing one JavaScript program the gateway runs in a sandbox instead of one MCP call per operation.

agentgateway code modetoolMode: Coderun_codeOpenAPI → TS APIMCP
Open the demo
Agentic Application Lab Enterprise

Running agent frameworks on kagent: ADK, LangGraph, CrewAI and AutoGen

Run one Kubernetes incident-response workflow five ways on a single kind cluster (kagent-native, Google ADK, LangGraph, CrewAI, AutoGen), each on Solo Enterprise for kagent and reaching its model and tools through enterprise agentgateway. All five diagnose a broken checkout Deployment, one prompt guard on the LLM route protects every one, and no agent gets rewritten.

ADK · LangGraph · CrewAI · AutoGenBYO agentskagent adapters + A2A shimLLM + MCP via agentgatewayprompt guard
Open the demo
Agentic Application Lab Enterprise

Agent identity and scoped tools — one agent can act, the other can't (Part 2)

The enterprise follow-on to the agentic contract. Two agents reach one MCP server that stands in for a locked database; enterprise agentgateway validates each agent's identity token and scopes its tools, so the read-only dba-diagnoser can only diagnose while the privileged sre-remediator can call db_reset_credentials and fix it. Same server, one policy, two identities. The Postgres is simulated — no real DB deployed.

agentgateway MCP authzagent identity (JWT)per-tool RBACKeycloakEnt kagent
Open the demo
Agentic Application Lab OSS

The agentic contract — one JSON shape shared across an A2A call (Part 1)

An SRE orchestrator delegates a database incident to a DBA specialist over A2A, and the specialist answers in one strict Diagnosis shape. Build the specialist twice: a declarative agent forced through a record_diagnosis MCP tool whose schema is the contract, and a BYO Google ADK agent whose pydantic output_schema is the contract. Same shape either way, so the orchestrator swaps between them without noticing.

kagent A2Adeclarative vs BYOGoogle ADK output_schemarecord_diagnosis MCPSRE → DBA
Open the demo
Agentic Application Lab OSS

MCP 2026-07-28 on the wire, live: MRTR and Tasks through agentgateway

Declare agentgateway v1.4.1 (OSS) through Kubernetes CRDs on kind, put it in front of a single-file MCP server, and drive the final spec with full curl commands: server/discover with no handshake, an MRTR elicitation that resumes after the whole server deployment is replaced, a tampered requestState dying at HMAC verification, and a release pipeline running as an MCP Task with a human approval gate. The gateway rejects header/body mismatches before they reach any backend.

agentgateway v1.4.1AgentgatewayBackendMRTRio.modelcontextprotocol/tasksMcp-Method / Mcp-Namekind
Open the demo
Agentic Application Lab Enterprise

Agent-to-Agent in kagent — an SRE that delegates DB incidents to a DBA

Stand up two kagent agents on kind and watch an SRE orchestrator delegate a database incident to a DBA specialist over A2A (agent-to-agent message/send), captured live from the cluster. Runs on Solo Enterprise for kagent, so the caller's identity rides into the agent as an exchanged On-Behalf-Of token.

kagent A2Atools[].type: Agenta2aConfig.skillsSRE → DBAOBO identity
Open the demo
Agentic Application Lab OSS

AgentHarness SRE Sandbox — OpenClaw triages and fixes the cluster

Stand up an on-call SRE agent in a sandbox inside your own kind cluster: it triages broken workloads and patches the autofix=true namespace, but hits a real 403 in the namespace without the label and escalates that one to Slack. What it may change is enforced by Kubernetes RBAC, not the prompt (kagent's AgentHarness standing up an OpenClaw sandbox via an OpenShell gateway).

kagent AgentHarnessOpenShell + OpenClawModelConfiglabel-gated RBACSlack escalation
Open the demo
Agentic Application Lab OSS

Inference routing on agentgateway — KV-cache-aware routing to a self-hosted model pool

Route LLM traffic to a self-hosted model pool and let agentgateway pick the replica from the model servers' live load. The HTTPRoute backend is an InferencePool, not a Service, so the Gateway API Inference Extension Endpoint Picker routes on KV-cache usage and queue depth. Two llm-d simulators with pinned gauges flip the routing decision on cue, no GPU. One kind cluster, driven by a notebook.

agentgateway v2.3.4InferencePool v1Endpoint PickerInferenceObjectivellm-d inference sim
Open the demo
Agentic Application Lab OSS

vLLM Semantic Router on agentgateway — model-aware routing as ExtProc

Route every chat request to the right model or LoRA adapter by prompt content, while clients only ever send "model": "auto" to one endpoint. The vLLM Semantic Router runs inline as a gRPC ExtProc on OSS upstream agentgateway, classifies each prompt and rewrites the request body, on a single kind cluster.

OSS agentgatewayAgentgatewayPolicyextProc processingOptionsAgentgatewayBackend ai.providervLLM + LoRA
Open the demo
Agentic Application Lab OSS

AI Data Loss Prevention — built-in regex + custom webhook

Keep PII out of your LLM calls and block prompt injection at the gateway, using Solo Enterprise agentgateway in front of Anthropic Claude with two stacked promptGuard layers (built-in regex plus a custom webhook) on both request and response.

Solo Enterprise AGWEnterpriseAgentgatewayPolicypromptGuard.request + responseGuardrail Webhook APIAnthropic Claude
Open the demo
Agentic Application Lab OSS

Bring your own guardrail — an external AI firewall on the agentgateway webhook

Plug a third-party AI firewall (NeuralTrust GAF) into agentgateway's promptGuard webhook and enforce Pass/Mask/Reject in front of any LLM. The guard is decoupled from the backend, so one adapter protects an Anthropic, OpenAI or Gemini route unchanged.

Solo Enterprise AGWpromptGuard.webhookexternal guardrailNeuralTrust GAFAnthropic Claude
Open the demo
Agentic Application Lab Enterprise

Cost management on agentgateway — budgets, virtual keys and per-team spend

See which team, user or model is spending on LLM calls and cap that spend before it runs away, all priced by agentgateway and enforced by EnterpriseAgentgatewayBudget on one kind cluster.

Solo Enterprise AGWCost ManagementEnterpriseAgentgatewayBudgetvirtual API keysClickHouse
Open the demo
Agentic Application Lab Enterprise

Per-team static key injection — swap a user JWT for a team API key

Give every team its own upstream LLM API key without any user ever holding a credential: agentgateway validates the user's JWT, routes on the verified team claim, and injects that team's static key. Signed-claim selection means a client can't spoof its way onto another team's key.

Solo Enterprise AGWjwtAuthenticationclaim → headerpolicies.auth.secretRefPreRouting
Open the demo
Agentic Application Lab Enterprise

Impose Human Approval on an Agent the Developer Built

Two identical ADK agents, one deemed risky by an external review. A Kyverno policy reads a ConfigMap and turns on kagent's own approval flow — no code change, no rebuild, and nothing the developer can switch off.

kagent EnterpriserequireApprovalAgentRegistry · arctlKyverno admissionrisk register
Open the demo
Agentic Application Lab OSS

End-User and Platform Approval Gates for MCP Agents

Put two independent human approval gates on one MCP agent: the end user approves changes to their own data inside the kagent chat, while a platform reviewer approves shared-infrastructure changes from a separate queue the agent never sees.

kagentagentgateway · extAuthMCP · Streamable HTTPLangGraph interrupt()HTMX UI
Open the demo
Agentic Application Lab OSS

Per-User MCP Tool RBAC — same agent, different visible tools

One MCP server hands each caller a different set of tools and hides the rest, filtered at the gateway from the caller's JWT so forbidden tools never reach the LLM.

kagentSolo Enterprise AGWEnterpriseAgentgatewayPolicymcp.authorization · CELJWT · jwt.team
Open the demo
Agentic Application Lab

Per-user MCP RBAC, one Agent on kagent and AgentCore

Ship one ADK-Python agent from a single AgentRegistry record and run it on both in-cluster kagent and AWS Bedrock AgentCore, changing only the runtimeRef. An agentgateway in front of the shared Solo KB MCP gates each request to individual tools by Keycloak group.

AgentRegistry · ar.dev/v1alpha1Runtime · Kagent + BedrockAgentCoreAccessPolicy · targetRef.toolsKeycloak · UserGroup claimADK-Python · Solo KB MCP
Open the demo
Agentic Application Lab OSS

Loop and Runaway Containment at the Gateway — max turns + max tool calls + max chain depth + repetition

Stop a runaway agent at the gateway by enforcing four per-session budgets (max tool calls, max turns, max chain depth, repetition) on MCP tools/call traffic, with every cut-off returning a structured JSON deny the agent can parse.

Solo Enterprise AGWEnterpriseAgentgatewayPolicyext-auth · forwardBodyRedis counterscontrolled cut-offper-session budgets
Open the demo
Agentic Application Lab OSS

Locking Down MCP Tools at the Gateway — approved manifest + risk tiers + chain rules

Only curator-approved tools reach the agent, and every tools/call is checked before it hits the upstream. One curated manifest drives the gateway allow-list, the sanitized tools/list, and a gRPC ext-auth that validates args, gates high-risk tools by JWT intent, and blocks forbidden call chains.

agentregistrySolo Enterprise AGWEnterpriseAgentgatewayPolicyext-auth · forwardBodyJSON SchemaRedis
Open the demo
Agentic Application Lab Enterprise

Per-Team LLM Token Budgets — the gateway caps the spend

Give each team a hard LLM token budget that agentgateway enforces: it reads usage.total_tokens off each response and debits that team's bucket, so an over-budget team gets 429 on its next call while every other team keeps working.

kagentSolo Enterprise AGWRateLimitConfig · type:TOKENEnterpriseAgentgatewayPolicyPrometheus + Grafana
Open the demo
Agentic Application Lab

Rug Pull MCP Hack Demo

A fake retail bank with an AI-powered chatbot driving three kagent agents over A2A, each backed by MCP tool servers fronted by agentgateway. A third-party currency-converter vendor gets rug-pulled mid-prompt and tries to exfiltrate the customer's PII — the mesh catches it at the wire, not the model.

kagentagentgatewayMCP rug-pullDORA Article 17kind
Open the demo
Agentic Application Lab

Agentic / MCP Lab — federation, JWT RBAC, OAuth2 token exchange

Put several MCP servers behind one Ambient enterprise-agentgateway-waypoint, federate them into a single MCP session, and gate every call by SPIFFE identity, MCP tool name, per-user JWT and OAuth2 token exchange. Six labs build it up on the multicluster standup, ending with a cross-cluster twist over HBONE.

MCP federationSPIFFE authzJWT RBACOAuth2 / RFC 8693enterprise-agentgateway-waypoint
Open the lab
Cloud Connect Application Lab Enterprise

Ambient Deployment and L4/L7 Policies Demo

One petshop app, the whole ambient security model. Every workload gets a SPIFFE SVID from its ServiceAccount; ztunnel authorizes on that identity at L4 with no waypoint, proven from the access logs. Hit the shared-ServiceAccount gap, then add an agentgateway waypoint, wire in Keycloak, and do L7 properly — JWT + CEL authz, a canary split, and a rate limit by workload identity. Ends with workload claims: signed claims in each pod's cert close that gap at L4, live.

Solo Istio 1.30.3-soloSPIFFE / SVIDztunnel L4 authzworkload claimswaypoint + JWTKeycloakkind
Open the demo
Cloud Connect Application Lab OSS

Sidecars to Ambient When Your PKI Is RSA

The mesh CA is Vault behind cert-manager istio-csr and the PKI is all RSA, with the signing role locked to key_type=rsa. Sidecars are happy. Then ambient arrives and ztunnel, which only generates ECDSA P-256 keys, gets every CSR rejected. Break it on purpose in a scratch namespace, fix it with key_type=any, roll the sidecars once for HBONE interop, and migrate one namespace under load while the RSA namespace never notices, same cert serials and all.

Istio 1.30.3 (upstream)Vault PKIistio-csrRSA → ECSTRICT mTLSfortiokind
Open the lab
Cloud Connect Application Lab OSS

Sidecar to Ambient on OSS Istio

The same sidecar-to-ambient migration, on upstream community Istio: no licence, no operator. The mesh goes bilingual with a helm upgrade, then every namespace migrates with one label flip and flips back the same way. Every L7 namespace shares one cluster-wide waypoint (allowedRoutes: All + two labels), the L4 namespace needs none, the canary moves to HTTPRoute, and the mixed-fleet gap community images leave open is shown live before the calling estate closes it. Zero downtime at every cut, then rollback.

Istio 1.30.3 (upstream)one cluster-wide waypointlabel-flip + rollbackDR / VS → HTTPRoutekind
Open the demo
Cloud Connect Application Lab Enterprise

Multi-region load balancing and failover on ambient

Two EKS regions, one peered ambient mesh, no management plane in the data path. Automatic regional failover at both layers: the mesh (a locality-preferred global service that serves cross-region when local pods die, over the east-west gateway) and the edge (kgateway per region behind AWS Global Accelerator, anycast IPs, cutover in ~40s, no DNS). Plus the honest answers to locality routing and the 1000-tenant scale question, and six live gotchas fixed in the scripts.

two EKS regionsambient multicluster peeringglobal serviceGlobal Acceleratorkgateway ingressRoute 53no mgmt plane
Open the demo
Cloud Connect Application Lab Enterprise

Open ports vs used ports on ambient

svc-b exposes eleven ports, svc-a uses six, the policy allows ten: build the audit that proves it. ztunnel JSON access logs feed a per-node collector DaemonSet that merge-patches its own key in one central ConfigMap, and a CronJob writes report.json: used, unused, allowed-but-never-used and denied ports per service. Then the policy shrinks to the observed set. Bonus: an OSS kagent agent publishes the report to GitHub via the GitHub MCP server.

Solo Istio 1.29.3-soloztunnel L4 authzJSON access logsDaemonSet → ConfigMap → CronJobkagent + GitHub MCPkind
Open the demo
Cloud Connect Application Lab Enterprise

Sidecar to Ambient Upgrade

Migrate a petstore app from Istio sidecar mode to ambient one namespace at a time on a single kind cluster: L4 with no waypoint, L7 behind a waypoint with DestinationRule and VirtualService still working, sidecar and ingress traffic routed through the waypoint, subsets moved to HTTPRoute, zero downtime the whole way, then a single-label rollback.

Solo Istio 1.29.3-soloGloo Operatorztunnel + waypointDR / VS → HTTPRoutekind
Open the demo
Cloud Connect Application Lab Enterprise

Anthos Service Mesh to Enterprise Istio Ambient, on GKE

ASM will not take you to ambient and Google owns the control plane, so you do not upgrade it: new GKE cluster, Solo Enterprise Istio, drain across. Sidecar-first install, Vault-backed CA with the RSA to EC transition rehearsed, L4 and waypoint-first L7 migrations measured under load, an east-west ServiceEntry bridge for the migration window, and the ordering mistake that costs 2.1% of requests, proven both ways.

ASM 1.20.8 → Solo Istio 1.30.3-soloGKE 1.34agentgatewayVault + istio-csrOSS A/B
Open the demo
Cloud Connect Infra Standup Lab Enterprise

Istio Ingress Gateway & Ambient Multicluster Mesh on Kind

Stand up a working Istio Ambient multicluster mesh on two local kind clusters and see cross-cluster traffic run over mTLS. A mock VM joins the mesh with its own SPIFFE identity, and AuthorizationPolicy controls egress and blocks the VM on identity alone.

kindIstio AmbientztunnelMetalLBmulticlusterVM enrollment
Stand it up
Cloud Connect Infra Standup Lab Enterprise

Solo AgentGateway Ambient Multicluster — Standup

Stand up a two-cluster ambient mesh you can run any cross-cluster or agentic lab on: two kind clusters peered over HBONE, with Solo Enterprise agentgateway v2.3.3 registered as the Gateway API class for both the ingress and the L7 waypoint/egress, Gloo UI optional. No workloads, just the platform the labs that follow build on.

agentgateway v2.3.3Istio Ambient 1.29.2ztunnelGloo UIquick.sh
Stand it up
Cloud Connect Infra Standup Lab

Manual multi-cluster vs Solo Enterprise for Istio management plane

Decide whether to wire a multi-cluster Solo Istio Ambient mesh by hand or run the Solo Enterprise for Istio management plane in front of it, judged on the Day-2 realities that actually cost you: root CA and remote-secret rotation, cluster registration, cross-cluster RBAC, federation, and audit.

decision docSolo Enterprise for IstioDay 2 opscert rotationRBAC
Read the comparison
Cloud Connect Application Lab

Cloud Connectivity Lab — failover, waypoint, egress

Three demos on the multicluster standup. You'll keep an app serving after a whole cluster loses its copy of a service (cross-cluster failover via the global mesh.internal hostname), add L7 routing to traffic that never leaves the mesh (an Ambient waypoint), and allow one workload to reach an external service while denying another on SPIFFE identity (an egress waypoint to httpbin.org).

cross-cluster failoverenterprise-agentgateway-waypointHTTPRouteegressSPIFFE
Open the lab
🔍

No labs match your search or filter.

Optional: short on local resources? See the setup guide for running a kind cluster on a remote Mac and driving it from your laptop — handy when you want more headroom than your day-to-day machine can spare.