in internal/components/setup/kind.go [517:561]
func exposeKindService(exports []config.KindExposePort, timeout time.Duration, cluster *util.K8sClusterInfo) error {
restConf, err := cluster.ToRESTConfig()
if err != nil {
return err
}
restConf.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
tripperFor, upgrader, err := spdy.RoundTripperFor(restConf)
if err != nil {
return err
}
// rest client
if restConf.GroupVersion == nil {
restConf.GroupVersion = &schema.GroupVersion{Version: "v1"}
}
restConf.APIPath = "/api"
client, err := rest.RESTClientFor(restConf)
if err != nil {
return err
}
// timeout
var waitTimeout time.Duration
if timeout <= 0 {
waitTimeout = constant.DefaultWaitTimeout
} else {
waitTimeout = timeout
}
// stop port-forward channel
forwardContext := &kindPortForwardContext{
stopChannel: make(chan struct{}, 1),
resourceFinishedChannel: make(chan struct{}, len(exports)),
resourceCount: len(exports),
}
for _, p := range exports {
if err := exposePerKindService(p, waitTimeout, cluster, client, tripperFor, upgrader, forwardContext); err != nil {
return err
}
}
// bind context
portForwardContext = forwardContext
return nil
}