feat(mesh): Scenarios - #4346
justindavies wants to merge 15 commits into
Conversation
✅ Deploy Preview for kongdeveloper ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
Adds a new “Scenarios / Learning Path” documentation track for Kong Mesh, including foundational concepts, practical how-tos, persona-based guides, and navigation updates so the new content is discoverable from the Mesh landing page and docs index.
Changes:
- Introduces a full set of scenario-based Mesh docs (learning path, hands-on scenarios, and persona guides).
- Adds/updates navigation and discovery entries for the new scenarios content in the Mesh landing page and Mesh docs index.
- Expands scenario coverage to include identity/trust, multi-zone ops, traffic management, observability, perimeter security, and migration guidance.
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| app/mesh/scenarios/workload-identity.md | New scenario doc covering Workload Identity model (MeshIdentity, MeshTrust, MeshTLS). |
| app/mesh/scenarios/using-policies.md | New scenario doc explaining TargetRef policy structure, hierarchy, and flows. |
| app/mesh/scenarios/traffic-splitting-meshservices.md | New scenario doc demonstrating weighted routing with explicit MeshService resources. |
| app/mesh/scenarios/subsets-and-targeting.md | New scenario doc comparing MeshSubset vs explicit MeshService targeting. |
| app/mesh/scenarios/resource-scoping.md | New foundational doc explaining Global vs Zone CP ownership and K8s namespace rules. |
| app/mesh/scenarios/persona/security.md | Persona guide focused on zero-trust, authorization, and governance. |
| app/mesh/scenarios/persona/operator.md | Persona guide focused on multi-zone infra, gateways, and observability ops. |
| app/mesh/scenarios/persona/index.md | Persona landing page linking to persona deep dives. |
| app/mesh/scenarios/persona/developer.md | Persona guide focused on routing, resilience, observability, and gateway integration. |
| app/mesh/scenarios/observability-in-practice.md | New scenario doc for metrics/tracing/logging with Mesh policies and bundled stack. |
| app/mesh/scenarios/multi-zone-architecture.md | New scenario doc describing multi-zone components and service federation. |
| app/mesh/scenarios/multi-tenancy-strategies.md | New scenario doc explaining soft vs hard multi-tenancy models. |
| app/mesh/scenarios/meshexternalservice.md | New scenario doc for first-class external dependencies via MeshExternalService. |
| app/mesh/scenarios/mesh-proxy-patch.md | New scenario doc for advanced Envoy patching using MeshProxyPatch. |
| app/mesh/scenarios/mesh-passthrough.md | New scenario doc for perimeter control using MeshPassthrough. |
| app/mesh/scenarios/kong-mesh-vs-ambient.md | New comparison doc: Kong Mesh sidecar model vs Istio Ambient trade-offs. |
| app/mesh/scenarios/istio-to-kong-mesh.md | New migration guide doc mapping concepts and outlining migration approach. |
| app/mesh/scenarios/introduction.md | New scenarios track introduction and roadmap framing. |
| app/mesh/scenarios/ingress-mtls-bridge.md | New scenario doc describing ExternalName bridge pattern for gateway-to-mesh mTLS. |
| app/mesh/scenarios/index.md | New Learning Path index organizing scenarios into phases. |
| app/mesh/scenarios/global-color-routing.md | New scenario doc for cross-zone “color” affinity routing with MMZS + routes. |
| app/mesh/scenarios/global-canary-releases.md | New scenario doc for zone-scoped canary rollouts with cross-region failover. |
| app/mesh/scenarios/getting-started-policy.md | New starter scenario for enabling mTLS and introducing default deny + targeted allow. |
| app/mesh/scenarios/external-ca-vault.md | New scenario doc for external CA integration (Vault, cert-manager, ACM, MeshIdentity). |
| app/mesh/scenarios/chaos-engineering.md | New scenario doc for validating resilience using MeshFaultInjection. |
| app/mesh/scenarios/architecture-overview.md | New architectural overview doc (CP/DP, multi-zone, key resources). |
| app/_landing_pages/mesh.yaml | Adds a featured learning-path card and new CTAs to surface scenarios content. |
| app/_indices/mesh.yaml | Adds scenarios and persona guides into the Mesh documentation index. |
You can also share your feedback on Copilot code review. Take the survey.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…er.konghq.com into kong-mesh-scenarios
|
|
||
| * **Dataplane (DP)**: The sidecar component that runs alongside your application workload to manage all incoming and outgoing traffic. It provides your service with a secure identity and enforces the networking rules defined by your policies. | ||
| * **Control Plane (CP)**: The authoritative management layer responsible for discovering workloads and distributing configuration updates to every Dataplane in the mesh. | ||
| * **Kuma Distribution Service (KDS)**: The high-speed protocol used to synchronize policies and service state between a **Global CP** and its **Zone CPs**. |
There was a problem hiding this comment.
Not that it matters too much, but it was originally named Kuma Discovery Service kumahq/kuma#839 :)
It's called like that because it's a generalization of an existing Envoy xDS protocol, stands for X Discovery Service.
|
|
||
| --- | ||
|
|
||
| ## {{site.mesh_product_name}} Architecture |
There was a problem hiding this comment.
The chart probably can be a bit more rigorous with lines. Initially I thought solid line is a DP traffic and dashed line is a CP traffic, however line between Global CP and Zone CP is solid. Also it would be nice to have a legend
| --- | ||
| {{site.mesh_product_name}} can be deployed in two main architectures: | ||
|
|
||
| ### 1. Standalone Mode (Simple) |
There was a problem hiding this comment.
I'm not sure we should use the term "standalone". We previously had an actual mode called standalone, which was later deprecated, so using the term again might cause confusion.
In the docs, we usually refer to federated and non-federated zones, depending on whether a zone is connected to Global. It makes migrations from non-federated to federated easier https://developer.konghq.com/mesh/federate-zone/ as you don't need to redeploy zone cp in another mode.
| Each resource type in {{site.mesh_product_name}} has a defined **owner**: the tier that is authorised to create, modify, and delete it. | ||
|
|
||
| {% danger %} | ||
| If you apply a **Global-only** resource to a Zone CP, the resource will be rejected or overwritten when KDS syncs. You may not see an immediate error, making this hard to debug. |
There was a problem hiding this comment.
Is it indeed the case? IIRC we're not allowing Global only resources to be applied on Zone CP. If it's not true then I'd consider it a bug and wouldn't mention in docs anyway.
|
|
||
| | Resource | Namespace | | ||
| | :--- | :--- | | ||
| | `Mesh` | Applied to Global CP (any ns or CRD) | |
There was a problem hiding this comment.
TBH, I wouldn’t even mention in this doc that it’s possible to deploy the Global CP as a Kubernetes-native deployment that uses etcd and CRDs. For simplicity, and because it likely covers the overwhelming majority of use cases, the Global CP is typically a regular deployment backed by a PostgreSQL database.
If you still want to mention it, note that you can’t use arbitrary namespaces or CRDs. Only the system namespace is supported.
| ``` | ||
|
|
||
| {% tip %} | ||
| Ollie often uses **`MeshSubset`** at the top level of his policies to target entire zones or environments without needing to list every service individually. Learn more in the [Subsets & Targeting Guide](/mesh/scenarios/subsets-and-targeting/). |
There was a problem hiding this comment.
We dont use MeshSubset in top level anymore. it should be Dataplane
| --- | ||
| {{site.mesh_product_name}} is an enterprise-grade service mesh that provides a unified control plane to manage services across Kubernetes, VMs, and bare metal. Unlike traditional meshes that require complex, platform-specific configurations, {{site.mesh_product_name}} offers a simplified, policy-driven approach that works identically regardless of your underlying infrastructure. | ||
|
|
||
| ## The Kong Air Journey |
There was a problem hiding this comment.
We should link to actual Kong Air intro if there is any, and it would be nice to have some simple diagram here to show components of Kong Air
|
|
||
| ## {{site.mesh_product_name}} Architecture | ||
|
|
||
| {% mermaid %} |
There was a problem hiding this comment.
For me this graph is too complex, It would be better to split this into two graphs, one high level overview and second one with detailed zone components
|
|
||
| Because AeroPay is now a first-class citizen, Devin (the Developer) can apply standard mesh policies to it. If AeroPay is momentarily slow or returns a 5xx error, the mesh can automatically retry. | ||
|
|
||
| ```yaml |
There was a problem hiding this comment.
this whole policy is incorrect. It looks like it was halucinated ;) We need to use MeshRetry policy here. And it cannot be applied to route.
| ### Predictable DNS with HostnameGenerators | ||
| To avoid messy auto-generated names, Devin uses a **HostnameGenerator** to create a standard naming scheme for the airline. | ||
|
|
||
| ```yaml |
There was a problem hiding this comment.
examples in personas docs should also cover k8s/univeral examples as other docs do
| - mesh | ||
| --- | ||
|
|
||
| Devin is a Senior Software Engineer at **Kong Air**. He is responsible for the **Ticket Booking** ecosystem. His goal is to build a high-performance, resilient booking platform that handles millions of searches while integrating safely with external partners. |
There was a problem hiding this comment.
again it would be nice to link to actual kong air
|
|
||
| Devin needs his services to be reachable by beautiful, predictable DNS names, regardless of which cloud or zone they are running in. | ||
|
|
||
| ### Predictable DNS with HostnameGenerators |
There was a problem hiding this comment.
on kuberenetes this is not needed and kubernetes addresses could be used
There was a problem hiding this comment.
Also, I dont think that creating hostnameGenerator is part of SE concern. It should be probably done be mesh operator
| kind: HostnameGenerator | ||
| metadata: | ||
| name: kong-air-dns | ||
| namespace: {{site.mesh_system_namespace}} |
There was a problem hiding this comment.
this namespace renders empty on preview
| - mesh | ||
| --- | ||
|
|
||
| Devin is a Senior Software Engineer at **Kong Air**. He is responsible for the **Ticket Booking** ecosystem. His goal is to build a high-performance, resilient booking platform that handles millions of searches while integrating safely with external partners. |
There was a problem hiding this comment.
It would be nice to use some specific mesh name, like kong-air-mesh in this doc, and reference it in all examples
| - mesh | ||
| --- | ||
|
|
||
| Devin is a Senior Software Engineer at **Kong Air**. He is responsible for the **Ticket Booking** ecosystem. His goal is to build a high-performance, resilient booking platform that handles millions of searches while integrating safely with external partners. |
There was a problem hiding this comment.
Is Devin responsible for whole Kong Air or only some parts of it?
There was a problem hiding this comment.
It would be nice to start this with a diagram what we have and what devin is responsible for. We should assume that people reding this does not understand hhow Kong Air works
| kind: MeshHTTPRoute | ||
| spec: | ||
| targetRef: | ||
| kind: MeshService |
There was a problem hiding this comment.
we should have Dataplane in top level target ref
Co-authored-by: Marcin Skalski <skalskimarcin33@gmail.com>
Co-authored-by: Marcin Skalski <skalskimarcin33@gmail.com>
|
@justindavies Can we close this since we have a the Mesh 3 PR? |
Description
New scenario based docs for Mesh
Preview Links
https://deploy-preview-4346--kongdeveloper.netlify.app/mesh/scenarios/
Checklist
descriptionentry in frontmatter.