上QQ阅读APP看书,第一时间看更新
4.1.7 返回Release状态信息
安装请求发送完毕后,我们应该记得helm install后会返回当前的Relase名称和Release包含的所有Kubernetes资源的当前状态。比如Deployment的部署状态,Pod的各种状态,等等。先回到func(i*installCmd)run(),来看一下发送install请求后,最后几步的行动。
// 获取返回的Release信息 rel := res.GetRelease() if rel == nil { return nil } if outputFormat(i.output) == outputTable { i.printRelease(rel) } // 像install一样,向Tiller发送获取Release状态信息的请求 status, err := i.client.ReleaseStatus(rel.Name) if err != nil { return prettyError(err) } return write(i.out, &statusWriter{status}, outputFormat(i.output)
·首先获取Relase信息,在上一步发送install请求后,Tiller的response信息内就已经含有了这些信息。
·i.client.ReleaseStatus和install一样,也是向Tiller发送请求,这个API的URL/hapi.services.Tiller.ReleaseService/GetReleaseStatus在后文的服务端实现中进行介绍。
以下对客户端流程进行总结(见图4-2)。
·提前使用kubectl port-forward功能打通宿主机与远程Tiller Pod的通信。
·checkArgsLength检查用户输入参数的合法性。
·对于远程地址,locateChartPath下载Chart到本地指定目录;对于本地地址,则直接加载。
·installCmd.run将用户命令行输入参数覆盖values.yaml信息,下载依赖的Chart,将Chart信息加载到内存中变成结构体信息。
·向Tiller发送install命令,将含有Chart所有信息的结构体发送出去。
·打印Tiller返回的Release信息。
·向Tiller发送获取Relase Status信息并且打印出来。
图4-2 客户端流程图