上QQ阅读APP看书,第一时间看更新
4.1 helm install
Helm分为客户端和服务端(Tiller),下面先从客户端讲起。客户端是使用Golang编写的github.com/spf13/cobra命令行工具构建的架构。cobra是一个非常流行的命令行类库,很多使用Golang编写的命令行工具都是使用这个类库来编写的。
install的客户端命令初始代码在cmd/helm/install.go中。
RunE: func(cmd *cobra.Command, args []string) error { if err := checkArgsLength(len(args), "Chart name"); err != nil { return err } debug("Original Chart version: %q", inst.version) if inst.version == "" && inst.devel { debug("setting version to >0.0.0-0") inst.version = ">0.0.0-0" } cp, err := locateChartPath(inst.repoURL, inst.username, inst.password, args[0], inst.version, inst.verify, inst.keyring, inst.certFile, inst.keyFile, inst.caFile) if err != nil { return err } inst.ChartPath = cp inst.client = ensureHelmClient(inst.client) inst.wait = inst.wait || inst.atomic return inst.run() },
在RunE函数中,运行helm install命令会发生的动作如下所示。
·checkArgsLength检查传递参数的有效性,以及是否漏传参数。
·locateChartPath寻找Chart位置,如果是本地目录,则返回并寻找完全路径;如果是URL,则下载到指定路径后返回该路径名称。
·ensureHelmClient初始化Helm Client,用来与Tiller通信。
·inst.run()真正的业务逻辑开始了,分别检查Chart依赖等信息,然后给Tiller发送解压后的模板信息。
下面就其中的几个函数详细看一下具体操作。