学习网址:
https://github.com/cf-unik/unik/blob/master/docs/architecture.md
一、UniK设计
UniK守护进程由3个主要组件组成。
- 该API服务器( API server)
- 编译器(Compilers)
- 提供商(Providers)
该API服务器将处理来自CLI /任何HTTP客户端发出的请求,然后确定适当的provider/或编译器来服务该请求。
当API服务器收到构建(build)请求(POST /images/:image_name/create
)时,它会调用指定的编译器(compiler)来构建原始映像,然后将原始映像传递给指定的提供者(provider),该提供者使用Stage()
方法处理原始映像,将其转换为基础架构特定的可引导镜像(例如AWS上的Amazon AMI)
镜像上所有后续操作的提供程序由构建镜像的提供程序的引用确定。
有关添加提供商的更多信息,请参阅提供商
有关添加编译器的更多信息,请参阅编译器
1、provider
提供商处理UniK主要对象类型的长期管理:
1)Images
2)Instances
3)Volumes
提供者通常存储某种类型的状态,其中可能包括现有状态的JSON表示,以及磁盘映像文件。UniK的默认提供者现在将它们的状态存储在~/.unik/。
提供者执行API调用,与系统管理程序 / 云提供程序 / 基础设施进行对话,并在其中运行映像 并运行实例。
要添加一个实现提供商的守护进程,在
daemon.go中
看 Unik API Server构造函数func NewUnikDaemon(config config.DaemonConfig) (*UnikDaemon, error)
详细信息见:https://github.com/cf-unik/unik/blob/master/docs/providers/README.md
2、compiler
编译器的工作是将目录源文件编译为原始引导磁盘映像。编译器的行为意在独立于提供者。 编译器可以在RawImage返回类型中传递提供者所需的其他信息,例如与该编译器创建的unikernels所使用的存储驱动程序或网络适配器。有关RawImage的更多信息,请参阅 types 包。
提供商必须通过GetConfig()方法指定与它们兼容的编译器。 如果您已将编译器添加到UniK,则应将编译器的名称添加到编译器要用于的每个提供者的GetConfig()方法中。
要添加对UniK的编译器支持,必须将编译器添加到Unik API Server构造函数中的_compilers映射函数func NewUnikDaemon(config config.DaemonConfig)(* UnikDaemon,error)在daemon.go中。