Ligato云原生基础设施(CN-Infra)快速入门指南
1. 目录结构及介绍
Ligato CN-Infra是一个基于Golang构建的框架,专为云原生网络功能(CNFs)设计控制平面代理。它的架构鼓励模块化,通过一系列插件来提供丰富功能。以下是典型项目结构概览:
├── agent # 主程序入口及相关配置管理
│ └── main.go # 应用的主启动文件
├── contrib # 用户贡献或扩展组件
├── plugins # 核心插件及其子目录
│ ├── datastore # 数据存储插件,如Etcd、Cassandra等
│ │ └── etcd # 示例:Etcd数据存储插件
│ ├── event # 事件处理机制相关
│ ├── health # 健康检查插件
│ ├── logger # 日志记录插件
│ ├── messaging # 消息传递插件,支持Kafka等
│ └── resync # 同步逻辑插件
├── protobuf # Protobuf定义和服务接口
├── version # 版本信息管理
├── cmd # 可执行命令入口,用于编译成单独的服务
│ └── my-agent # 示例应用的命令行工具
└── docs # 文档与教程
└── getting-started.md # 入门教程
每个模块都设计得高度解耦,便于开发者理解和定制。
2. 项目启动文件介绍
启动文件主要位于agent/main.go
中。它负责实例化CN-Infra代理,并加载必要的插件。一个基础的应用启动示例通常包括以下步骤:
package main
import (
"log"
"github.com/ligato/cn-infra/agent"
"github.com/ligato/cn-infra/plugins/datastore/etcd"
"github.com/ligato/cn-infra/plugins/resync"
)
func main() {
// 创建带有指定插件的新代理
a := agent.NewAgent(
agent.AllPlugins(
&etcd.DefaultPlugin,
&resync.DefaultPlugin,
),
)
// 运行代理
if err := a.Run(); err != nil {
log.Fatal(err)
}
}
这段代码初始化了一个包含Etcd作为数据存储和Resync插件的CN-Infra代理,是开发新应用的基本起点。
3. 项目的配置文件介绍
CN-Infra本身并不强制一个固定的配置文件格式,配置依赖于具体使用的插件。然而,大多数插件允许通过环境变量、命令行参数或外部配置文件进行配置。例如,对于Etcd数据存储插件,可能需要设置连接地址、端口和认证信息。配置细节通常在各插件的文档中有说明。
假设有一个简单的配置文件config.yaml
,用于演示配置概念:
datastore-etcd:
endpoints: ["localhost:2379"]
prefix: "/cn-infra"
resync:
interval: "5m"
虽然CN-Infra不直接解析YAML配置,但在应用程序内部,可以通过第三方库读取此类配置并传递给相应的插件进行初始化。
请注意,实际配置方式和路径需依据所选插件的文档指导进行设置,且上述配置示例仅为简化说明,真实场景下应参照具体插件的配置要求。