Skip to content

Commit 0947f8d

Browse files
HAProxy restart finish.
Signed-off-by: Jintao Zhang <zhangjintao9020@gmail.com>
1 parent cfec24c commit 0947f8d

File tree

3 files changed

+39
-15
lines changed

3 files changed

+39
-15
lines changed

pkg/cluster/internal/create/actions/loadbalancer/haproxy.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,22 @@ func (a *Action) Execute(ctx *actions.ActionContext) error {
6565
return err
6666
}
6767

68+
// starts a docker container with HA proxy load balancer
69+
if err := loadBalancerNode.Command(
70+
"/bin/sh", "-c",
71+
fmt.Sprintf(
72+
"docker run -d -v /kind/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro --network host --restart always --name haproxy %s",
73+
haproxy.Image,
74+
),
75+
).Run(); err != nil {
76+
return errors.Wrap(err, "failed to start haproxy")
77+
}
78+
6879
ctx.Status.End(true)
6980
return nil
7081
}
7182

72-
// ConfigHAProxy is common method for HAProxy
83+
// ConfigHAProxy is common method for write HAProxy's config file
7384
func ConfigHAProxy(loadBalancerNode *nodes.Node, allNodes []nodes.Node) error {
7485
// collect info about the existing controlplane nodes
7586
var backendServers = map[string]string{}
@@ -103,16 +114,5 @@ func ConfigHAProxy(loadBalancerNode *nodes.Node, allNodes []nodes.Node) error {
103114
return errors.Wrap(err, "failed to copy haproxy config to node")
104115
}
105116

106-
// starts a docker container with HA proxy load balancer
107-
if err := loadBalancerNode.Command(
108-
"/bin/sh", "-c",
109-
fmt.Sprintf(
110-
"docker run -d -v /kind/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro --network host --restart always --name haproxy %s",
111-
haproxy.Image,
112-
),
113-
).Run(); err != nil {
114-
return errors.Wrap(err, "failed to start haproxy")
115-
}
116-
117117
return nil
118118
}

pkg/cluster/internal/restart/restart.go

+26-2
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,39 @@ import (
2020
"github.com/pkg/errors"
2121

2222
"sigs.k8s.io/kind/pkg/cluster/internal/context"
23+
"sigs.k8s.io/kind/pkg/cluster/internal/create/actions/loadbalancer"
2324
"sigs.k8s.io/kind/pkg/cluster/nodes"
2425
)
2526

2627
// Cluster restarts the cluster identified by ctx
2728
func Cluster(c *context.Context) error {
28-
n, err := c.ListNodes()
29+
allNodes, err := c.ListNodes()
2930
if err != nil {
3031
return errors.Wrap(err, "error listing nodes")
3132
}
3233

33-
return nodes.Restart(n)
34+
// restart all of cluster's nodes.
35+
err = nodes.Restart(allNodes)
36+
if err != nil {
37+
return errors.Wrap(err, "error restarting nodes")
38+
}
39+
40+
// after we execute docker restart, the IP inside the container may be changed.
41+
// we should change config.
42+
loadBalancerNode, err := nodes.ExternalLoadBalancerNode(allNodes)
43+
if err != nil {
44+
return err
45+
}
46+
47+
// if there is no external load balancer
48+
if loadBalancerNode == nil {
49+
return nil
50+
}
51+
52+
err = loadbalancer.ConfigHAProxy(loadBalancerNode, allNodes)
53+
if err != nil {
54+
return err
55+
}
56+
57+
return nil
3458
}

pkg/cluster/nodes/nodes.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func Restart(nodes []Node) error {
173173
return err
174174
}
175175

176-
if !node.WaitForDocker(time.Now().Add(time.Second * 30)) {
176+
if !node.WaitForDocker(time.Now().Add(time.Second * 60)) {
177177
return errors.Errorf("timed out waiting for docker to be ready on node %s", node.Name())
178178
}
179179
}

0 commit comments

Comments
 (0)