From 53c2ce42e70069a47989e51afd3242155e09eadf Mon Sep 17 00:00:00 2001 From: Roman Dodin Date: Thu, 5 Dec 2024 19:02:26 +0100 Subject: [PATCH] Release notes 0.60.0 (#2330) * init rn 0.60 * added more rns * added WSL-Containerlab note * added consistency=cached for the devcontainers --- .../docker-in-docker/devcontainer.json | 2 +- .../docker-in-docker_slim/devcontainer.json | 2 +- .../devcontainer.json | 2 +- .../devcontainer.json | 2 +- docs/macos.md | 15 ++ docs/rn/0.60.md | 128 ++++++++++++++++++ docs/windows.md | 15 +- mkdocs.yml | 3 +- 8 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 docs/rn/0.60.md diff --git a/.devcontainer/docker-in-docker/devcontainer.json b/.devcontainer/docker-in-docker/devcontainer.json index ebb234b10..61a0d9f3d 100644 --- a/.devcontainer/docker-in-docker/devcontainer.json +++ b/.devcontainer/docker-in-docker/devcontainer.json @@ -56,6 +56,6 @@ ] } }, - "workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind,consistency=cached", "workspaceFolder": "/clab" } \ No newline at end of file diff --git a/.devcontainer/docker-in-docker_slim/devcontainer.json b/.devcontainer/docker-in-docker_slim/devcontainer.json index e2d9608e0..33039b426 100644 --- a/.devcontainer/docker-in-docker_slim/devcontainer.json +++ b/.devcontainer/docker-in-docker_slim/devcontainer.json @@ -43,6 +43,6 @@ ] } }, - "workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind,consistency=cached", "workspaceFolder": "/clab" } \ No newline at end of file diff --git a/.devcontainer/docker-outside-of-docker/devcontainer.json b/.devcontainer/docker-outside-of-docker/devcontainer.json index 331e254be..c5e36e5d5 100644 --- a/.devcontainer/docker-outside-of-docker/devcontainer.json +++ b/.devcontainer/docker-outside-of-docker/devcontainer.json @@ -64,5 +64,5 @@ } }, "workspaceFolder": "${localWorkspaceFolder}", - "workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind" + "workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind,consistency=cached" } \ No newline at end of file diff --git a/.devcontainer/docker-outside-of-docker_slim/devcontainer.json b/.devcontainer/docker-outside-of-docker_slim/devcontainer.json index da5c8ee04..5e9b4fba2 100644 --- a/.devcontainer/docker-outside-of-docker_slim/devcontainer.json +++ b/.devcontainer/docker-outside-of-docker_slim/devcontainer.json @@ -54,5 +54,5 @@ } }, "workspaceFolder": "${localWorkspaceFolder}", - "workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind" + "workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind,consistency=cached" } \ No newline at end of file diff --git a/docs/macos.md b/docs/macos.md index 10cf8a098..973e26bd1 100644 --- a/docs/macos.md +++ b/docs/macos.md @@ -227,6 +227,21 @@ That's why we also have the docker-outside-of-docker (dood) variant of the devco You can have both docker-in-docker and docker-outside-of-docker variants of the devcontainer file in your repo, and your IDE will be able to switch between them. +## DevPod + +[DevPod](https://devpod.sh) is an open-source project by loft.sh that makes using devcontainers easier and more portable. + +When compared to Devcontainers-way explained in the previous section, DevPod has the following advantages: + +- improved User Experience by offering launching workspaces directly from the browser +- support for multiple IDEs and multiple target providers (locally with docker, or any cloud, or even on top of K8s) + +A short demo is worth a thousand words: + +-{{youtube(url='https://www.youtube.com/embed/ceDrFx2K3jE')}}- + +We are still polishing the DevPod integration, especially the integration with WSL. Let us know if you have any questions or suggestions. + [^1]: Or any other application that enables Docker on macOS. OrbStack is just a great choice that is used by many. [^2]: With Microsoft Surface laptop released with ARM64 architecture [^3]: The same principles apply to Docker Desktop on Windows diff --git a/docs/rn/0.60.md b/docs/rn/0.60.md new file mode 100644 index 000000000..c5a4d9aea --- /dev/null +++ b/docs/rn/0.60.md @@ -0,0 +1,128 @@ +--- +icon: fontawesome/solid/tree +--- + +# Release 0.60 :christmas_tree: + +:material-calendar: 2024-12-04 · :material-list-status: [Full Changelog](https://github.com/srl-labs/containerlab/releases) + +## New Year New Look: The new table style + +Yes, the New Year is not quite here, but the gifts are. We have a new table style and layout that you will see whenever you run +any of the containerlab commands that display tabular data. + +Before we used the classic table style which was not very pretty, but more importantly, it was quite W I D E. We've seen you struggling with it, shrinking the terminal font size to fit the table view. It was not a great UX. + +So we decided to change that, and in this release we introduce a new table style that looks nice(er) and is much more compact! Here is a 1:1 comparison of the table output for the [SR Linux ACL lab](https://github.com/srl-labs/srl-acl-lab) that has three nodes in it: + +``` +Old table style: ++---+------------+--------------+--------------------------------------------+---------------+---------+----------------+----------------------+ +| # | Name | Container ID | Image | Kind | State | IPv4 Address | IPv6 Address | ++---+------------+--------------+--------------------------------------------+---------------+---------+----------------+----------------------+ +| 1 | acl-client | ad01263e77f4 | ghcr.io/srl-labs/network-multitool | linux | running | 172.20.20.3/24 | 3fff:172:20:20::3/64 | +| 2 | acl-server | 59623d96308b | public.ecr.aws/nginx/nginx:1.27-alpine3.19 | linux | running | 172.20.20.2/24 | 3fff:172:20:20::2/64 | +| 3 | acl-srl | 9e3048d5e678 | ghcr.io/nokia/srlinux:24.10.1 | nokia_srlinux | running | 172.20.20.4/24 | 3fff:172:20:20::4/64 | ++---+------------+--------------+--------------------------------------------+---------------+---------+----------------+----------------------+ + +New table style: +╭────────────┬────────────────────────────────────────────┬─────────┬───────────────────╮ +│ Name │ Kind/Image │ State │ IPv4/6 Address │ +├────────────┼────────────────────────────────────────────┼─────────┼───────────────────┤ +│ acl-client │ linux │ running │ 172.20.20.4 │ +│ │ ghcr.io/srl-labs/network-multitool │ │ 3fff:172:20:20::4 │ +├────────────┼────────────────────────────────────────────┼─────────┼───────────────────┤ +│ acl-server │ linux │ running │ 172.20.20.2 │ +│ │ public.ecr.aws/nginx/nginx:1.27-alpine3.19 │ │ 3fff:172:20:20::2 │ +├────────────┼────────────────────────────────────────────┼─────────┼───────────────────┤ +│ acl-srl │ nokia_srlinux │ running │ 172.20.20.3 │ +│ │ ghcr.io/nokia/srlinux:24.10.1 │ │ 3fff:172:20:20::3 │ +╰────────────┴────────────────────────────────────────────┴─────────┴───────────────────╯ +``` + +As you can see, the table is now almost half the width of the old one, which means you are less likely to have to shrink the font size to fit the table. Simply lovely. + +Of course, it is not the style that made the difference, you may notice that we removed some columns like Container ID and node index. We also made each node to make use of the vertical space and combined Kind/Image and v4/v6 fields. This allowed us to narrow down the overall table width. + +/// admonition | Font matters +There is a small price to pay for the new table style; it might be sensitive to the font family you use. In the terminal most fonts will work brilliantly, but when you dump the table to some UIs it might not be as pretty. + +For example, when dumping the tables to the beautiful chalk.ist, select the Nova font. +/// + +We are curious to hear your feedback, negative or positive. If you feel that we should make the style configurable, please let us know in [Discord](https://discord.gg/vAyddtaEV9). + +## Transparent management mode for VM-based nodes (beta) + +As predicted, we saw a growth in container-native network OSes over the past couple of years. Slowly, but surely we are moving to a better place, where we can run networking topologies fully in containers. + +But there is still a lot of legacy infrastructure out there, and we needed to support it. That was the prime motivation to integrate [vrnetlab](../manual/vrnetlab.md) to containerlab and wrap these fatty VMs with a thin container layer. + +One particular feature of vrnetlab was that VMs were using the Qemu user-mode network stack, which is a bit of a pain to work with. It boils down to all VMs having the same management interface IP address, which is, of course, not ideal. It is quite critical to network management systems, who went crazy when they saw the same IP address on all VMs calling home. It was time to fix that. + +Thanks to @vista- and the work he started in [hellt/vrnetlab#268](https://github.com/hellt/vrnetlab/pull/268) we started to chip away on what we call a "transparent management mode" for vrnetlab. In this mode, each VM will have a distinct IP address assigned to its management interface that matches the IP address you see in the containerlab table. +With some `tc` magic we were able to achieve a functional management connectivity while keeping the telnet/console accesses intact. + +![pic](https://gitlab.com/rdodin/pics/-/wikis/uploads/dfba443eda655d78307b109beb509f71/image.png){.img-shadow} + +We are looking for beta testers for this feature that is documented in https://github.com/hellt/vrnetlab/issues/286 with support added for + +* Nokia SR OS +* Juniper vJunos and vSRX + +Other vrnetlab-based nodes will be supported as well, if you want to help -- please reach out to us on Discord or vrnetlab issue tracker. + +## Devcontainer and DevPod + +The ultimate goal Containerlab pursues is to make networking labs a commodity. Doesn't matter what OS you are using, what platform you are on, or how skilled you are with containers. + +Over time we approached this lofty goal by making iterative improvements. Starting with making sure it is easy to install containerlab on any Linux distro using the quick setup script. + +Then making it easy to run containerlab on borrowed and free compute - that is how [Codespaces integration](../manual/codespaces.md) story started and was picked up by the community. + +For this :christmas_tree: release we are taking another step further and releasing two new integrations that will help you reduce the mean-time-to-lab even further. + +### Devcontainer + +The devcontainer integration is a way to start a lab on a laptop, desktop, server or VM without installing anything on the host besides Docker. If you rememeber how easy it was to start a lab in Codespaces, you will be happy to get the same UX now with your local compute. + +We are documenting Devcontainer support + +* [for macOS](../macos.md#devcontainer) +* [and Windows](../windows.md#devcontainer) + +And in this video we dive into the details of how to use it. + +-{{youtube(url='https://www.youtube.com/embed/Xue1pLiO0qQ')}}- + +### DevPod + +DevPod takes the devcontainer experience and adds better UX on top of it :wink: + +An open-source project by Loft Labs, DevPod makes it possible to use the same devcontainer specification and create a "workspace" that uses almost any IDE known to men and deploys it on a wide range of providers. + +-{{youtube(url='https://www.youtube.com/embed/ceDrFx2K3jE')}}- + +## macOS documentation + +It took us a while, but we finally refreshed the [macOS documentation](../macos.md). The availability of Nokia SR Linux in a native arm64 architecture was definitely a catalyst for this, but not the only one. + +After @hellt did a video on running containerlabs on arm64 architecture where he featured OrbStack in the role of a virtual machine manager for macOS, we've been getting a lot of feedback from our users saying that they finally got to run labs on their Macs. + +-{{youtube(url='https://www.youtube.com/embed/_BTa-CiTpvI')}}- + +## Windows Subsystem for Linux (WSL) documentation + +We also refreshed the [Windows documentation](../windows.md) that revolves around WSL. It was a bit outdated, and WSL is still improving quite a lot. + +With Win11 it became even better and the tireless team of our contributors - @kaelemc, @FloSch62, and @hyposcaler-bot - spent 900 messages in dicsord while delivering a custom WSL distro to elevate WSL experience to the sky. + +Please meet [WSL-Containerlab](https://github.com/srl-labs/wsl-containerlab). + +## Miscellaneous + +* network aliases option for nodes #2256 by @mzagozen +* added packet corruption capability for the [tools netem](../cmd/tools/netem/set.md) command #2271 +* support for the interactive mode of the drawio integration #2291 by @FloSch62 +* fixes and improvements to the installation scripts #2273 #2273 +* enabled Netconf on SR Linux #2322 diff --git a/docs/windows.md b/docs/windows.md index 62570f0ff..2a0948a8e 100644 --- a/docs/windows.md +++ b/docs/windows.md @@ -15,14 +15,21 @@ There are two primary ways of running containerlab on Windows: We will cover both of these ways in this document, but first let's quickly go over the WSL setup. -/// admonition | Windows and WSL version -The following instructions were tested on Windows 11 and WSL2. On Windows 10 some commands may be different, but the general idea should be the same. -/// - ## Setting up WSL +/// admonition | WSL-Containerlab, WHAT? + type: tip +Hey, before you dive into the WSL details, you might want check out a project that the relentless team of @kaelemc, @FloSch62, and @hyposcaler-bot worked on over 900 Discord messages. + +It is coined as [WSL-Containerlab](https://github.com/srl-labs/WSL-Containerlab) and can be the best Containerlab-on-WSL experience if you can install WSL 2.4.4+ version. Read more at project's [README](https://github.com/srl-labs/WSL-Containerlab#readme). +/// + WSL takes the central role in running containerlabs on Windows. Luckily, setting up WSL is very easy, and there are plenty of resources online from blogs to YT videos explaining the bits and pieces. Here we will provide some CLI-centric[^1] instructions that were executed on Windows 11. +/// admonition | Windows and WSL version +The following instructions were tested on Windows 11 and WSL2. On Windows 10 some commands may be different, but the general idea should be the same. +/// + First things first, open up a terminal and list the running WSL virtual machines and their versions: ```bash diff --git a/mkdocs.yml b/mkdocs.yml index a5b5ba71d..4cbc9b758 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -141,6 +141,7 @@ nav: - 5-stage Clos topology: lab-examples/templated02.md - Generic VM: lab-examples/generic_vm01.md - Release notes: + - "0.60": rn/0.60.md - "0.59": rn/0.59.md - "0.58": rn/0.58.md - "0.57": rn/0.57.md @@ -250,7 +251,7 @@ theme: name: Switch to light mode font: text: Google Sans - code: Fira Mono + code: Nova icon: logo: clab/icon repo: fontawesome/brands/github