From cf40b0869855a338e8ad3cb7d35a5fe623de7036 Mon Sep 17 00:00:00 2001 From: greendor1234 Date: Mon, 18 Nov 2024 15:45:57 +0000 Subject: [PATCH 1/2] added parser for loadBalancerSourceRanges field --- examples/app/templates/myapp-lb-service.yaml | 16 +++++++++++++++ examples/app/values.yaml | 8 ++++++++ pkg/processor/service/service.go | 21 ++++++++++++++++++++ test_data/sample-app.yaml | 18 +++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 examples/app/templates/myapp-lb-service.yaml diff --git a/examples/app/templates/myapp-lb-service.yaml b/examples/app/templates/myapp-lb-service.yaml new file mode 100644 index 00000000..c440b1ff --- /dev/null +++ b/examples/app/templates/myapp-lb-service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "app.fullname" . }}-myapp-lb-service + labels: + app: myapp + {{- include "app.labels" . | nindent 4 }} +spec: + type: {{ .Values.myappLbService.type }} + selector: + app: myapp + {{- include "app.selectorLabels" . | nindent 4 }} + ports: + {{- .Values.myappLbService.ports | toYaml | nindent 2 }} + loadBalancerSourceRanges: + {{ - .Values.myappLbService.loadBalancerSourceRanges | toYaml | nindent 2 }} \ No newline at end of file diff --git a/examples/app/values.yaml b/examples/app/values.yaml index 8a19b2cd..2d23d620 100644 --- a/examples/app/values.yaml +++ b/examples/app/values.yaml @@ -89,6 +89,14 @@ myapp: tag: v0.8.0 replicas: 3 revisionHistoryLimit: 5 +myappLbService: + loadBalancerSourceRanges: + - 10.0.0.0/8 + ports: + - name: https + port: 8443 + targetPort: https + type: LoadBalancer myappPdb: minAvailable: 2 myappService: diff --git a/pkg/processor/service/service.go b/pkg/processor/service/service.go index 7a223482..2379d164 100644 --- a/pkg/processor/service/service.go +++ b/pkg/processor/service/service.go @@ -30,6 +30,12 @@ spec: {{- .Values.%[1]s.ports | toYaml | nindent 2 }}` ) +const ( + lbSourceRangesTempSpec = ` + loadBalancerSourceRanges: + {{ - .Values.%[1]s.loadBalancerSourceRanges | toYaml | nindent 2 }}` +) + var svcGVC = schema.GroupVersionKind{ Group: "", Version: "v1", @@ -97,6 +103,9 @@ func (r svc) Process(appMeta helmify.AppMetadata, obj *unstructured.Unstructured _ = unstructured.SetNestedSlice(values, ports, shortNameCamel, "ports") res := meta + fmt.Sprintf(svcTempSpec, shortNameCamel, selector, appMeta.ChartName()) + + res += parseLoadBalancerSourceRanges(values, service, shortNameCamel) + if shortNameCamel == "webhookService" && appMeta.Config().AddWebhookOption { res = fmt.Sprintf("{{- if .Values.webhook.enabled }}\n%s\n{{- end }}", res) } @@ -107,6 +116,18 @@ func (r svc) Process(appMeta helmify.AppMetadata, obj *unstructured.Unstructured }, nil } +func parseLoadBalancerSourceRanges(values helmify.Values, service corev1.Service, shortNameCamel string) string { + if len(service.Spec.LoadBalancerSourceRanges) < 1 { + return "" + } + lbSourceRanges := make([]interface{}, len(service.Spec.LoadBalancerSourceRanges)) + for i, ip := range service.Spec.LoadBalancerSourceRanges { + lbSourceRanges[i] = ip + } + _ = unstructured.SetNestedSlice(values, lbSourceRanges, shortNameCamel, "loadBalancerSourceRanges") + return fmt.Sprintf(lbSourceRangesTempSpec, shortNameCamel) +} + type result struct { name string data string diff --git a/test_data/sample-app.yaml b/test_data/sample-app.yaml index d99c55d1..d2399c81 100644 --- a/test_data/sample-app.yaml +++ b/test_data/sample-app.yaml @@ -138,6 +138,24 @@ spec: selector: app: myapp --- +apiVersion: v1 +kind: Service +metadata: + labels: + app: myapp + name: myapp-lb-service + namespace: my-ns +spec: + ports: + - name: https + port: 8443 + targetPort: https + selector: + app: myapp + type: LoadBalancer + loadBalancerSourceRanges: + - 10.0.0.0/8 +--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: From a1742061272ee91a4a7c860d2ae9828c747baa16 Mon Sep 17 00:00:00 2001 From: greendor1234 Date: Mon, 18 Nov 2024 16:38:13 +0000 Subject: [PATCH 2/2] fixed typo --- examples/app/templates/myapp-lb-service.yaml | 2 +- pkg/processor/service/service.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/app/templates/myapp-lb-service.yaml b/examples/app/templates/myapp-lb-service.yaml index c440b1ff..3968414e 100644 --- a/examples/app/templates/myapp-lb-service.yaml +++ b/examples/app/templates/myapp-lb-service.yaml @@ -13,4 +13,4 @@ spec: ports: {{- .Values.myappLbService.ports | toYaml | nindent 2 }} loadBalancerSourceRanges: - {{ - .Values.myappLbService.loadBalancerSourceRanges | toYaml | nindent 2 }} \ No newline at end of file + {{- .Values.myappLbService.loadBalancerSourceRanges | toYaml | nindent 2 }} \ No newline at end of file diff --git a/pkg/processor/service/service.go b/pkg/processor/service/service.go index 2379d164..89ad6404 100644 --- a/pkg/processor/service/service.go +++ b/pkg/processor/service/service.go @@ -33,7 +33,7 @@ spec: const ( lbSourceRangesTempSpec = ` loadBalancerSourceRanges: - {{ - .Values.%[1]s.loadBalancerSourceRanges | toYaml | nindent 2 }}` + {{- .Values.%[1]s.loadBalancerSourceRanges | toYaml | nindent 2 }}` ) var svcGVC = schema.GroupVersionKind{