feat: service.{http,ssh}.loadBalancerClass
(#640)
### Description of the change Introduce `service.{http,ssh}.loadBalancerClass` ### Benefits Feature was not supported before. This is required if your cluster has multiple loadBalancer options and you want to select one ### Possible drawbacks More yaml. ### Checklist - [x] Parameters are documented in the `values.yaml` and added to the `README.md` using [readme-generator-for-helm](https://github.com/bitnami-labs/readme-generator-for-helm) - [x] Templating unittests are added Reviewed-on: https://gitea.com/gitea/helm-chart/pulls/640 Reviewed-by: pat-s <pat-s@noreply.gitea.com> Co-authored-by: Karitham <kar@karitham.dev> Co-committed-by: Karitham <kar@karitham.dev>
This commit is contained in:
parent
5c6cd932fe
commit
a535919025
@ -904,6 +904,7 @@ To comply with the Gitea helm chart definition of the digest parameter, a "custo
|
|||||||
| `service.http.loadBalancerSourceRanges` | Source range filter for http loadbalancer | `[]` |
|
| `service.http.loadBalancerSourceRanges` | Source range filter for http loadbalancer | `[]` |
|
||||||
| `service.http.annotations` | HTTP service annotations | `{}` |
|
| `service.http.annotations` | HTTP service annotations | `{}` |
|
||||||
| `service.http.labels` | HTTP service additional labels | `{}` |
|
| `service.http.labels` | HTTP service additional labels | `{}` |
|
||||||
|
| `service.http.loadBalancerClass` | Loadbalancer class | `nil` |
|
||||||
| `service.ssh.type` | Kubernetes service type for ssh traffic | `ClusterIP` |
|
| `service.ssh.type` | Kubernetes service type for ssh traffic | `ClusterIP` |
|
||||||
| `service.ssh.port` | Port number for ssh traffic | `22` |
|
| `service.ssh.port` | Port number for ssh traffic | `22` |
|
||||||
| `service.ssh.clusterIP` | ClusterIP setting for ssh autosetup for deployment is None | `None` |
|
| `service.ssh.clusterIP` | ClusterIP setting for ssh autosetup for deployment is None | `None` |
|
||||||
@ -917,6 +918,7 @@ To comply with the Gitea helm chart definition of the digest parameter, a "custo
|
|||||||
| `service.ssh.loadBalancerSourceRanges` | Source range filter for ssh loadbalancer | `[]` |
|
| `service.ssh.loadBalancerSourceRanges` | Source range filter for ssh loadbalancer | `[]` |
|
||||||
| `service.ssh.annotations` | SSH service annotations | `{}` |
|
| `service.ssh.annotations` | SSH service annotations | `{}` |
|
||||||
| `service.ssh.labels` | SSH service additional labels | `{}` |
|
| `service.ssh.labels` | SSH service additional labels | `{}` |
|
||||||
|
| `service.ssh.loadBalancerClass` | Loadbalancer class | `nil` |
|
||||||
|
|
||||||
### Ingress
|
### Ingress
|
||||||
|
|
||||||
|
@ -11,7 +11,11 @@ metadata:
|
|||||||
{{- toYaml .Values.service.http.annotations | nindent 4 }}
|
{{- toYaml .Values.service.http.annotations | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ .Values.service.http.type }}
|
type: {{ .Values.service.http.type }}
|
||||||
{{- if and .Values.service.http.loadBalancerIP (eq .Values.service.http.type "LoadBalancer") }}
|
{{- if eq .Values.service.http.type "LoadBalancer" }}
|
||||||
|
{{- if .Values.service.http.loadBalancerClass }}
|
||||||
|
loadBalancerClass: {{ .Values.service.http.loadBalancerClass }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and .Values.service.http.loadBalancerIP }}
|
||||||
loadBalancerIP: {{ .Values.service.http.loadBalancerIP }}
|
loadBalancerIP: {{ .Values.service.http.loadBalancerIP }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.service.http.loadBalancerSourceRanges }}
|
{{- if .Values.service.http.loadBalancerSourceRanges }}
|
||||||
@ -20,6 +24,7 @@ spec:
|
|||||||
- {{ . }}
|
- {{ . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.service.http.externalIPs }}
|
{{- if .Values.service.http.externalIPs }}
|
||||||
externalIPs:
|
externalIPs:
|
||||||
{{- toYaml .Values.service.http.externalIPs | nindent 4 }}
|
{{- toYaml .Values.service.http.externalIPs | nindent 4 }}
|
||||||
|
@ -12,6 +12,9 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
type: {{ .Values.service.ssh.type }}
|
type: {{ .Values.service.ssh.type }}
|
||||||
{{- if eq .Values.service.ssh.type "LoadBalancer" }}
|
{{- if eq .Values.service.ssh.type "LoadBalancer" }}
|
||||||
|
{{- if .Values.service.ssh.loadBalancerClass }}
|
||||||
|
loadBalancerClass: {{ .Values.service.ssh.loadBalancerClass }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.service.ssh.loadBalancerIP }}
|
{{- if .Values.service.ssh.loadBalancerIP }}
|
||||||
loadBalancerIP: {{ .Values.service.ssh.loadBalancerIP }}
|
loadBalancerIP: {{ .Values.service.ssh.loadBalancerIP }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
@ -49,3 +49,70 @@ tests:
|
|||||||
asserts:
|
asserts:
|
||||||
- exists:
|
- exists:
|
||||||
path: metadata.labels["app"]
|
path: metadata.labels["app"]
|
||||||
|
|
||||||
|
- it: render service.ssh.loadBalancerClass if set and type is LoadBalancer
|
||||||
|
template: templates/gitea/ssh-svc.yaml
|
||||||
|
set:
|
||||||
|
service:
|
||||||
|
ssh:
|
||||||
|
loadBalancerClass: "example.com/class"
|
||||||
|
type: LoadBalancer
|
||||||
|
loadBalancerIP: "1.2.3.4"
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
- "1.2.3.4/32"
|
||||||
|
- "5.6.7.8/32"
|
||||||
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.loadBalancerClass
|
||||||
|
value: "example.com/class"
|
||||||
|
- equal:
|
||||||
|
path: spec.loadBalancerIP
|
||||||
|
value: "1.2.3.4"
|
||||||
|
- equal:
|
||||||
|
path: spec.loadBalancerSourceRanges
|
||||||
|
value: ["1.2.3.4/32", "5.6.7.8/32"]
|
||||||
|
|
||||||
|
- it: does not render when loadbalancer properties are set but type is not loadBalancerClass
|
||||||
|
template: templates/gitea/http-svc.yaml
|
||||||
|
set:
|
||||||
|
service:
|
||||||
|
http:
|
||||||
|
type: ClusterIP
|
||||||
|
loadBalancerClass: "example.com/class"
|
||||||
|
loadBalancerIP: "1.2.3.4"
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
- "1.2.3.4/32"
|
||||||
|
- "5.6.7.8/32"
|
||||||
|
asserts:
|
||||||
|
- notExists:
|
||||||
|
path: spec.loadBalancerClass
|
||||||
|
- notExists:
|
||||||
|
path: spec.loadBalancerIP
|
||||||
|
- notExists:
|
||||||
|
path: spec.loadBalancerSourceRanges
|
||||||
|
|
||||||
|
- it: does not render loadBalancerClass by default even when type is LoadBalancer
|
||||||
|
template: templates/gitea/http-svc.yaml
|
||||||
|
set:
|
||||||
|
service:
|
||||||
|
http:
|
||||||
|
type: LoadBalancer
|
||||||
|
loadBalancerIP: "1.2.3.4"
|
||||||
|
asserts:
|
||||||
|
- notExists:
|
||||||
|
path: spec.loadBalancerClass
|
||||||
|
- equal:
|
||||||
|
path: spec.loadBalancerIP
|
||||||
|
value: "1.2.3.4"
|
||||||
|
|
||||||
|
- it: both ssh and http services exist
|
||||||
|
templates:
|
||||||
|
- templates/gitea/ssh-svc.yaml
|
||||||
|
- templates/gitea/http-svc.yaml
|
||||||
|
asserts:
|
||||||
|
- matchRegex:
|
||||||
|
path: metadata.name
|
||||||
|
pattern: "^gitea-unittests-(?:ssh|http)$"
|
||||||
|
- matchRegex:
|
||||||
|
path: spec.ports[0].name
|
||||||
|
pattern: "^(?:ssh|http)$"
|
||||||
|
@ -107,6 +107,7 @@ service:
|
|||||||
## @param service.http.loadBalancerSourceRanges Source range filter for http loadbalancer
|
## @param service.http.loadBalancerSourceRanges Source range filter for http loadbalancer
|
||||||
## @param service.http.annotations HTTP service annotations
|
## @param service.http.annotations HTTP service annotations
|
||||||
## @param service.http.labels HTTP service additional labels
|
## @param service.http.labels HTTP service additional labels
|
||||||
|
## @param service.http.loadBalancerClass Loadbalancer class
|
||||||
http:
|
http:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
port: 3000
|
port: 3000
|
||||||
@ -120,6 +121,7 @@ service:
|
|||||||
loadBalancerSourceRanges: []
|
loadBalancerSourceRanges: []
|
||||||
annotations: {}
|
annotations: {}
|
||||||
labels: {}
|
labels: {}
|
||||||
|
loadBalancerClass:
|
||||||
## @param service.ssh.type Kubernetes service type for ssh traffic
|
## @param service.ssh.type Kubernetes service type for ssh traffic
|
||||||
## @param service.ssh.port Port number for ssh traffic
|
## @param service.ssh.port Port number for ssh traffic
|
||||||
## @param service.ssh.clusterIP ClusterIP setting for ssh autosetup for deployment is None
|
## @param service.ssh.clusterIP ClusterIP setting for ssh autosetup for deployment is None
|
||||||
@ -133,6 +135,7 @@ service:
|
|||||||
## @param service.ssh.loadBalancerSourceRanges Source range filter for ssh loadbalancer
|
## @param service.ssh.loadBalancerSourceRanges Source range filter for ssh loadbalancer
|
||||||
## @param service.ssh.annotations SSH service annotations
|
## @param service.ssh.annotations SSH service annotations
|
||||||
## @param service.ssh.labels SSH service additional labels
|
## @param service.ssh.labels SSH service additional labels
|
||||||
|
## @param service.ssh.loadBalancerClass Loadbalancer class
|
||||||
ssh:
|
ssh:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
port: 22
|
port: 22
|
||||||
@ -147,6 +150,7 @@ service:
|
|||||||
loadBalancerSourceRanges: []
|
loadBalancerSourceRanges: []
|
||||||
annotations: {}
|
annotations: {}
|
||||||
labels: {}
|
labels: {}
|
||||||
|
loadBalancerClass:
|
||||||
|
|
||||||
## @section Ingress
|
## @section Ingress
|
||||||
## @param ingress.enabled Enable ingress
|
## @param ingress.enabled Enable ingress
|
||||||
|
Loading…
Reference in New Issue
Block a user