Skip to content

Commit

Permalink
Release notes 0.60.0 (#2330)
Browse files Browse the repository at this point in the history
* init rn 0.60

* added more rns

* added WSL-Containerlab note

* added consistency=cached for the devcontainers
  • Loading branch information
hellt authored Dec 5, 2024
1 parent ca7e450 commit 53c2ce4
Show file tree
Hide file tree
Showing 8 changed files with 160 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .devcontainer/docker-in-docker/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@
]
}
},
"workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
"workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind,consistency=cached",
"workspaceFolder": "/clab"
}
2 changes: 1 addition & 1 deletion .devcontainer/docker-in-docker_slim/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@
]
}
},
"workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind",
"workspaceMount": "source=${localWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind,consistency=cached",
"workspaceFolder": "/clab"
}
2 changes: 1 addition & 1 deletion .devcontainer/docker-outside-of-docker/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,5 @@
}
},
"workspaceFolder": "${localWorkspaceFolder}",
"workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind"
"workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind,consistency=cached"
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,5 @@
}
},
"workspaceFolder": "${localWorkspaceFolder}",
"workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind"
"workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind,consistency=cached"
}
15 changes: 15 additions & 0 deletions docs/macos.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
128 changes: 128 additions & 0 deletions docs/rn/0.60.md
Original file line number Diff line number Diff line change
@@ -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
15 changes: 11 additions & 4 deletions docs/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 53c2ce4

Please sign in to comment.