From 0d9ef7c52d0fa27c67189324150d3f4ee7fb21e5 Mon Sep 17 00:00:00 2001 From: Benjamin Sykes Date: Tue, 28 Nov 2023 15:02:07 -0500 Subject: [PATCH] feat(argocd-operator): add support for tolerations + nodeSelector + affinity to helm chart (#457) * feat(argocd-operator): added support for tolerations, nodeSelectors and affinities * docs(argocd-operator): update README docs * docs(argocd-operator/values): added descriptions for values * docs(cleanup): remove some duplication --- stable/argocd-operator/Chart.yaml | 5 +-- stable/argocd-operator/README.md | 43 +++++++------------ .../argocd-operator/templates/operator.yaml | 18 ++++++-- stable/argocd-operator/templates/role.yaml | 1 - stable/argocd-operator/values.yaml | 19 +++++++- 5 files changed, 50 insertions(+), 36 deletions(-) diff --git a/stable/argocd-operator/Chart.yaml b/stable/argocd-operator/Chart.yaml index 24ed1361..59f13f03 100644 --- a/stable/argocd-operator/Chart.yaml +++ b/stable/argocd-operator/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 -description: A Helm chart for ArgoCD Operator +description: A Helm chart that deploys ArgoCD Operator. The ArgoCD Operator manages ArgoCD installation and components name: argocd-operator -version: 0.4.1 +version: 0.5.0 appVersion: v0.4.0 type: application keywords: @@ -17,4 +17,3 @@ maintainers: email: william.hearn@canada.ca - name: zachomedia email: zachary.seguin@canada.ca -engine: gotpl diff --git a/stable/argocd-operator/README.md b/stable/argocd-operator/README.md index 38f23b9a..681774c6 100644 --- a/stable/argocd-operator/README.md +++ b/stable/argocd-operator/README.md @@ -1,8 +1,8 @@ # argocd-operator -![Version: 0.4.0](https://img.shields.io/badge/Version-0.4.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.4.0](https://img.shields.io/badge/AppVersion-v0.4.0-informational?style=flat-square) +![Version: 0.5.0](https://img.shields.io/badge/Version-0.5.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.4.0](https://img.shields.io/badge/AppVersion-v0.4.0-informational?style=flat-square) -A Helm chart for ArgoCD Operator +A Helm chart that deploys ArgoCD Operator. The ArgoCD Operator manages ArgoCD installation and components **Homepage:** @@ -17,8 +17,6 @@ A Helm chart for ArgoCD Operator * - - ## Prerequisites - Kubernetes 1.20+ @@ -28,26 +26,17 @@ A Helm chart for ArgoCD Operator | Key | Type | Default | Description | |-----|------|---------|-------------| -| operator.clusterDomain | string | `""` | | -| operator.image.pullPolicy | string | `"IfNotPresent"` | | -| operator.image.repository | string | `"quay.io/argoprojlabs/argocd-operator"` | | -| operator.image.tag | string | `"v0.4.0"` | | -| operator.imagePullSecrets | list | `[]` | | -| operator.nsClusterConfig | string | `""` | | -| operator.nsToWatch | string | `"argo-cd-system"` | | -| operator.podAnnotations | object | `{}` | | -| operator.podLabels | object | `{}` | | -| operator.replicaCount | int | `1` | | -| operator.resources.requests.cpu | string | `"200m"` | | -| operator.resources.requests.ephemeral-storage | string | `"500Mi"` | | -| operator.resources.requests.memory | string | `"256Mi"` | | -| operator.securityContext.allowPrivilegeEscalation | bool | `false` | | -| operator.securityContext.capabilities.drop[0] | string | `"ALL"` | | -| operator.securityContext.fsGroup | int | `1000` | | -| operator.securityContext.readOnlyRootFilesystem | bool | `true` | | -| operator.securityContext.runAsGroup | int | `1000` | | -| operator.securityContext.runAsNonRoot | bool | `true` | | -| operator.securityContext.runAsUser | int | `1000` | | - ----------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) +| operator.affinity | object | `{}` | A more expressive way to constrain ArgoCD controller Pods to specific nodes | +| operator.extraEnv | list | `[]` | A list of environment objects used to inject additional environment variables into the controller pod | +| operator.image | object | `{"pullPolicy":"IfNotPresent","repository":"quay.io/argoprojlabs/argocd-operator","tag":"v0.4.0"}` | Configures the image to use for the argocd-operator pod(s) | +| operator.imagePullSecrets | list | `[]` | One or many secret(s), that store Docker credentials that are used for accessing a private image registry | +| operator.nodeSelector | object | `{}` | Constrain ArgoCD controller Pods to be scheduled to nodes with specific labels | +| operator.nsClusterConfig | string | `""` | List of namespaces of cluster-scoped Argo CD instances | +| operator.nsToWatch | string | `"argo-cd-system"` | Defines which namespace for the operator to watch for deployment of related argocd components | +| operator.podAnnotations | object | `{}` | Annotations to apply to the argocd controller pods that are deployed as part of this release | +| operator.podLabels | object | `{}` | Labels to apply to the argocd controller pods that are deployed as part of this release | +| operator.replicaCount | int | `1` | The number of replicas of the ArgoCD controller | +| operator.resources | object | `{"requests":{"cpu":"200m","ephemeral-storage":"500Mi","memory":"256Mi"}}` | Resource requests and limits to define the allowed compute and storage for each deployment | +| operator.securityContext | object | `{"fsGroup":1000,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000}` | Defines privilege and access control settings for the ArgoCD controller Pod or Container | +| operator.tolerations | list | `[]` | A list of node taints that this deployment should tolerate | + diff --git a/stable/argocd-operator/templates/operator.yaml b/stable/argocd-operator/templates/operator.yaml index edaa1be3..6ba57f60 100644 --- a/stable/argocd-operator/templates/operator.yaml +++ b/stable/argocd-operator/templates/operator.yaml @@ -1,7 +1,7 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: "argocd-operator" + name: {{ .Release.Name }} namespace: {{ .Release.Namespace }} labels: {{- include "argocd-operator.labels" . | nindent 4 }} @@ -43,8 +43,20 @@ spec: fieldPath: metadata.name - name: OPERATOR_NAME value: "argocd-operator" - {{- if .Values.operator.extraEnv }} - {{- toYaml .Values.operator.extraEnv | nindent 12 }} + {{- with .Values.operator.extraEnv }} + {{- toYaml . | nindent 12 }} {{- end }} resources: {{- toYaml .Values.operator.resources | nindent 12 }} + {{- with .Values.operator.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.operator.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.operator.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/stable/argocd-operator/templates/role.yaml b/stable/argocd-operator/templates/role.yaml index 6dce068f..546b9f9e 100644 --- a/stable/argocd-operator/templates/role.yaml +++ b/stable/argocd-operator/templates/role.yaml @@ -1,7 +1,6 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - creationTimestamp: null name: manager-role rules: - apiGroups: diff --git a/stable/argocd-operator/values.yaml b/stable/argocd-operator/values.yaml index a4613219..e5c6d0e1 100644 --- a/stable/argocd-operator/values.yaml +++ b/stable/argocd-operator/values.yaml @@ -1,25 +1,40 @@ # Default values for argocd-operator. operator: - clusterDomain: "" + # -- Defines which namespace for the operator to watch for deployment of related argocd components nsToWatch: "argo-cd-system" + # -- List of namespaces of cluster-scoped Argo CD instances nsClusterConfig: "" + # -- Configures the image to use for the argocd-operator pod(s) image: repository: quay.io/argoprojlabs/argocd-operator tag: v0.4.0 pullPolicy: IfNotPresent + # -- One or many secret(s), that store Docker credentials that are used for accessing a private image registry imagePullSecrets: [] + # -- Annotations to apply to the argocd controller pods that are deployed as part of this release podAnnotations: {} + # -- Labels to apply to the argocd controller pods that are deployed as part of this release podLabels: {} - # extraEnv: [] + # -- A list of environment objects used to inject additional environment variables into the controller pod + extraEnv: [] + # -- The number of replicas of the ArgoCD controller replicaCount: 1 + # -- Defines privilege and access control settings for the ArgoCD controller Pod or Container securityContext: runAsUser: 1000 runAsGroup: 1000 runAsNonRoot: true fsGroup: 1000 + # -- Resource requests and limits to define the allowed compute and storage for each deployment resources: requests: cpu: 200m memory: 256Mi ephemeral-storage: 500Mi + # -- Constrain ArgoCD controller Pods to be scheduled to nodes with specific labels + nodeSelector: {} + # -- A list of node taints that this deployment should tolerate + tolerations: [] + # -- A more expressive way to constrain ArgoCD controller Pods to specific nodes + affinity: {}