项目结构解析

顶层目录

├── cni
│   ├── cmd
│   ├── pkg
├── istioctl
│   ├── cmd
│   └── pkg
├── operator
│   ├── cmd
│   ├── pkg
├── pilot
│   ├── cmd
│   ├── pkg
├── pkg
  • cni, istioctl, operator, pilot 目录分别包含同名相应模块的代码。下面的 cmd 是模块下相应二进制的编译入口,cmd 下面的 pkgcmd 中的代码需要调用的依赖逻辑。
  • 多个模块共同依赖的一些逻辑会放到外层的 pkg 目录下。

梳理模块与二进制

cni 模块主要包含 istio-cniinstall-cni 两个二进制,负责 cni 插件相关逻辑:

cni
├── cmd
│   ├── install-cni
│   ├── istio-cni

istioctloperator 模块都主要是一个二进制,分别用于 cli 工具和 istio 安装。

pilot 是最核心的模块,有 pilot-agentpilot-discovery 两个二进制:

pilot
├── cmd
│   ├── pilot-agent
│   └── pilot-discovery
  • pilot-discovery 就是 "istiod",即 istio 控制面。
  • pilot-agent 是连接 istiod (控制面) 和 envoy (数据面) 之间的纽带,主要负责拉起和管理数据面进程。