github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edgemesh/pkg/module.go (about) 1 package pkg 2 3 import ( 4 "github.com/kubeedge/beehive/pkg/core" 5 beehiveContext "github.com/kubeedge/beehive/pkg/core/context" 6 "k8s.io/klog" 7 8 "github.com/kubeedge/kubeedge/edge/pkg/common/modules" 9 meshconfig "github.com/kubeedge/kubeedge/edgemesh/pkg/config" 10 "github.com/kubeedge/kubeedge/edgemesh/pkg/constant" 11 "github.com/kubeedge/kubeedge/edgemesh/pkg/dns" 12 "github.com/kubeedge/kubeedge/edgemesh/pkg/listener" 13 "github.com/kubeedge/kubeedge/edgemesh/pkg/plugin" 14 "github.com/kubeedge/kubeedge/edgemesh/pkg/proxy" 15 "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha1" 16 ) 17 18 //EdgeMesh defines EdgeMesh object structure 19 type EdgeMesh struct { 20 enable bool 21 } 22 23 // Register register edgemesh 24 func Register(m *v1alpha1.EdgeMesh) { 25 meshconfig.InitConfigure(m) 26 core.Register(&EdgeMesh{enable: m.Enable}) 27 } 28 29 // Name returns the name of EdgeMesh module 30 func (em *EdgeMesh) Name() string { 31 return constant.ModuleNameEdgeMesh 32 } 33 34 // Group returns EdgeMesh group 35 func (em *EdgeMesh) Group() string { 36 return modules.MeshGroup 37 } 38 39 // Enable indicates whether this module is enabled 40 func (em *EdgeMesh) Enable() bool { 41 return em.enable 42 } 43 44 //Start sets context and starts the controller 45 func (em *EdgeMesh) Start() { 46 // install go-chassis plugins 47 plugin.Install() 48 // init tcp listener 49 listener.Init() 50 // init iptables 51 proxy.Init() 52 // start proxy listener 53 go listener.Start() 54 // start dns server 55 go dns.Start() 56 // we need watch message to update the cache of instances 57 for { 58 select { 59 case <-beehiveContext.Done(): 60 klog.Warning("EdgeMesh Stop") 61 proxy.Clean() 62 return 63 default: 64 } 65 msg, err := beehiveContext.Receive(constant.ModuleNameEdgeMesh) 66 if err != nil { 67 klog.Warningf("[EdgeMesh] receive msg error %v", err) 68 continue 69 } 70 klog.V(4).Infof("[EdgeMesh] get message: %v", msg) 71 listener.MsgProcess(msg) 72 } 73 }