上QQ阅读APP看书,第一时间看更新
4.2 Helm Install Server
前面介绍了Client端的实现,下面介绍Server端也就是Tiller端的具体实现。客户端通过grpc调用了服务端的InstallRelease函数,下面概览该函数。
func (s *ReleaseServer) InstallRelease(c ctx.Context,req *services.Install ReleaseRequest) (*services.InstallReleaseResponse,error) { s.Log("preparing install for %s",req.Name) rel, err:=s.prepareRelease(req) if err!=nil { s.Log("failed install prepare step:%s",err) res:=&services.InstallReleaseResponse{Release:rel} // 如果是测试场景,这里就仅返回渲染失败的错误信息 if req.DryRun && strings.HasPrefix(err.Error(), "YAML parse error") { err = fmt.Errorf("%s\n%s", err, rel.Manifest) } return res, err } s.Log("performing install for %s", req.Name) res, err := s.performRelease(rel, req) if err != nil { s.Log("failed install perform step: %s", err) } return res, err }
·针对客户端传递过来的信息做准备,主要检查是否重名,然后对传递过来的各个参数和values.yaml进行渲染,然后拼接出Release对象。
·performRelease是真正进行Release安装的函数,下面进行详细介绍。