fix: allow allow port-ranges on the loadbalancer

pull/330/head
iwilltry42 4 years ago
parent 7b07b8b6dc
commit d3c5cfb766
No known key found for this signature in database
GPG Key ID: 7BA57AD1CFF16110
  1. 21
      pkg/cluster/cluster.go
  2. 3
      proxy/templates/nginx.tmpl

@ -285,7 +285,25 @@ func ClusterCreate(ctx context.Context, runtime k3drt.Runtime, cluster *k3d.Clus
ports := k3d.DefaultAPIPort ports := k3d.DefaultAPIPort
for _, portString := range cluster.ServerLoadBalancer.Ports { for _, portString := range cluster.ServerLoadBalancer.Ports {
split := strings.Split(portString, ":") split := strings.Split(portString, ":")
ports += "," + split[len(split)-1] port := split[len(split)-1]
if strings.Contains(port, "-") {
split := strings.Split(port, "-")
start, err := strconv.Atoi(split[0])
if err != nil {
log.Errorln("Failed to parse port mapping for loadbalancer '%s'", port)
return err
}
end, err := strconv.Atoi(split[1])
if err != nil {
log.Errorln("Failed to parse port mapping for loadbalancer '%s'", port)
return err
}
for i := start; i <= end; i++ {
ports += "," + strconv.Itoa(i)
}
} else {
ports += "," + port
}
} }
// Create LB as a modified node with loadbalancerRole // Create LB as a modified node with loadbalancerRole
@ -296,6 +314,7 @@ func ClusterCreate(ctx context.Context, runtime k3drt.Runtime, cluster *k3d.Clus
Env: []string{ Env: []string{
fmt.Sprintf("SERVERS=%s", servers), fmt.Sprintf("SERVERS=%s", servers),
fmt.Sprintf("PORTS=%s", ports), fmt.Sprintf("PORTS=%s", ports),
fmt.Sprintf("WORKER_PROCESSES=%d", len(strings.Split(ports, ","))),
}, },
Role: k3d.LoadBalancerRole, Role: k3d.LoadBalancerRole,
Labels: k3d.DefaultObjectLabels, // TODO: createLoadBalancer: add more expressive labels Labels: k3d.DefaultObjectLabels, // TODO: createLoadBalancer: add more expressive labels

@ -1,13 +1,12 @@
{{- $servers := split (getenv "SERVERS") "," -}} {{- $servers := split (getenv "SERVERS") "," -}}
{{- $ports := split (getenv "PORTS") "," -}} {{- $ports := split (getenv "PORTS") "," -}}
error_log stderr notice; error_log stderr notice;
worker_processes auto; worker_processes auto;
events { events {
multi_accept on; multi_accept on;
use epoll; use epoll;
worker_connections 1024; worker_connections {{ add 1024 (len $ports) }};
} }
stream { stream {

Loading…
Cancel
Save