Skip to content

Commit 4ee2c1a

Browse files
committed
prereq and install procedures done. placeholder for the rest
1 parent 1867bca commit 4ee2c1a

File tree

4 files changed

+194
-31
lines changed

4 files changed

+194
-31
lines changed
106 KB
Loading

documentation/modules/ROOT/nav.adoc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@
99
** xref:02-architecture.adoc#more_tech[{module}.{counter:submodule2}. More about the technology stack]
1010
1111
* xref:03-demo.adoc[{counter:module}. See the Solution in Action]
12-
** xref:03-demo.adoc#_demonstration[{module}.{counter:submodule3}. Demonstration]
13-
** xref:03-demo.adoc#_run_the_demonstration[{module}.{counter:submodule3}. Run this demonstration]
14-
*** xref:03-demo.adoc#_before_getting_started[{module}.{counter:submodule3}. Pre-requisites]
15-
*** xref:03-demo.adoc#_installing_the_demo[{module}.{counter:submodule3}. Installing the demo]
16-
*** xref:03-demo.adoc#_walkthrough_guide[{module}.{counter:submodule3}. Walkthrough guide]
12+
// ** xref:03-demo.adoc#_demonstration[{module}.{counter:submodule3}. Prerequisites]
13+
// ** xref:03-demo.adoc#_run_the_demonstration[{module}.{counter:submodule2}. Run this demonstration]
14+
// ** xref:03-demo.adoc#_before_getting_started[{module}.{counter:submodule2}. Pre-requisites]
15+
// ** xref:03-demo.adoc#_installing_the_demo[{module}.{counter:submodule2}. Installing the demo]
16+
// ** xref:03-demo.adoc#_walkthrough_guide[{module}.{counter:submodule2}. Walkthrough guide]
1717
18-
* xref:04-workshop.adoc[{counter:module}. Workshop]
19-
** xref:04-workshop.adoc#_installing_the_workshop_environment[{module}.{counter:submodule4}. Installing the workshop environment]
20-
*** xref:04-workshop.adoc#_before_getting_started[{module}.{counter:submodule4}. Pre-requisites]
21-
*** xref:04-workshop.adoc#_installing_the_environment[{module}.{counter:submodule4}. Installing the environment]
22-
** xref:04-workshop.adoc#deliver_wksp[{module}.{counter:submodule4}. Delivering the workshop]
18+
// * xref:04-workshop.adoc[{counter:module}. Workshop]
19+
// ** xref:04-workshop.adoc#_installing_the_workshop_environment[{module}.{counter:submodule4}. Installing the workshop environment]
20+
// *** xref:04-workshop.adoc#_before_getting_started[{module}.{counter:submodule4}. Pre-requisites]
21+
// *** xref:04-workshop.adoc#_installing_the_environment[{module}.{counter:submodule4}. Installing the environment]
22+
// ** xref:04-workshop.adoc#deliver_wksp[{module}.{counter:submodule4}. Delivering the workshop]
2323

2424
* xref:developer-resources.adoc[{counter:module}. Developer Resources]
2525

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

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Now imagine having to custom-build and manage this operational overhead for ever
1919
- **Decreased Developer Productivity**: Engineers spend more time on operational concerns than on delivering business value, reducing overall velocity.
2020
- **Loss of Agility in Microservices**: The promised agility of microservices gets undermined by the fragmented, ad-hoc implementation of cross-cutting concerns.
2121

22-
**How OpenShift Service Mesh Solves These Challenges**
22+
=== How OpenShift Service Mesh Solves These Challenges
2323

2424
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:
2525

@@ -46,13 +46,38 @@ OpenShift Service Mesh addresses these challenges by providing a platform-native
4646
** https://kustomize.io/[Kustomize]
4747
** https://gateway-api.sigs.k8s.io//[k8s Gatway API]
4848

49-
5049
[#in_depth]
51-
== An in-depth look at the solution's architecture
50+
== An in-depth look at the solution's architecture
51+
52+
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:
53+
54+
image::flow-diagram-01.png[width=100%]
55+
56+
=== **Traffic Splitting with Virtual Services**:
57+
** The team defines a Virtual Service within OpenShift Service Mesh to split traffic dynamically between `v1` and `v2` of the back-end-service. Initially, 90% of traffic is routed to `v1`, while 10% is routed to `v2`.
58+
** This setup ensures that most users experience the stable `v1` while `v2` is tested under real-world conditions with a small subset of traffic.
59+
60+
=== **Real-Time Observability**:
61+
** Integrated tools like Distributed Tracing and Kiali enable the team to visualize request flows and monitor key performance indicators (KPIs) such as latency, error rates, and success rates for `v2` of the back-end-service.
62+
** The Red Hat build of OpenTelemetry provides detailed traces of user requests, helping identify performance bottlenecks or errors in `v2`.
63+
64+
=== **Progressive Rollout**:
65+
** Once the team confirms that `v2` is stable, they gradually increase the traffic percentage directed to it—e.g., moving to 50/50 and eventually 100% for `v2`.
66+
** If issues are detected, traffic can be instantly shifted back to `v1` of the back-end-service using the Virtual Service configuration, ensuring no user impact.
67+
68+
=== **Secure Communication with mTLS**:
69+
** All service-to-service communication between `v1`, `v2`, and other dependent services is encrypted by default with mutual TLS (mTLS). This ensures that sensitive customer data remains protected throughout the deployment process.
70+
71+
=== **Platform Integration**:
72+
** Since OpenShift Service Mesh is included with the OpenShift Container Platform subscription, the team can leverage enterprise support and seamless integration with OpenShift Observability, minimizing operational overhead.
73+
74+
75+
[#more_tech]
76+
== About the Technology Stack
5277

5378
OpenShift Service Mesh 3 is built on a modular, Kubernetes-native architecture designed to address the complexities of managing microservices communication, security, traffic management, and observability. It integrates tightly with Red Hat OpenShift, leveraging Kubernetes-native APIs and tools.
5479

55-
**Core Components**
80+
=== **Core Components**
5681

5782
* **Istio**
5883
** Purpose: Core of the service mesh, responsible for service-to-service communication, traffic management, and policy enforcement.
@@ -62,6 +87,20 @@ OpenShift Service Mesh 3 is built on a modular, Kubernetes-native architecture d
6287
*** Resiliency features like retries, circuit breaking, and failover.
6388
** Deployment: Control plane components (`istiod`, `istio-cni`) run in dedicated namespaces (`istio-system`, `istio-cni`).
6489

90+
* **Gateway** (Gateway API)
91+
** ** Purpose: Handle external traffic entering the mesh and secure egress traffic leaving the mesh.
92+
** Describes how traffic can be translated to Services within the cluster
93+
** Key Features:
94+
*** Centralized traffic entry/exit point.
95+
*** Policy enforcement and telemetry collection.
96+
** Can express capabilities like HTTP header manipulation, traffic weighting & mirroring, TCP/UDP routing
97+
** May be attached to one or more Route references which serve to direct traffic for a subset of traffic to a specific service
98+
99+
* **HTTPRoute** (Gateway API)
100+
** Enables advanced routing capabilities for Ingress.
101+
** Specifies routing behavior of HTTP requests from a Gateway listener to an API object, i.e. Service.
102+
** Each Route includes a way to reference the parent resources it wants to attach to.
103+
65104
* **Distributed Tracing (via Tempo)**
66105
** Purpose: Distributed tracing for monitoring and debugging service interactions.
67106
** Key Features:
@@ -91,7 +130,7 @@ OpenShift Service Mesh 3 is built on a modular, Kubernetes-native architecture d
91130
*** Centralized traffic entry/exit point.
92131
*** Policy enforcement and telemetry collection.
93132

94-
**Key Architectural Decisions**
133+
=== **Key Architectural Decisions**
95134

96135
* **Kubernetes Gateway API Support**
97136
** OpenShift Service Mesh 3 incorporates the Kubernetes Gateway API to modernize ingress and egress traffic management. This provides better scalability and integration compared to legacy Service Mesh (OSSM 2.x) ingress/egress configurations.

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

Lines changed: 140 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,154 @@
55

66
= See the Solution in Action
77

8-
== Demonstration
8+
Before walking though the solution, let's ensure all the necessary prerequisites are in place to set up the environment.
99

10-
Include here content related to potential existing demos: blogs, articles, recorded videos, walkthrough guides, tutorials.
10+
== Prerequisites
1111

12-
[#demo-video]
13-
=== Watch a demonstration
12+
To provision the demo you will perform the following steps - each of which is explained in detail in the next sections:
1413

15-
In this video you can see xpto:
14+
* You will need an OpenShift cluster with cluster-admin privileges. This solution pattern has been tested on OpenShift 4.17
1615

17-
video::3yULVMdqJ98[youtube, width=800, height=480]
16+
* Ensure you have the OpenShift CLI tool `oc` installed and the ability to run shell scripts in your local environment such as your laptop
1817

19-
Next, you can learn how to walkthrough this demo.
18+
=== CLI Tools
2019

21-
== Run the demonstration
20+
To check if you have the cli tools, you can open your terminal and use following command:
2221

23-
=== Before getting started
24-
To run this demo, you will need xpto. Adding to that, make sure to have:
22+
[.console-input]
23+
[source,shell script]
24+
----
25+
oc version #openshift cli client
26+
----
2527

26-
* ABC
27-
* XYZ
28-
* XPTO
28+
== Setup
2929

30-
=== Installing the demo
31-
Installation guide and basic test of the demo installation if needed
30+
In this demo, the deployment scripts uses the OpenShift CLI to:
3231

33-
=== Walkthrough guide
32+
* Install the following OpenShift Operators:
33+
** OpenShift Service Mesh 3 (Tech Preview)
34+
** Kiali
35+
** OpenTelemetry
36+
** Tempo
37+
38+
* Enable Gateway API (Tech Preview)
39+
40+
* Implement an OpenShift Service Mesh solution
41+
** Provision and configure OpenShift Service Mesh control plane and other Istio supporting components (CRs namespaces)
42+
*** Istio (istiod)
43+
*** Istio-CNI (pod networking)
44+
*** Ingress-Gateway (for Gateway API and Istio Gateway)
45+
*** Kiali
46+
*** OpenShift Service Mesh Console Plugin
47+
** Provision and configure a `tracing-system` via a TemoStack for distributed tracing
48+
*** MinIO for persisent s3 storage
49+
*** Tempo
50+
*** OpenTelemetry CRs
51+
**** OpenTelemetryCollector
52+
**** Telemetry
53+
** Monitoring Configuration
54+
*** Enable User Monitoring with OpenShift Observability (Prometheus)
55+
*** Enable SystemMonitor in `istio-system` namespace
56+
*** Enable PodMonitor in all istio-related namespaces as well as application namespaces
57+
**** `istio-system`
58+
**** `istio-ingress`
59+
**** `bookinfo`
60+
**** `rest-api-with-mesh`
61+
*** Label all istio-releated and application namespaces with `istio-injection=enabled`
62+
** Sample Applications for Demo and Use-cases
63+
*** `bookinfo` - A sample multi-service application to demonstrate OSSM observability
64+
*** `rest-api-with-mesh` - A simple RestAPI application that contains a front end API that calls our back-end API that we are going to deploy via Canary deployment
65+
66+
There is also a set of scripts we will use to test and deploy our RestAPI backend from `v1` to `v2`
67+
68+
=== Get the deployment scripts
69+
* Login to your OpenShift cluster as cluster-admin (because a number of operators will need to be installed) via the OpenShift web console
70+
* Click on the username on the top right hand, and then click on Copy login command. This will open another tab and you will need to login again
71+
* Click on *Display token* link, and copy the command under *Log in with this token*. This command will look like this:
72+
73+
[source,shell script]
74+
----
75+
oc login --token=<token> --server=<server>
76+
----
77+
78+
* Clone the following git repo
79+
80+
[.console-input]
81+
[source,shell script]
82+
----
83+
git clone https://github.com/bugbiteme/ossm-3-demo.git
84+
----
85+
86+
=== Install Operators and enable Gateway API
87+
88+
Ensure you are in the top-level directory of the project: `./ossm-3-demo`.
89+
90+
Run the following script to install the above listed Operators and Gateway API and wait for it to complete
91+
92+
[.console-input]
93+
[source,shell script]
94+
----
95+
sh ./install_operators.sh
96+
----
97+
98+
=== Install OSSM solution and example applications
99+
100+
Ensure you are in the top-level directory of the project: `./ossm-3-demo`.
101+
102+
Run the following script to implement Service Mesh and the example applications and wait for it to complete:
103+
104+
[.console-input]
105+
[source,shell script]
106+
----
107+
sh ./install_ossm3_demo.sh
108+
----
109+
110+
Expected final output:
111+
[source,shell script]
112+
----
113+
====================================================================================================
114+
Ingress route for bookinfo is: http://istio-ingressgateway-istio-ingress.apps.<domain>/productpage
115+
To test RestAPI: sh ./scripts/test-api.sh
116+
Kiali route is: https://kiali-istio-system.apps.<domain>
117+
====================================================================================================
118+
----
119+
120+
121+
== Walkthrough guide
34122
How to run through the demo
123+
124+
=== Exploring the bookinfo application
125+
126+
==== OpenShift Web Console View
127+
From the OpenShift web console, when looking at the topology of the `bookinfo` namespace, we see a number of deployments. But
128+
129+
==== Kiali View
130+
We can see the traffic flow
131+
132+
===== Overview
133+
134+
===== Traffic Graphic
135+
136+
===== Workloads
137+
138+
===== Service
139+
140+
===== Istio Config
141+
142+
===== Mesh
143+
144+
===== Distributed Tracing
145+
146+
=== Exploring the RestAPI (`rest-api-with-mesh`)
147+
148+
==== OpenShift Web Console View
149+
From the OpenShift web console, when looking at the topology of the `bookinfo` namespace, we see a number of deployments. But
150+
151+
==== Kiali View via The OpenShift Service Mesh Console Plugin (OpenShift Web Console)
152+
We can see the traffic flow
153+
154+
===== Overview
155+
156+
===== Traffic Graphic
157+
158+
=== Performing a Canary Deployment (`rest-api-with-mesh`)

0 commit comments

Comments
 (0)