From 79114c51226cb60150f1e32b2793f49699ef99b3 Mon Sep 17 00:00:00 2001 From: robertlindner Date: Sun, 16 Jan 2022 06:23:56 +0100 Subject: [PATCH] feat(argo-cd ingress): support google managed certificates for gce ingress (#1088) * Add support for Google ManagedCertificates Signed-off-by: Robert Lindner * Add support for Google FrontendConfigs I.e. for adding a http to https redirect on the load balancer. Signed-off-by: Robert Lindner * Apply changes from code review Signed-off-by: Marco Kilchhofer Co-authored-by: Marco Kilchhofer --- charts/argo-cd/Chart.yaml | 5 +++-- charts/argo-cd/README.md | 5 +++++ charts/argo-cd/README.md.gotmpl | 1 + .../argocd-server/frontendconfig.yaml | 10 +++++++++ .../argocd-server/managedCertificate.yaml | 11 ++++++++++ charts/argo-cd/values.yaml | 21 +++++++++++++++++++ 6 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 charts/argo-cd/templates/argocd-server/frontendconfig.yaml create mode 100644 charts/argo-cd/templates/argocd-server/managedCertificate.yaml diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index acf3dc34..d4873d92 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: v2.2.2 description: A Helm chart for ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 3.29.5 +version: 3.30.0 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png keywords: @@ -21,4 +21,5 @@ dependencies: condition: redis-ha.enabled annotations: artifacthub.io/changes: | - - "[Changed]: Update to app version 2.2.2" + - "[Added]: Add support for Google ManagedCertificate on GKE + - "[Added]: Add support for Google FrontendConfig on GKE diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index caece20b..f340e2a3 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -374,6 +374,10 @@ NAME: my-release |-----|------|---------|-------------| | server.GKEbackendConfig.enabled | bool | `false` | Enable BackendConfig custom resource for Google Kubernetes Engine | | server.GKEbackendConfig.spec | object | `{}` | [BackendConfigSpec] | +| server.GKEfrontendConfig.enabled | bool | `false` | Enable FrontConfig custom resource for Google Kubernetes Engine | +| server.GKEfrontendConfig.spec | object | `{}` | [FrontendConfigSpec] | +| server.GKEmanagedCertificate.domains | list | `["argocd.example.com"]` | Domains for the Google Managed Certificate | +| server.GKEmanagedCertificate.enabled | bool | `false` | Enable ManagedCertificate custom resource for Google Kubernetes Engine. | | server.affinity | object | `{}` | Assign custom [affinity] rules to the deployment | | server.autoscaling.enabled | bool | `false` | Enable Horizontal Pod Autoscaler ([HPA]) for the Argo CD server | | server.autoscaling.maxReplicas | int | `5` | Maximum number of replicas for the Argo CD server [HPA] | @@ -651,6 +655,7 @@ Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/ [BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom [CSS styles]: https://argo-cd.readthedocs.io/en/stable/operator-manual/custom-styles/ [external cluster credentials]: https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/#clusters +[FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters [General Argo CD configuration]: https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/#repositories [gRPC-ingress]: https://argoproj.github.io/argo-cd/operator-manual/ingress/ [HPA]: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ diff --git a/charts/argo-cd/README.md.gotmpl b/charts/argo-cd/README.md.gotmpl index 2492ccea..9cd57fe5 100644 --- a/charts/argo-cd/README.md.gotmpl +++ b/charts/argo-cd/README.md.gotmpl @@ -285,6 +285,7 @@ Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/ [BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom [CSS styles]: https://argo-cd.readthedocs.io/en/stable/operator-manual/custom-styles/ [external cluster credentials]: https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/#clusters +[FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters [General Argo CD configuration]: https://argoproj.github.io/argo-cd/operator-manual/declarative-setup/#repositories [gRPC-ingress]: https://argoproj.github.io/argo-cd/operator-manual/ingress/ [HPA]: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ diff --git a/charts/argo-cd/templates/argocd-server/frontendconfig.yaml b/charts/argo-cd/templates/argocd-server/frontendconfig.yaml new file mode 100644 index 00000000..46fc43a9 --- /dev/null +++ b/charts/argo-cd/templates/argocd-server/frontendconfig.yaml @@ -0,0 +1,10 @@ +{{- if .Values.server.GKEfrontendConfig.enabled }} +apiVersion: networking.gke.io/v1beta1 +kind: FrontendConfig +metadata: + name: {{ template "argo-cd.server.fullname" . }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.server.name "name" .Values.server.name) | nindent 4 }} +spec: + {{- toYaml .Values.server.GKEfrontendConfig.spec | nindent 2 }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-server/managedCertificate.yaml b/charts/argo-cd/templates/argocd-server/managedCertificate.yaml new file mode 100644 index 00000000..81e1e710 --- /dev/null +++ b/charts/argo-cd/templates/argocd-server/managedCertificate.yaml @@ -0,0 +1,11 @@ +{{- if .Values.server.GKEmanagedCertificate.enabled }} +apiVersion: networking.gke.io/v1 +kind: ManagedCertificate +metadata: + name: {{ template "argo-cd.server.fullname" . }} +spec: + domains: + {{- with .Values.server.GKEmanagedCertificate.domains }} + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index 58e2d52c..8042e141 100755 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -1233,6 +1233,27 @@ server: # oauthclientCredentials: # secretName: argocd-secret + ## Create a Google Managed Certificate for use with the GKE Ingress Controller + ## https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs + GKEmanagedCertificate: + # -- Enable ManagedCertificate custom resource for Google Kubernetes Engine. + enabled: false + # -- Domains for the Google Managed Certificate + domains: + - argocd.example.com + + ## Create a Google FrontendConfig Custom Resource, for use with the GKE Ingress Controller + ## https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters + GKEfrontendConfig: + # -- Enable FrontConfig custom resource for Google Kubernetes Engine + enabled: false + # -- [FrontendConfigSpec] + spec: {} + # spec: + # redirectToHttps: + # enabled: true + # responseCodeName: RESPONSE_CODE + # -- Additional containers to be added to the server pod ## See https://github.com/lemonldap-ng-controller/lemonldap-ng-controller as example. extraContainers: []