diff --git a/controllers/instance/statefulset.go b/controllers/instance/statefulset.go index 5cb3c8d..b5f259c 100644 --- a/controllers/instance/statefulset.go +++ b/controllers/instance/statefulset.go @@ -39,8 +39,8 @@ then sleep 5 - export BIND_ADDRESS="{{.IP}}" - echo "BIND_ADDRESS=${BIND_ADDRESS}" + echo -n "BIND_ADDRESS={{.IP}}" > {{.File}} + cat {{.File}} exit 0 fi @@ -56,6 +56,7 @@ const ( type initScriptData struct { Host string IP string + File string } func (r *Reconciler) reconcileStatefulSet(ctx context.Context, instance *proxyv1alpha1.Instance, checksum string) error { @@ -218,6 +219,8 @@ func (r *Reconciler) reconcileStatefulSet(ctx context.Context, instance *proxyv1 } if len(instance.Spec.Network.HostIPs) > 0 { + file := "/var/lib/haproxy/run/env" + var hosts []string for host := range instance.Spec.Network.HostIPs { hosts = append(hosts, host) @@ -229,6 +232,7 @@ func (r *Reconciler) reconcileStatefulSet(ctx context.Context, instance *proxyv1 data := initScriptData{ Host: host, IP: instance.Spec.Network.HostIPs[host], + File: file, } tmpl, err := template.New("initScript").Parse(initContainerScript) @@ -258,6 +262,11 @@ func (r *Reconciler) reconcileStatefulSet(ctx context.Context, instance *proxyv1 }, }, }) + + statefulset.Spec.Template.Spec.Containers[0].Env = append(statefulset.Spec.Template.Spec.Containers[0].Env, corev1.EnvVar{ + Name: "ENV_FILE", + Value: file, + }) } return nil diff --git a/controllers/instance/statefulset_test.go b/controllers/instance/statefulset_test.go index 12c607c..bd92da5 100644 --- a/controllers/instance/statefulset_test.go +++ b/controllers/instance/statefulset_test.go @@ -86,7 +86,7 @@ var _ = Describe("Reconcile", Label("controller"), func() { "then\n i=0\n while [ $(ip a show to '10.158.182.27' | wc -l) -eq 0 ]\n do\n ((i=i+1))\n if [ \"$i\" -gt \"20\" ]\n" + " then echo 'timeout waiting for IP 10.158.182.27, aborting'\n exit 1\n fi\n echo 'waiting for IP 10.158.182.27 to be assigned...'\n" + " sleep 5\n done\n\n echo 'IP 10.158.182.27 assignment verified, waiting 5 seconds before continuing...'\n\n" + - " sleep 5\n\n export BIND_ADDRESS=\"10.158.182.27\"\n echo \"BIND_ADDRESS=${BIND_ADDRESS}\"\n exit 0\nfi\n\nexit 1\n")) + " sleep 5\n\n echo -n \"BIND_ADDRESS=10.158.182.27\" > /var/lib/haproxy/run/env\n cat /var/lib/haproxy/run/env\n exit 0\nfi\n\nexit 1\n")) }) }) })