Skip to content

Commit c0e272e

Browse files
committed
rev 1
1 parent f707873 commit c0e272e

File tree

7 files changed

+27
-16
lines changed

7 files changed

+27
-16
lines changed
45.7 KB
Loading
20.4 KB
Loading
176 KB
Loading

documentation/modules/ROOT/pages/01-pattern.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
**Canary Deployment with Traffic Splitting**
44

5+
image::canary-01.png[width=75%]
6+
57
**Objective**: Safely roll out a new version of a microservice while monitoring its performance.
68

79
A retail company has an application running on OpenShift that handles online orders. The development team wants to deploy a new version (`v2`) of their `hello-service` RestAPI without disrupting users of the current version (`v1`).
@@ -11,7 +13,7 @@ A retail company has an application running on OpenShift that handles online ord
1113

1214
Using OpenShift Service Mesh 3 with the Kubernetes Gateway API, they configure a traffic-splitting policy to direct 90% of traffic to `v1` and 10% to `v2`.
1315

14-
With integrated observability tools like **Jaeger** and **Kiali**, the team monitors traffic flow, latency, and error rates in real-time for v2.
16+
With integrated observability tools like **Jaeger** and **Kiali**, the team monitors traffic flow, latency, and error rates in real-time for `v2`.
1517

1618
Once performance metrics confirm stability, they incrementally increase traffic to `v2` until it handles 100% of requests, ensuring a smooth transition.
1719

documentation/modules/ROOT/pages/02-architecture.adoc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,25 @@ Now imagine having to custom-build and manage this operational overhead for ever
2626
image::ossm-use-cases.png[width=100%]
2727

2828

29-
OpenShift Service Mesh addresses these challenges by providing a platform-native, unified solution that abstracts away the operational complexities of microservices architectures. It allows developers to focus solely on the business logic of their services while enabling platform teams to:
29+
**OpenShift Service Mesh** addresses these challenges by providing a platform-native, unified solution that abstracts away the operational complexities of microservices architectures. It allows developers to focus solely on the business logic of their services while enabling platform teams to:
3030

3131
- **Enforce Consistent Security Policies**: Mutual TLS (mTLS) encryption and fine-grained access controls are implemented out of the box, ensuring all services adhere to a uniform security baseline.
32-
- **Enable Seamless Observability**: Built-in tools like Jaeger, Kiali, and Prometheus provide centralized tracing, visualization, and monitoring, giving teams actionable insights across the service mesh.
32+
- **Enable Seamless Observability**: Built-in platform tools like **Distributed Tracing**, **Kiali**, and **Prometheus** provide centralized tracing, visualization, and monitoring, giving teams actionable insights across the service mesh.
3333
- **Streamline Traffic Management**: Intelligent traffic routing, load balancing, and support for advanced deployment strategies (e.g., canary releases) simplify managing and optimizing service-to-service communication.
3434
- **Enhance Reliability and Resilience**: Features like automatic retries, circuit breakers, and failover mechanisms ensure high availability even under challenging network conditions.
3535
- **Support Kubernetes-Native Standards**: OpenShift Service Mesh 3's support for the Kubernetes Gateway API allows for modern, scalable management of ingress and egress traffic across clusters.
3636

3737
With few or no service code changes.
3838

39-
OpenShift Service Mesh uses a proxy container (Envoy) to manage all network traffic for your applications. This proxy allows you to enable powerful features, like traffic control, security, and monitoring, based on the settings you define.
39+
OpenShift Service Mesh uses a proxy container (Envoy) that is injected into a pod to intercept and manage all network traffic for your applications. This proxy allows you to enable powerful features, like traffic control, security, and monitoring, based on the settings you define in the Service Mesh control plane in a way that is decoupled from the application code.
4040

4141
image::ossm-01.png[width=50%]
4242

43-
The control plane takes your desired configuration, and its view of the services, and dynamically programs the proxy, updating them as the rules or the environment changes.
43+
The control plane takes your desired configuration, and its view of the services, and dynamically manages the proxy mesh, updating them as the rules or the environment changes.
4444

4545
image::ossm-02.png[width=75%]
4646

47-
The data plane is the communication between services.
47+
The data plane is the communication between services within the mesh itself.
4848

4949
[#tech_stack]
5050
== Technology Stack used in this Solution Pattern
@@ -78,7 +78,7 @@ a|image::ossm-logo-04.png[width=100, height=100]
7878
[#in_depth]
7979
== An in-depth look at the solution's architecture
8080

81-
OpenShift Service Mesh 3, leveraging the Kubernetes Gateway API, provides a Kubernetes-native and efficient approach to canary deployments. Here’s how it addresses the challenges:
81+
OpenShift Service Mesh 3, leveraging the Kubernetes Gateway API, provides a Kubernetes-native and efficient approach to managing cluster ingress and canary deployments. Here’s how it addresses the challenges:
8282

8383
image::flow-diagram-01.png[width=100%]
8484

@@ -124,10 +124,11 @@ OpenShift Service Mesh 3 is built on a modular, Kubernetes-native architecture d
124124
*** Policy enforcement and telemetry collection.
125125
** Can express capabilities like HTTP header manipulation, traffic weighting & mirroring, TCP/UDP routing
126126
** May be attached to one or more Route references which serve to direct traffic for a subset of traffic to a specific service
127+
** Uses Istio for ingress traffic management.
127128

128129
* **HTTPRoute** (Gateway API)
129-
** Enables advanced routing capabilities for Ingress.
130-
** Specifies routing behavior of HTTP requests from a Gateway listener to an API object, i.e. Service.
130+
** Enables advanced routing capabilities for service ingress.
131+
** Specifies routing behavior of HTTP requests from a Gateway listener to an kubernetes `Service` resource associated with a pod.
131132
** Each Route includes a way to reference the parent resources it wants to attach to.
132133

133134
* **Distributed Tracing (via Tempo)**
@@ -150,7 +151,7 @@ OpenShift Service Mesh 3 is built on a modular, Kubernetes-native architecture d
150151
** Purpose: Metrics collection and visualization.
151152
** Key Features:
152153
*** Collect and store time-series data for service mesh metrics.
153-
*** Provide dashboards for performance and health monitoring.
154+
*** Provide dashboards in the OpenShift Web console for performance and health monitoring.
154155
*** Utilizes `SystemMonitor` and `PodMonitor` CRDs to gather Service Mesh controle plane and namespace-level metrics
155156

156157
* **Ingress/Egress Gateways**

documentation/modules/ROOT/pages/03-demo.adoc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Before walking through the solution, ensure all necessary prerequisites are in p
99
[#before_getting_started]
1010
== Prerequisites
1111

12-
To provision the demo, you will perform the following stepseach explained in detail in the next sections:
12+
To provision the demo, you will perform the following steps, each explained in detail in the next sections:
1313

1414
* You will need an OpenShift cluster with cluster-admin privileges. This solution pattern has been tested on OpenShift 4.17.
1515
* Ensure you have the OpenShift CLI tool `oc` installed and the ability to run shell scripts in your local environment, such as your laptop.
@@ -192,8 +192,6 @@ metadata:
192192

193193
The label `istio-injection: enabled` on a Namespace is critical because it enables automatic sidecar injection for all pods deployed within that namespace. This label is a core part of Istio's architecture and is essential for integrating services into the service mesh.
194194

195-
The label istio-injection: enabled on a Namespace is critical because it enables automatic sidecar injection for all pods deployed within that namespace. This label is a core part of Istio's architecture and is essential for integrating services into the service mesh.
196-
197195
**Why is `istio-injection: enabled` Important?**
198196

199197
* Automatic Sidecar Injection
@@ -213,6 +211,7 @@ The label istio-injection: enabled on a Namespace is critical because it enables
213211

214212
The output of `oc get pods -n bookinfo` shows that the Bookinfo application is running in the `bookinfo` namespace with multiple services and versions. The key observation here is that each pod has 2/2 containers running, indicating that Istio sidecar injection is enabled in this namespace.
215213

214+
[source,bash]
216215
----
217216
oc get pods -n bookinfo
218217
@@ -254,6 +253,8 @@ image::bookinfo-03.png[width=75%]
254253
We can get a better view of how our services are interacting with one another when we use the Istio observability tool Kiali.
255254

256255
To obtain the Kiali URL, you can run the following commands:
256+
257+
[source,bash]
257258
----
258259
export KIALI_HOST=$(oc get route kiali -n istio-system -o=jsonpath='{.spec.host}')
259260
echo https://${KIALI_HOST}
@@ -328,6 +329,8 @@ The Distributed Tracing option opens up a new window (Jaeger Console). Distribut
328329
[NOTE]
329330
====
330331
Distributed Tracing is not covered in this Solution Pattern, but feel free to explore this console on your own.
332+
333+
If the Distributed Tracing page does not disply properly, ensure the URL is using `http` rather than `https`
331334
====
332335

333336
[#walkthrough_guide]
@@ -499,6 +502,7 @@ For the `Display` options, select:
499502

500503
- `Traffic Distribution`
501504
- `Idle Nodes`
505+
- `Security`
502506
- `Traffic Animation` (optional, but helpful)
503507

504508
image::rest-03.png[width=100%]

documentation/modules/ROOT/pages/index.adoc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44
:sectlinks:
55
:doctype: book
66

7+
image::mesh-cover-page.png[width=75%]
78
Red Hat OpenShift Service Mesh adds a transparent layer on existing distributed applications without requiring any changes to the application code. The mesh introduces an easy way to create a network of deployed services that provides discovery, load balancing, service-to-service authentication, failure recovery, metrics, and monitoring. A service mesh also provides more complex operational functionality, including A/B testing, canary releases, access control, and end-to-end authentication.
89

9-
Microservice architectures split the work of enterprise applications into modular services, which can make scaling and maintenance easier. However, as an enterprise application built on a microservice architecture grows in size and complexity, it becomes difficult to understand and manage. Service Mesh can address those architecture problems by capturing or intercepting traffic between services and can modify, redirect, or create new requests to other services.
10+
Microservice architectures split the work of enterprise applications into modular services (deployed as pods in Kuberntetes), which can make scaling and maintenance easier. However, as an enterprise application built on a microservice architecture grows in size and complexity, it can potentially become difficult to understand and manage. Service Mesh can address those architecture problems by capturing or intercepting traffic between services and can modify, redirect, or create new requests to other services in a way that is independant from business logic.
1011

12+
image::mesh-diagram-01.png[width=100%]
1113

1214
**Included with OpenShift Container Platform Subscription**
1315

16+
image::mesh-diagram-02.png[width=75%]
17+
1418
A key benefit of OpenShift Service Mesh is that it, along with most of its critical dependencies (e.g., Istio, Jaeger, Kiali, Prometheus), is included and fully supported with the OpenShift Container Platform subscription. This integration ensures:
1519

1620
- **Enterprise Support**: Comprehensive support from Red Hat for both OpenShift Service Mesh and its dependencies.
@@ -26,7 +30,7 @@ This solution brief demonstrates how OpenShift Service Mesh 3 empowers platform
2630
++++
2731
[IMPORTANT]
2832
====
29-
**OpenShift Service Mesh 3.0** and **Gateway API** in OpenShift are Technology Preview features only.
33+
**OpenShift Service Mesh 3.0** and **Gateway API** in OpenShift are Technology Preview features only at this time.
3034
3135
Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
3236
@@ -35,7 +39,7 @@ link:https://access.redhat.com/support/offerings/techpreview[More details about
3539
This Solution Pattern will update as supported releases become generally available (GA).
3640
====
3741

38-
*Contributors:* link:https://github.com/bugbiteme[Leon Levy]
42+
*Contributors:* link:https://github.com/bugbiteme[Leon Levy] - Red Hat OpenShift Specialist Solution Architect
3943

4044
++++
4145
<br>

0 commit comments

Comments
 (0)