github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/kubernetes/go/web/web.go (about)

     1  package web
     2  
     3  import (
     4  	"github.com/micro/go-micro/v2"
     5  	"github.com/micro/go-micro/v2/web"
     6  	"github.com/micro/go-plugins/registry/kubernetes/v2"
     7  	// static selector offloads load balancing to k8s services
     8  	// enable with MICRO_SELECTOR=static or --selector=static
     9  	// requires user to create k8s services
    10  	"github.com/micro/go-plugins/client/selector/static/v2"
    11  )
    12  
    13  // NewService returns a web service for kubernetes
    14  func NewService(opts ...web.Option) web.Service {
    15  	// setup
    16  	k := kubernetes.NewRegistry()
    17  	st := static.NewSelector()
    18  
    19  	// create new service
    20  	service := micro.NewService(
    21  		micro.Registry(k),
    22  		micro.Selector(st),
    23  	)
    24  
    25  	// prepend option
    26  	options := []web.Option{
    27  		web.MicroService(service),
    28  	}
    29  
    30  	options = append(options, opts...)
    31  
    32  	// return new service
    33  	return web.NewService(options...)
    34  }