hbugs001 发表于 2025-4-9 23:11:39

Containerlab 简介

<h1>1 Containerlab</h1>
<h2>1.1</h2>
<p><img src="data/attachment/forum/202504/09/231030ybyb3kmq3opkzkpv.png" alt="" /></p>
<p>随着容器化网络操作系统数量的不断增加,用户对在自定义、灵活的实验室拓扑中轻松运行这些系统的需求也日益增长。</p>
<p>遗憾的是,像 <code>docker-compose</code>这样的容器编排工具并不太适合这个目的,因为它们不便于用户在定义拓扑的容器之间轻松创建连接。</p>
<p>Containerlab提供了一个命令行界面(CLI),用于编排和管理基于容器的网络实验室。它可以启动容器,在容器之间构建虚拟连接以创建用户选择的实验室拓扑,并管理实验室的生命周期。</p>
<p><img src="data/attachment/forum/202504/09/231030gn4qm77m41f09228.png" alt="" /></p>
<p><strong>Containerlab专注于通常用于测试网络功能和设计的容器化网络操作系统,例如:</strong></p>
<ul>
<li>诺基亚SR Linux</li>
<li>Arista cEOS</li>
<li>思科XRd</li>
<li>SONiC</li>
<li>瞻博网络cRPD</li>
<li>Cumulus VX</li>
<li>是德科技IXIA-C</li>
<li>RARE/freeRtr</li>
<li>Ostinato</li>
</ul>
<p>除了原生的容器化网络操作系统,Containerlab还可以通过集成 <code>vrnetlab</code>或 <code>boxen</code>来启动基于传统虚拟机的路由器:</p>
<ul>
<li>诺基亚虚拟SR OS(vSim/VSR)</li>
<li>瞻博网络vMX</li>
<li>瞻博网络vQFX</li>
<li>瞻博网络vSRX</li>
<li>瞻博网络vJunos-router</li>
<li>瞻博网络vJunos-switch</li>
<li>瞻博网络vJunos Evolved</li>
<li>思科IOS XRv9k</li>
<li>思科Catalyst 9000v</li>
<li>思科Nexus 9000v</li>
<li>思科c8000v</li>
<li>思科CSR 1000v</li>
<li>思科FTDv</li>
<li>戴尔FTOS10v</li>
<li>Arista vEOS</li>
<li>帕洛阿尔托PAN</li>
<li>IPInfusion OcNOS</li>
<li>Check Point Cloudguard</li>
<li>飞塔Fortigate</li>
<li>阿鲁巴AOS-CX</li>
<li>华为VRP</li>
<li>OpenBSD</li>
<li>FreeBSD</li>
<li>SONiC</li>
</ul>
<p>当然,Containerlab完全能够连接任意的Linux容器,这些容器可以承载网络应用程序、虚拟功能,或者仅仅作为测试客户端。通过这些功能,Containerlab提供了一个单一的基础设施即代码(IaC)接口,来管理涵盖所有所需节点类型的实验室:</p>
<p><img src="data/attachment/forum/202504/09/231029ytuyytlvgyteiktv.png" alt="" /></p>
<p>这个短视频简要演示了Containerlab的功能并解释了其用途:<br />
<a href="https://youtu.be/xdi7rwdJgkg">https://youtu.be/xdi7rwdJgkg</a></p>
<h2>1.2 功能</h2>
<ol>
<li><strong>实验室即代码(IaC)方法</strong>:通过拓扑定义 <code>clab</code>文件以声明式的方式定义实验室。</li>
<li><strong>以网络操作系统为中心</strong>:专注于容器化网络操作系统。各种网络操作系统容器复杂的启动要求通过“种类(kinds)”进行了抽象,使用户能够专注于用例,而不是被基础设施障碍所困扰。</li>
<li><strong>对基于VM的节点友好</strong>:通过集成 <code>vrnetlab</code>,可以实现两全其美——以相同的IaC方法和工作流程运行虚拟化和容器化节点。</li>
<li><strong>多供应商和开源支持</strong>:尽管Containerlab由诺基亚工程师发起,但它并不偏袒任何一方,支持来自其他供应商和开源项目的网络操作系统。</li>
<li><strong>实验室编排</strong>:启动容器并将它们连接起来已经很不错了,但Containerlab还提供了更多功能,如管理实验室的生命周期:部署、销毁、保存、检查、图形操作等。</li>
<li><strong>规模化实验室生成器</strong>:借助Containerlab的 <code>generate</code>功能,可以定义/启动任意规模的基于CLOS的拓扑。只需说明需要多少层以及每层的规模,其余的将在瞬间完成。</li>
<li><strong>简单便捷</strong>:从轻松的安装和升级功能,到幕后的链路连接机制,Containerlab竭尽全力让用户享受使用该工具的过程。</li>
<li><strong>快速</strong>:在任何安装了Docker的Linux系统上,都能以极快的速度创建基于容器的实验室。</li>
<li><strong>自动TLS证书配置</strong>:需要TLS证书的节点在启动时将自动获取证书。</li>
<li><strong>文档优先</strong>:我们提供完整、简洁、清晰的文档,不让用户自行猜测。</li>
<li><strong>实验室目录</strong>:“最受欢迎”的实验室拓扑已记录在案,并随Containerlab安装一起提供。基于这个精选列表,你可以开始构建满足自己需求的实验室。</li>
</ol>
<h2>1.3 用例</h2>
<ol>
<li><strong>实验室和演示</strong>:Containerlab旨在成为一个用于配置由容器构建的网络实验室的工具。它免费、开源且无处不在。除了Docker之外,无需其他软件!与任何实验室环境一样,它允许用户验证功能、拓扑,进行互操作性测试、数据路径测试等。它也是你下一次演示的完美助手。快速部署实验室,所有配置都以代码形式存储,完成后销毁即可。</li>
<li><strong>测试和持续集成(CI)</strong>:由于Containerlab采用单二进制文件打包和基于代码的实验室定义文件,为CI搭建测试平台从未如此简单。Gitlab CI、Github Actions以及几乎任何CI系统都可以通过一个简单的命令启动Containerlab拓扑。</li>
<li><strong>遥测验证</strong>:将现代遥测堆栈与Containerlab实验室相结合,非常适合遥测用例的验证。启动一个带有容器化网络功能且配置了遥测的实验室,然后运行全面的遥测用例。</li>
</ol>
页: [1]
查看完整版本: Containerlab 简介