Skip to content

Commit dd5d210

Browse files
Add custom ha proxy config to CAPD API
1 parent da10c33 commit dd5d210

File tree

7 files changed

+110
-13
lines changed

7 files changed

+110
-13
lines changed

test/infrastructure/docker/api/v1alpha3/conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error {
4545
dst.Spec.LoadBalancer.ImageTag = restored.Spec.LoadBalancer.ImageTag
4646
}
4747

48+
if restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil {
49+
dst.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef
50+
}
51+
4852
return nil
4953
}
5054

test/infrastructure/docker/api/v1alpha4/conversion.go

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,35 @@ import (
2727
func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error {
2828
dst := dstRaw.(*infrav1.DockerCluster)
2929

30-
return Convert_v1alpha4_DockerCluster_To_v1beta1_DockerCluster(src, dst, nil)
30+
if err := Convert_v1alpha4_DockerCluster_To_v1beta1_DockerCluster(src, dst, nil); err != nil {
31+
return err
32+
}
33+
34+
// Manually restore data.
35+
restored := &infrav1.DockerCluster{}
36+
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
37+
return err
38+
}
39+
40+
if restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil {
41+
dst.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef
42+
}
43+
44+
return nil
3145
}
3246

3347
func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error {
3448
src := srcRaw.(*infrav1.DockerCluster)
3549

36-
return Convert_v1beta1_DockerCluster_To_v1alpha4_DockerCluster(src, dst, nil)
50+
if err := Convert_v1beta1_DockerCluster_To_v1alpha4_DockerCluster(src, dst, nil); err != nil {
51+
return err
52+
}
53+
54+
if err := utilconversion.MarshalData(src, dst); err != nil {
55+
return err
56+
}
57+
58+
return nil
3759
}
3860

3961
func (src *DockerClusterList) ConvertTo(dstRaw conversion.Hub) error {
@@ -63,6 +85,10 @@ func (src *DockerClusterTemplate) ConvertTo(dstRaw conversion.Hub) error {
6385

6486
dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta
6587

88+
if restored.Spec.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil {
89+
dst.Spec.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Spec.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef
90+
}
91+
6692
return nil
6793
}
6894

@@ -171,3 +197,7 @@ func Convert_v1beta1_DockerMachineTemplateResource_To_v1alpha4_DockerMachineTemp
171197
// NOTE: custom conversion func is required because spec.template.metadata has been added in v1beta1.
172198
return autoConvert_v1beta1_DockerMachineTemplateResource_To_v1alpha4_DockerMachineTemplateResource(in, out, s)
173199
}
200+
201+
func Convert_v1beta1_DockerLoadBalancer_To_v1alpha4_DockerLoadBalancer(in *infrav1.DockerLoadBalancer, out *DockerLoadBalancer, s apiconversion.Scope) error {
202+
return autoConvert_v1beta1_DockerLoadBalancer_To_v1alpha4_DockerLoadBalancer(in, out, s)
203+
}

test/infrastructure/docker/api/v1alpha4/zz_generated.conversion.go

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/infrastructure/docker/api/v1beta1/dockercluster_types.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package v1beta1
1818

1919
import (
20+
corev1 "k8s.io/api/core/v1"
2021
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122

2223
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -53,6 +54,17 @@ type DockerClusterSpec struct {
5354
type DockerLoadBalancer struct {
5455
// ImageMeta allows customizing the image used for the cluster load balancer.
5556
ImageMeta `json:",inline"`
57+
58+
// UnsafeHAProxyConfigTemplateRef allows you to replace the HAProxy config file.
59+
// This field is a reference to a config map that contains the configuration template. The key of the config map should be equal to 'value'.
60+
// The content of the config map will be processed and will replace the default HAProxy config file. Please use it with caution, as there are
61+
// no checks to ensure the validity of the configuration. This template will support the following variables that will be passed by the controller:
62+
// $IPv6 (bool) indicates if the cluster is IPv6, $FrontendControlPlanePort (string) indicates the frontend control plane port,
63+
// $BackendControlPlanePort (string) indicates the backend control plane port, $BackendServers (map[string]string) indicates the backend server
64+
// where the key is the server name and the value is the address. This map is dynamic and is updated every time a new control plane
65+
// node is added or removed. The template will also support the JoinHostPort function to join the host and port of the backend server.
66+
// +optional
67+
CustomHAProxyConfigTemplateRef *corev1.LocalObjectReference `json:"unsafeHAProxyConfigTemplateRef,omitempty"`
5668
}
5769

5870
// ImageMeta allows customizing the image used for components that are not

test/infrastructure/docker/api/v1beta1/zz_generated.deepcopy.go

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockerclusters.yaml

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/infrastructure/docker/config/crd/bases/infrastructure.cluster.x-k8s.io_dockerclustertemplates.yaml

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)