feat(argo-workflows): add loadBalancerClass field for Service resources
Most users of ArgoCD may use `Ingress` (and soon `HTTPRoute`), but for those who may want to use `Service` of type `LoadBalancer`, this would be useful. The `loadBalancerClass` field would allow for a `CloudProvider` agnostic way of offloading the reconciliation for Kubernetes Service resources of type `LoadBalancer` to an external controller. Signed-off-by: Gazal Gafoor <gazal.gafoor@rea-group.com>
This commit is contained in:
parent
ad8d48c590
commit
b598a89cae
5 changed files with 23 additions and 7 deletions
|
@ -3,7 +3,7 @@ appVersion: v3.5.8
|
||||||
name: argo-workflows
|
name: argo-workflows
|
||||||
description: A Helm chart for Argo Workflows
|
description: A Helm chart for Argo Workflows
|
||||||
type: application
|
type: application
|
||||||
version: 0.41.11
|
version: 0.41.12
|
||||||
icon: https://argo-workflows.readthedocs.io/en/stable/assets/logo.png
|
icon: https://argo-workflows.readthedocs.io/en/stable/assets/logo.png
|
||||||
home: https://github.com/argoproj/argo-helm
|
home: https://github.com/argoproj/argo-helm
|
||||||
sources:
|
sources:
|
||||||
|
@ -16,5 +16,5 @@ annotations:
|
||||||
fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
|
fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
|
||||||
url: https://argoproj.github.io/argo-helm/pgp_keys.asc
|
url: https://argoproj.github.io/argo-helm/pgp_keys.asc
|
||||||
artifacthub.io/changes: |
|
artifacthub.io/changes: |
|
||||||
- kind: fixed
|
- kind: changed
|
||||||
description: Add `app:` label to components to match upstream
|
description: add loadBalancerClass field for Service resources
|
||||||
|
|
|
@ -167,6 +167,7 @@ Fields to note:
|
||||||
| controller.kubeConfig | object | `{}` (See [values.yaml]) | Configure when workflow controller runs in a different k8s cluster with the workflow workloads, or needs to communicate with the k8s apiserver using an out-of-cluster kubeconfig secret. |
|
| controller.kubeConfig | object | `{}` (See [values.yaml]) | Configure when workflow controller runs in a different k8s cluster with the workflow workloads, or needs to communicate with the k8s apiserver using an out-of-cluster kubeconfig secret. |
|
||||||
| controller.links | list | `[]` | Configure Argo Server to show custom [links] |
|
| controller.links | list | `[]` | Configure Argo Server to show custom [links] |
|
||||||
| controller.livenessProbe | object | See [values.yaml] | Configure liveness [probe] for the controller |
|
| controller.livenessProbe | object | See [values.yaml] | Configure liveness [probe] for the controller |
|
||||||
|
| controller.loadBalancerClass | string | `""` | The class of the load balancer implementation |
|
||||||
| controller.loadBalancerSourceRanges | list | `[]` | Source ranges to allow access to service from. Only applies to service type `LoadBalancer` |
|
| controller.loadBalancerSourceRanges | list | `[]` | Source ranges to allow access to service from. Only applies to service type `LoadBalancer` |
|
||||||
| controller.logging.format | string | `"text"` | Set the logging format (one of: `text`, `json`) |
|
| controller.logging.format | string | `"text"` | Set the logging format (one of: `text`, `json`) |
|
||||||
| controller.logging.globallevel | string | `"0"` | Set the glog logging level |
|
| controller.logging.globallevel | string | `"0"` | Set the glog logging level |
|
||||||
|
@ -301,6 +302,7 @@ Fields to note:
|
||||||
| server.ingress.pathType | string | `"Prefix"` | Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific` |
|
| server.ingress.pathType | string | `"Prefix"` | Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific` |
|
||||||
| server.ingress.paths | list | `["/"]` | List of ingress paths |
|
| server.ingress.paths | list | `["/"]` | List of ingress paths |
|
||||||
| server.ingress.tls | list | `[]` | Ingress TLS configuration |
|
| server.ingress.tls | list | `[]` | Ingress TLS configuration |
|
||||||
|
| server.loadBalancerClass | string | `""` | The class of the load balancer implementation |
|
||||||
| server.loadBalancerIP | string | `""` | Static IP address to assign to loadBalancer service type `LoadBalancer` |
|
| server.loadBalancerIP | string | `""` | Static IP address to assign to loadBalancer service type `LoadBalancer` |
|
||||||
| server.loadBalancerSourceRanges | list | `[]` | Source ranges to allow access to service from. Only applies to service type `LoadBalancer` |
|
| server.loadBalancerSourceRanges | list | `[]` | Source ranges to allow access to service from. Only applies to service type `LoadBalancer` |
|
||||||
| server.logging.format | string | `"text"` | Set the logging format (one of: `text`, `json`) |
|
| server.logging.format | string | `"text"` | Set the logging format (one of: `text`, `json`) |
|
||||||
|
|
|
@ -35,8 +35,13 @@ spec:
|
||||||
{{- if and (eq .Values.controller.serviceType "ClusterIP") .Values.controller.metricsConfig.headlessService }}
|
{{- if and (eq .Values.controller.serviceType "ClusterIP") .Values.controller.metricsConfig.headlessService }}
|
||||||
clusterIP: None
|
clusterIP: None
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if and (eq .Values.controller.serviceType "LoadBalancer") .Values.controller.loadBalancerSourceRanges }}
|
{{- if eq .Values.controller.serviceType "LoadBalancer" }}
|
||||||
|
{{- with .Values.controller.loadBalancerClass }}
|
||||||
|
loadBalancerClass: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.controller.loadBalancerSourceRanges }}
|
||||||
loadBalancerSourceRanges:
|
loadBalancerSourceRanges:
|
||||||
{{- toYaml .Values.controller.loadBalancerSourceRanges | nindent 4 }}
|
{{- toYaml .Values.controller.loadBalancerSourceRanges | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
|
@ -28,11 +28,16 @@ spec:
|
||||||
{{- include "argo-workflows.selectorLabels" (dict "context" . "name" .Values.server.name) | nindent 4 }}
|
{{- include "argo-workflows.selectorLabels" (dict "context" . "name" .Values.server.name) | nindent 4 }}
|
||||||
sessionAffinity: None
|
sessionAffinity: None
|
||||||
type: {{ .Values.server.serviceType }}
|
type: {{ .Values.server.serviceType }}
|
||||||
{{- if and (eq .Values.server.serviceType "LoadBalancer") .Values.server.loadBalancerIP }}
|
{{- if eq .Values.server.serviceType "LoadBalancer" }}
|
||||||
loadBalancerIP: {{ .Values.server.loadBalancerIP | quote }}
|
{{- with .Values.controller.loadBalancerClass }}
|
||||||
|
loadBalancerClass: {{ . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if and (eq .Values.server.serviceType "LoadBalancer") .Values.server.loadBalancerSourceRanges }}
|
{{- with .Values.server.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.loadBalancerSourceRanges }}
|
||||||
loadBalancerSourceRanges:
|
loadBalancerSourceRanges:
|
||||||
{{- toYaml .Values.server.loadBalancerSourceRanges | nindent 4 }}
|
{{- toYaml .Values.server.loadBalancerSourceRanges | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
|
@ -295,6 +295,8 @@ controller:
|
||||||
serviceAnnotations: {}
|
serviceAnnotations: {}
|
||||||
# -- Optional labels to add to the controller Service
|
# -- Optional labels to add to the controller Service
|
||||||
serviceLabels: {}
|
serviceLabels: {}
|
||||||
|
# -- The class of the load balancer implementation
|
||||||
|
loadBalancerClass: ""
|
||||||
# -- Source ranges to allow access to service from. Only applies to service type `LoadBalancer`
|
# -- Source ranges to allow access to service from. Only applies to service type `LoadBalancer`
|
||||||
loadBalancerSourceRanges: []
|
loadBalancerSourceRanges: []
|
||||||
|
|
||||||
|
@ -506,6 +508,8 @@ server:
|
||||||
serviceAnnotations: {}
|
serviceAnnotations: {}
|
||||||
# -- Optional labels to add to the UI Service
|
# -- Optional labels to add to the UI Service
|
||||||
serviceLabels: {}
|
serviceLabels: {}
|
||||||
|
# -- The class of the load balancer implementation
|
||||||
|
loadBalancerClass: ""
|
||||||
# -- Static IP address to assign to loadBalancer service type `LoadBalancer`
|
# -- Static IP address to assign to loadBalancer service type `LoadBalancer`
|
||||||
loadBalancerIP: ""
|
loadBalancerIP: ""
|
||||||
# -- Source ranges to allow access to service from. Only applies to service type `LoadBalancer`
|
# -- Source ranges to allow access to service from. Only applies to service type `LoadBalancer`
|
||||||
|
|
Loading…
Reference in a new issue