Go语言服务网格ingress:外部流量接入
Go语言服务网格ingress:外部流量接入
1. Ingress控制器
package ingress import ( "net/http" ) type IngressController struct { rules []*IngressRule backends map[string]http.Handler } type IngressRule struct { Host string Path string Backend string } func NewIngressController() *IngressController { return &IngressController{ rules: make([]*IngressRule, 0), backends: make(map[string]http.Handler), } } func (c *IngressController) AddRule(rule *IngressRule) { c.rules = append(c.rules, rule) } func (c *IngressController) RegisterBackend(name string, handler http.Handler) { c.backends[name] = handler } func (c *IngressController) ServeHTTP(w http.ResponseWriter, r *http.Request) { for _, rule := range c.rules { if rule.Host == r.Host || rule.Host == "*" { if handler, ok := c.backends[rule.Backend]; ok { handler.ServeHTTP(w, r) return } } } http.NotFound(w, r) }2. 总结
Ingress控制器是服务网格外部流量入口,Go语言可以实现标准的Ingress控制器规范。
