in plugins/client/grpc/resolvers/kubernetes_clients.go [49:81]
func (*kubernetesServerResolver) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {
// convert data
kubernetesConfig := &KubernetesConfig{}
if err := json.Unmarshal([]byte(strings.TrimLeft(target.URL.Path, "/")), kubernetesConfig); err != nil {
return nil, fmt.Errorf("could not analyze the address: %v", err)
}
// validate http config
if kubernetesConfig.APIServer != "" {
httpConfig, err := kubernetesConfig.HTTPClientConfig.convertHTTPConfig()
if err != nil {
return nil, err
}
if err = httpConfig.Validate(); err != nil {
return nil, fmt.Errorf("http config validate error: %v", err)
}
}
// init cache
ctx, cancel := context.WithCancel(context.Background())
cache, err := NewKindCache(ctx, kubernetesConfig, cc)
if err != nil {
cancel()
return nil, err
}
// build resolver
r := &kubernetesResolver{
cache: cache,
cancel: cancel,
}
return r, nil
}