feat(argo-cd): Add compatibility to v1 Ingress (#637)

* feat(argo-cd): Add compatibility to v1 Ingress

Signed-off-by: Marco Kilchhofer <mkilchhofer@users.noreply.github.com>

* chore(argo-cd): Add spaces to improve readability

Signed-off-by: Marco Kilchhofer <mkilchhofer@users.noreply.github.com>

* feat(argo-cd): Bump chart version

Signed-off-by: Marco Kilchhofer <mkilchhofer@users.noreply.github.com>

* fix: Apply review changes

Signed-off-by: Marco Kilchhofer <mkilchhofer@users.noreply.github.com>

Co-authored-by: Oliver Bähler <oliverbaehler@hotmail.com>

Co-authored-by: Oliver Bähler <oliverbaehler@hotmail.com>
This commit is contained in:
Marco Kilchhofer 2021-04-21 21:31:16 +02:00 committed by GitHub
parent abcd61717f
commit 49ccf4ae8a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 119 additions and 44 deletions

View file

@ -2,7 +2,7 @@ apiVersion: v2
appVersion: 2.0.0 appVersion: 2.0.0
description: A Helm chart for ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes. description: A Helm chart for ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes.
name: argo-cd name: argo-cd
version: 3.1.2 version: 3.2.0
home: https://github.com/argoproj/argo-helm home: https://github.com/argoproj/argo-helm
icon: https://raw.githubusercontent.com/argoproj/argo/master/docs/assets/argo.png icon: https://raw.githubusercontent.com/argoproj/argo/master/docs/assets/argo.png
keywords: keywords:

View file

@ -227,12 +227,14 @@ Helm v3 has removed the `install-crds` hook so CRDs are now populated by files i
| server.ingress.enabled | Enable an ingress resource for the server | `false` | | server.ingress.enabled | Enable an ingress resource for the server | `false` |
| server.ingress.hosts | List of ingress hosts | `[]` | | server.ingress.hosts | List of ingress hosts | `[]` |
| server.ingress.labels | Additional ingress labels. | `{}` | | server.ingress.labels | Additional ingress labels. | `{}` |
| server.ingress.ingressClassName | Defines which ingress controller will implement the resource | `""` |
| server.ingress.tls | Ingress TLS configuration. | `[]` | | server.ingress.tls | Ingress TLS configuration. | `[]` |
| server.ingress.https | Uses `server.service.servicePortHttps` instead `server.service.servicePortHttp` | `false` | | server.ingress.https | Uses `server.service.servicePortHttps` instead `server.service.servicePortHttp` | `false` |
| server.ingressGrpc.annotations | Additional ingress annotations for dedicated [gRPC-ingress] | `{}` | | server.ingressGrpc.annotations | Additional ingress annotations for dedicated [gRPC-ingress] | `{}` |
| server.ingressGrpc.enabled | Enable an ingress resource for the server for dedicated [gRPC-ingress] | `false` | | server.ingressGrpc.enabled | Enable an ingress resource for the server for dedicated [gRPC-ingress] | `false` |
| server.ingressGrpc.hosts | List of ingress hosts for dedicated [gRPC-ingress] | `[]` | | server.ingressGrpc.hosts | List of ingress hosts for dedicated [gRPC-ingress] | `[]` |
| server.ingressGrpc.labels | Additional ingress labels for dedicated [gRPC-ingress] | `{}` | | server.ingressGrpc.labels | Additional ingress labels for dedicated [gRPC-ingress] | `{}` |
| server.ingressGrpc.ingressClassName | Defines which ingress controller will implement the resource [gRPC-ingress] | `""` |
| server.ingressGrpc.tls | Ingress TLS configuration for dedicated [gRPC-ingress] | `[]` | | server.ingressGrpc.tls | Ingress TLS configuration for dedicated [gRPC-ingress] | `[]` |
| server.route.enabled | Enable a OpenShift route for the server | `false` | | server.route.enabled | Enable a OpenShift route for the server | `false` |
| server.route.hostname | Hostname of OpenShift route | `""` | | server.route.hostname | Hostname of OpenShift route | `""` |

View file

@ -138,4 +138,17 @@ app.kubernetes.io/instance: {{ .context.Release.Name }}
{{- if .component }} {{- if .component }}
app.kubernetes.io/component: {{ .component }} app.kubernetes.io/component: {{ .component }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{/*
Return the appropriate apiVersion for ingress
*/}}
{{- define "argo-cd.ingress.apiVersion" -}}
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "extensions/v1beta1" -}}
{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "networking.k8s.io/v1beta1" -}}
{{- else -}}
{{- print "networking.k8s.io/v1" -}}
{{- end -}}
{{- end -}}

View file

@ -3,11 +3,7 @@
{{- $servicePort := ternary .Values.server.service.servicePortHttps .Values.server.service.servicePortHttp .Values.server.ingressGrpc.https -}} {{- $servicePort := ternary .Values.server.service.servicePortHttps .Values.server.service.servicePortHttp .Values.server.ingressGrpc.https -}}
{{- $paths := .Values.server.ingressGrpc.paths -}} {{- $paths := .Values.server.ingressGrpc.paths -}}
{{- $extraPaths := .Values.server.ingressGrpc.extraPaths -}} {{- $extraPaths := .Values.server.ingressGrpc.extraPaths -}}
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} apiVersion: {{ include "argo-cd.ingress.apiVersion" . }}
apiVersion: networking.k8s.io/v1beta1
{{ else }}
apiVersion: extensions/v1beta1
{{ end -}}
kind: Ingress kind: Ingress
metadata: metadata:
{{- if .Values.server.ingressGrpc.annotations }} {{- if .Values.server.ingressGrpc.annotations }}
@ -19,41 +15,74 @@ metadata:
name: {{ template "argo-cd.server.fullname" . }}-grpc name: {{ template "argo-cd.server.fullname" . }}-grpc
labels: labels:
{{- include "argo-cd.labels" (dict "context" . "component" .Values.server.name "name" .Values.server.name) | nindent 4 }} {{- include "argo-cd.labels" (dict "context" . "component" .Values.server.name "name" .Values.server.name) | nindent 4 }}
{{- if .Values.server.ingressGrpc.labels }} {{- if .Values.server.ingressGrpc.labels }}
{{- toYaml .Values.server.ingressGrpc.labels | nindent 4 }} {{- toYaml .Values.server.ingressGrpc.labels | nindent 4 }}
{{- end }} {{- end }}
spec: spec:
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
{{- with .Values.server.ingress.ingressClassName }}
ingressClassName: {{ . }}
{{- end }}
{{- end }}
rules: rules:
{{- if .Values.server.ingressGrpc.hosts }} {{- if .Values.server.ingressGrpc.hosts }}
{{- range $host := .Values.server.ingressGrpc.hosts }} {{- range $host := .Values.server.ingressGrpc.hosts }}
- host: {{ $host }} - host: {{ $host }}
http: http:
paths: paths:
{{- if $extraPaths }} {{- if $extraPaths }}
{{- toYaml $extraPaths | nindent 10 }} {{- toYaml $extraPaths | nindent 10 }}
{{- end -}} {{- end -}}
{{- range $p := $paths }} {{- range $p := $paths }}
- path: {{ $p }} - path: {{ $p }}
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
pathType: Prefix
{{- end }}
backend: backend:
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
service:
name: {{ $serviceName }}
port:
{{- if kindIs "float64" $servicePort }}
number: {{ $servicePort }}
{{- else }}
name: {{ $servicePort }}
{{- end }}
{{- else }}
serviceName: {{ $serviceName }} serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }} servicePort: {{ $servicePort }}
{{- end -}} {{- end }}
{{- end -}} {{- end -}}
{{- end -}}
{{- else }} {{- else }}
- http: - http:
paths: paths:
{{- if $extraPaths }} {{- if $extraPaths }}
{{- toYaml $extraPaths | nindent 10 }} {{- toYaml $extraPaths | nindent 10 }}
{{- end -}} {{- end -}}
{{- range $p := $paths }} {{- range $p := $paths }}
- path: {{ $p }} - path: {{ $p }}
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
pathType: Prefix
{{- end }}
backend: backend:
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
service:
name: {{ $serviceName }}
port:
{{- if kindIs "float64" $servicePort }}
number: {{ $servicePort }}
{{- else }}
name: {{ $servicePort }}
{{- end }}
{{- else }}
serviceName: {{ $serviceName }} serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }} servicePort: {{ $servicePort }}
{{- end -}} {{- end }}
{{- end -}}
{{- end -}} {{- end -}}
{{- if .Values.server.ingressGrpc.tls }} {{- if .Values.server.ingressGrpc.tls }}
tls: tls:
{{- toYaml .Values.server.ingressGrpc.tls | nindent 4 }} {{- toYaml .Values.server.ingressGrpc.tls | nindent 4 }}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}

View file

@ -3,11 +3,7 @@
{{- $servicePort := ternary .Values.server.service.servicePortHttps .Values.server.service.servicePortHttp .Values.server.ingress.https -}} {{- $servicePort := ternary .Values.server.service.servicePortHttps .Values.server.service.servicePortHttp .Values.server.ingress.https -}}
{{- $paths := .Values.server.ingress.paths -}} {{- $paths := .Values.server.ingress.paths -}}
{{- $extraPaths := .Values.server.ingress.extraPaths -}} {{- $extraPaths := .Values.server.ingress.extraPaths -}}
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} apiVersion: {{ include "argo-cd.ingress.apiVersion" . }}
apiVersion: networking.k8s.io/v1beta1
{{ else }}
apiVersion: extensions/v1beta1
{{ end -}}
kind: Ingress kind: Ingress
metadata: metadata:
{{- if .Values.server.ingress.annotations }} {{- if .Values.server.ingress.annotations }}
@ -19,41 +15,74 @@ metadata:
name: {{ template "argo-cd.server.fullname" . }} name: {{ template "argo-cd.server.fullname" . }}
labels: labels:
{{- include "argo-cd.labels" (dict "context" . "component" .Values.server.name "name" .Values.server.name) | nindent 4 }} {{- include "argo-cd.labels" (dict "context" . "component" .Values.server.name "name" .Values.server.name) | nindent 4 }}
{{- if .Values.server.ingress.labels }} {{- if .Values.server.ingress.labels }}
{{- toYaml .Values.server.ingress.labels | nindent 4 }} {{- toYaml .Values.server.ingress.labels | nindent 4 }}
{{- end }} {{- end }}
spec: spec:
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
{{- with .Values.server.ingress.ingressClassName }}
ingressClassName: {{ . }}
{{- end }}
{{- end }}
rules: rules:
{{- if .Values.server.ingress.hosts }} {{- if .Values.server.ingress.hosts }}
{{- range $host := .Values.server.ingress.hosts }} {{- range $host := .Values.server.ingress.hosts }}
- host: {{ $host }} - host: {{ $host }}
http: http:
paths: paths:
{{- if $extraPaths }} {{- if $extraPaths }}
{{- toYaml $extraPaths | nindent 10 }} {{- toYaml $extraPaths | nindent 10 }}
{{- end }} {{- end }}
{{- range $p := $paths }} {{- range $p := $paths }}
- path: {{ $p }} - path: {{ $p }}
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
pathType: Prefix
{{- end }}
backend: backend:
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
service:
name: {{ $serviceName }}
port:
{{- if kindIs "float64" $servicePort }}
number: {{ $servicePort }}
{{- else }}
name: {{ $servicePort }}
{{- end }}
{{- else }}
serviceName: {{ $serviceName }} serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }} servicePort: {{ $servicePort }}
{{- end -}} {{- end }}
{{- end -}} {{- end -}}
{{- end -}}
{{- else }} {{- else }}
- http: - http:
paths: paths:
{{- if $extraPaths }} {{- if $extraPaths }}
{{- toYaml $extraPaths | nindent 10 }} {{- toYaml $extraPaths | nindent 10 }}
{{- end }} {{- end }}
{{- range $p := $paths }} {{- range $p := $paths }}
- path: {{ $p }} - path: {{ $p }}
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
pathType: Prefix
{{- end }}
backend: backend:
{{- if eq (include "argo-cd.ingress.apiVersion" $) "networking.k8s.io/v1" }}
service:
name: {{ $serviceName }}
port:
{{- if kindIs "float64" $servicePort }}
number: {{ $servicePort }}
{{- else }}
name: {{ $servicePort }}
{{- end }}
{{- else }}
serviceName: {{ $serviceName }} serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }} servicePort: {{ $servicePort }}
{{- end -}} {{- end }}
{{- end -}}
{{- end -}} {{- end -}}
{{- if .Values.server.ingress.tls }} {{- if .Values.server.ingress.tls }}
tls: tls:
{{- toYaml .Values.server.ingress.tls | nindent 4 }} {{- toYaml .Values.server.ingress.tls | nindent 4 }}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}

View file

@ -493,6 +493,7 @@ server:
enabled: false enabled: false
annotations: {} annotations: {}
labels: {} labels: {}
ingressClassName: ""
## Argo Ingress. ## Argo Ingress.
## Hostnames must be provided if Ingress is enabled. ## Hostnames must be provided if Ingress is enabled.
@ -521,6 +522,7 @@ server:
enabled: false enabled: false
annotations: {} annotations: {}
labels: {} labels: {}
ingressClassName: ""
## Argo Ingress. ## Argo Ingress.
## Hostnames must be provided if Ingress is enabled. ## Hostnames must be provided if Ingress is enabled.