blog/mlops-observabilite-reseau-ia #26

Merged
Damien merged 9 commits from blog/mlops-observabilite-reseau-ia into main 2026-07-19 14:36:04 +00:00
34 changed files with 48 additions and 27 deletions
Showing only changes of commit 8e9caef392 - Show all commits

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -28,7 +28,7 @@ But several needs emerged:
## The Overall Architecture ## The Overall Architecture
![Architecture](global_architecture.fr.svg) ![Architecture](global_architecture.en.svg)
### Tech Stack ### Tech Stack

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -55,7 +55,7 @@ The goal of **VXLAN** is to **extend layer 2** across a layer 3 (IP) network. Th
> **In plain terms:** Ethernet frames (layer 2) are encapsulated inside a UDP packet (layer 4), which is itself carried over IP (layer 3). > **In plain terms:** Ethernet frames (layer 2) are encapsulated inside a UDP packet (layer 4), which is itself carried over IP (layer 3).
![OSI Layers](media_layers.fr.png#center) ![OSI Layers](media_layers.en.png#center)
> [!NOTE]**The "hardware" layers** > [!NOTE]**The "hardware" layers**
> >
@@ -87,7 +87,7 @@ The train runs on rails (the **IP network**, layer 3). The rail tracks are alrea
- **Isolation and segmentation:** Just as several trains can run on the same railway line, it's possible to operate different VXLAN tunnels (each with its own VNI) over the same IP infrastructure. - **Isolation and segmentation:** Just as several trains can run on the same railway line, it's possible to operate different VXLAN tunnels (each with its own VNI) over the same IP infrastructure.
- **Elasticity and reliability:** By relying on layer 3, VXLAN benefits from all the optimizations of IP routing (route recalculation, fault tolerance, etc.). - **Elasticity and reliability:** By relying on layer 3, VXLAN benefits from all the optimizations of IP routing (route recalculation, fault tolerance, etc.).
![Container transport](transports.fr.png#center) ![Container transport](transports.en.png#center)
## Real-world use cases 🏭 ## Real-world use cases 🏭

View File

@@ -66,11 +66,11 @@ In my day-to-day networking adventures, I deploy ContainerLab-based setups with
DevPod uses **Providers**, which are configuration modules that define where and how DevPod launches your environment. Here's the list of providers: DevPod uses **Providers**, which are configuration modules that define where and how DevPod launches your environment. Here's the list of providers:
![Provider_list](provider.fr.png#center) ![Provider_list](provider.en.png#center)
We're going to focus on the **AWS Provider** — even though there are plenty of configuration options: We're going to focus on the **AWS Provider** — even though there are plenty of configuration options:
![Provider_list](aws_options.fr.png#center) ![Provider_list](aws_options.en.png#center)
Before you panic at all these settings, don't worry. If you're just doing a bit of experimenting, the default values will usually do the job. 🙌 Before you panic at all these settings, don't worry. If you're just doing a bit of experimenting, the default values will usually do the job. 🙌
@@ -245,7 +245,7 @@ Go back to **Users** → **devpod-tool-user** → **Permissions** to confirm tha
- If you created a programmatic user, make sure to note down the **Access Key ID** and the **Secret Access Key**. - If you created a programmatic user, make sure to note down the **Access Key ID** and the **Secret Access Key**.
![devpod_user_sumup](devpod_user.fr.png#center) ![devpod_user_sumup](devpod_user.en.png#center)
**Bonus**: Note your **VPC ID** (in the VPC section on AWS). You'll need it when configuring DevPod. **Bonus**: Note your **VPC ID** (in the VPC section on AWS). You'll need it when configuring DevPod.
@@ -277,7 +277,7 @@ When prompted for:
Click **Add Provider**. Click **Add Provider**.
![added_new_provider](new_provider.fr.png#center) ![added_new_provider](new_provider.en.png#center)
## Testing a deployment 🧪 ## Testing a deployment 🧪
@@ -292,23 +292,23 @@ Let's do a quick test using one of the pre-built Docker images:
5. On the right, select a quick-start example (e.g., Python). 🐍 5. On the right, select a quick-start example (e.g., Python). 🐍
6. Click **Create Workspace**. 6. Click **Create Workspace**.
![new_worspace](new_worskapce.fr.png#center) ![new_worspace](new_worskapce.en.png#center)
Wait a few moments, and your cloud-based environment will pop up in VS Code. 🎊 Wait a few moments, and your cloud-based environment will pop up in VS Code. 🎊
![vscode](vscode.fr.png#center) ![vscode](vscode.en.png#center)
### Stop ### Stop
When you're not using the environment, click **Stop** to shut down the EC2 instance. You'll only pay for storage — no compute time. Great for your wallet. 💰 When you're not using the environment, click **Stop** to shut down the EC2 instance. You'll only pay for storage — no compute time. Great for your wallet. 💰
![Stopped Instance](stopped_instance.fr.png#center) ![Stopped Instance](stopped_instance.en.png#center)
### Delete ### Delete
Deleting the workspace removes all AWS resources associated with that environment, so you won't pay a dime. But you'll need to redeploy if you want to use it again. ♻️ Deleting the workspace removes all AWS resources associated with that environment, so you won't pay a dime. But you'll need to redeploy if you want to use it again. ♻️
![Delete Instance](delete_instance.fr.png#center) ![Delete Instance](delete_instance.en.png#center)
## Conclusion 💡 ## Conclusion 💡

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -10,7 +10,7 @@ cascade:
You've seen it thousands of times, haven't you? That little **green padlock** (or sometimes gray, depending on your browser and the site) that shows up next to a website's address in your navigation bar. You click on it, you look at it, you think "cool, it's secure," and you move on. You've seen it thousands of times, haven't you? That little **green padlock** (or sometimes gray, depending on your browser and the site) that shows up next to a website's address in your navigation bar. You click on it, you look at it, you think "cool, it's secure," and you move on.
![Certificat](certificat.png) ![Certificat](certificat.en.png)
But... do you really know what it means? 🤔 All the **mechanics that kick in** just so this little symbol appears? It's much more than a simple icon! It's the visible part of an iceberg. \ But... do you really know what it means? 🤔 All the **mechanics that kick in** just so this little symbol appears? It's much more than a simple icon! It's the visible part of an iceberg. \
**So, what's our mission today? 🚀** **So, what's our mission today? 🚀**

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 222 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 336 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 304 KiB

View File

@@ -22,7 +22,7 @@ The principle of HTTPS is comparable to sending mail in a safe where only the se
**SSL Bumping** gets around this problem by inserting itself in the middle of the communication: **SSL Bumping** gets around this problem by inserting itself in the middle of the communication:
![SSL Bumping Expliqué](images/ssl_bumping_explique.fr.svg#center) ![SSL Bumping Expliqué](images/ssl_bumping_explique.en.svg#center)
The proxy will: The proxy will:
1. **Intercept** the client's HTTPS connection. 1. **Intercept** the client's HTTPS connection.
@@ -57,7 +57,7 @@ For SSL Bumping to work, the proxy must be able to generate certificates on the
When you try to access `https://www.example.com`: When you try to access `https://www.example.com`:
![Génération des faux certificats](images/generation_des_faux_certificats.fr.svg) ![Génération des faux certificats](images/generation_des_faux_certificats.en.svg)
1. The proxy intercepts your request. 1. The proxy intercepts your request.
2. It connects to the real `example.com` server and retrieves its legitimate certificate. 2. It connects to the real `example.com` server and retrieves its legitimate certificate.
@@ -77,7 +77,7 @@ To really understand the mechanism, nothing beats hands-on practice. I've prepar
### Lab Architecture ### Lab Architecture
![Architecture du lab SSL](images/architecture_du_lab_ssl.fr.svg) ![Architecture du lab SSL](images/architecture_du_lab_ssl.en.svg)
### Quick Deployment ### Quick Deployment

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 93 KiB

View File

@@ -44,7 +44,7 @@ In a standard site, the connection of leaf devices to the spines follows these r
* **Leaf Eth2 Interface:** Always connected to the Spine 2 Eth2 interface. * **Leaf Eth2 Interface:** Always connected to the Spine 2 Eth2 interface.
* **Leaf Eth3 Interface:** Always dedicated to connecting to the access switch present in the same building. * **Leaf Eth3 Interface:** Always dedicated to connecting to the access switch present in the same building.
![Site Standard](<Site Standard.drawio.svg>) ![Site Standard](<Site Standard.drawio.en.svg>)
> [!NOTE] Simplification for the POC > [!NOTE] Simplification for the POC
> For the purposes of this **Proof of Concept**, we opted for a simplified architecture without advanced redundancy at the leaf-spine connection level. > For the purposes of this **Proof of Concept**, we opted for a simplified architecture without advanced redundancy at the leaf-spine connection level.
@@ -155,7 +155,7 @@ Choose site number or 'new': 1
> [!NOTE] Netbox Plugin > [!NOTE] Netbox Plugin
> The configuration can easily be visualized with the help of the plugin: [netbox_topology_views](https://github.com/netbox-community/netbox-topology-views) > The configuration can easily be visualized with the help of the plugin: [netbox_topology_views](https://github.com/netbox-community/netbox-topology-views)
![Topologie de Paris](fabric_topology.png) ![Topology of Paris](fabric_topology.en.png)
> [!TIP] > [!TIP]
> Link to the Cookbook [here](https://github.com/darnodo/projet-vxlan-automation/blob/dev/documentation/CookBook.md#%EF%B8%8F-create-fabric) > Link to the Cookbook [here](https://github.com/darnodo/projet-vxlan-automation/blob/dev/documentation/CookBook.md#%EF%B8%8F-create-fabric)
@@ -262,7 +262,7 @@ Now that we know how Netbox generates the configurations, let's see how we use t
* Click on the device you're interested in (for example, one of our leafs). * Click on the device you're interested in (for example, one of our leafs).
* And there we have a magic tab: **Render Config**! Clicking on it shows the configuration Netbox generated for this device using the Jinja2 template and its own data. * And there we have a magic tab: **Render Config**! Clicking on it shows the configuration Netbox generated for this device using the Jinja2 template and its own data.
![PA01 Leaf Configuration](<Render Config.png>) ![PA01 Leaf Configuration](<Render Config.en.png>)
2. **The Human Touch in Containerlab 🖐️** For now, we don't have a script that automatically pushes these configurations to our devices in Containerlab. So we're going to do it the old-fashioned way (but that's fine for a demo!): 2. **The Human Touch in Containerlab 🖐️** For now, we don't have a script that automatically pushes these configurations to our devices in Containerlab. So we're going to do it the old-fashioned way (but that's fine for a demo!):
@@ -312,9 +312,9 @@ For more information, I'll point you to the article on [My First Lab](../../netl
And then, via VSCode, it's possible to launch Wireshark directly: And then, via VSCode, it's possible to launch Wireshark directly:
![Extension vscode](leaf1_capture_eth1.png) ![Extension vscode](leaf1_capture_eth1.en.png)
![Capture Wireshark](wireshark_eth2_leaf1.png) ![Capture Wireshark](wireshark_eth2_leaf1.en.png)
## Conclusion ✨ ## Conclusion ✨

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -43,7 +43,7 @@ Our lab will simulate a VXLAN topology consisting of:
The following diagram illustrates the VXLAN topology: The following diagram illustrates the VXLAN topology:
![VXLAN Topology](VXLAN.fr.svg#center) ![VXLAN Topology](VXLAN.en.svg#center)
Here's the Containerlab topology file (`lab_vxlan.yml`) used for this configuration: Here's the Containerlab topology file (`lab_vxlan.yml`) used for this configuration:
@@ -126,7 +126,7 @@ We'll deploy the lab with **DevPod** in two ways:
- Choose your default IDE. - Choose your default IDE.
- Finally, click **Create Workspace**. - Finally, click **Create Workspace**.
![DevPod Configuration](devpod_configuration.fr.png#center) ![DevPod Configuration](devpod_configuration.en.png#center)
### 2. Using a Local Folder 🗂️ ### 2. Using a Local Folder 🗂️
@@ -135,7 +135,7 @@ If you prefer to use your local repository:
- The only difference is in the **Workspace source**. - The only difference is in the **Workspace source**.
- Simply point it to your local repository. - Simply point it to your local repository.
![DevPod Configuration - Local](devpod_configuration_local.fr.png#center) ![DevPod Configuration - Local](devpod_configuration_local.en.png#center)
## Starting the Lab 🎬 ## Starting the Lab 🎬
@@ -169,7 +169,7 @@ If you prefer to use your local repository:
Ports (for example, port 50080 mentioned in `devcontainer.json`) are forwarded. Access the graphical view via [localhost](http://localhost:50080). Ports (for example, port 50080 mentioned in `devcontainer.json`) are forwarded. Access the graphical view via [localhost](http://localhost:50080).
![Graph View](Graph_view.fr.png#center) ![Graph View](Graph_view.en.png#center)
## Using EdgeShark 🦈 ## Using EdgeShark 🦈
@@ -199,12 +199,12 @@ DOCKER_DEFAULT_PLATFORM= docker compose up -d
Access EdgeShark via [localhost:5001](http://localhost:5001). Access EdgeShark via [localhost:5001](http://localhost:5001).
- **EdgeShark View**: - **EdgeShark View**:
![EdgeShark View](edgeshark.fr.png#center) ![EdgeShark View](edgeshark.en.png#center)
- **Integration with Wireshark**: - **Integration with Wireshark**:
By clicking the Wireshark icon in EdgeShark, you can launch Wireshark locally. By clicking the Wireshark icon in EdgeShark, you can launch Wireshark locally.
![EdgeShark Interface](edgeshark_interface.fr.png#center) ![EdgeShark Interface](edgeshark_interface.en.png#center)
![EdgeShark and Wireshark](edge_wireshark.fr.png#center) ![EdgeShark and Wireshark](edge_wireshark.en.png#center)
## Conclusion 🎉 ## Conclusion 🎉

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB