Support multiple k8s api servers specification and load balance among api servers (#820)
* Support multiple k8s api servers specification and load balance among api servers This fix adds supports for multiple k8s api servers specification, load balance among api servers. When two or more api servers are specified in kubernetes block (endpoint ...), a proxy is created locally (with randomly generately port). The coredns will points to the generated proxy so that load balancing could be achieved. Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * Setup initial healthcheck at the beginning Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * Update README.md for kubernetes middleware and remove whitespaces. Signed-off-by: Yong Tang <yong.tang.github@outlook.com> * Use middleware/pkg/healthcheck in middleware/kubernetes for api proxy Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
parent
acfa6501e0
commit
26d8680a11
6 changed files with 171 additions and 5 deletions
|
@ -39,10 +39,16 @@ func setup(c *caddy.Controller) error {
|
|||
// Register KubeCache start and stop functions with Caddy
|
||||
c.OnStartup(func() error {
|
||||
go kubernetes.APIConn.Run()
|
||||
if kubernetes.APIProxy != nil {
|
||||
go kubernetes.APIProxy.Run()
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
c.OnShutdown(func() error {
|
||||
if kubernetes.APIProxy != nil {
|
||||
kubernetes.APIProxy.Stop()
|
||||
}
|
||||
return kubernetes.APIConn.Stop()
|
||||
})
|
||||
|
||||
|
@ -140,7 +146,9 @@ func kubernetesParse(c *caddy.Controller) (*Kubernetes, error) {
|
|||
case "endpoint":
|
||||
args := c.RemainingArgs()
|
||||
if len(args) > 0 {
|
||||
k8s.APIEndpoint = args[0]
|
||||
for _, endpoint := range strings.Split(args[0], ",") {
|
||||
k8s.APIServerList = append(k8s.APIServerList, strings.TrimSpace(endpoint))
|
||||
}
|
||||
continue
|
||||
}
|
||||
return nil, c.ArgErr()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue