From 5b9989e87b56d9a726cc7909bbb139abc253fb96 Mon Sep 17 00:00:00 2001 From: arayadav Date: Wed, 24 Jun 2026 16:03:21 +0530 Subject: [PATCH] feat: add per-component priorityClassName to ArgoCD CRD (RFE-8802) Expose priorityClassName in the ArgoCD Custom Resource for each core component so cluster administrators can control pod scheduling priority and prevent eviction during resource contention. The following components now support spec..priorityClassName: - spec.controller.priorityClassName (Application Controller StatefulSet) - spec.server.priorityClassName (ArgoCD Server Deployment) - spec.repo.priorityClassName (Repo Server Deployment) - spec.redis.priorityClassName (Redis Deployment) - spec.applicationSet.priorityClassName (ApplicationSet Controller) - spec.sso.dex.priorityClassName (Dex Server Deployment) CRD schemas updated for both v1alpha1 and v1beta1 API versions in config/crd/bases/ and bundle/manifests/. Note: The controller-side implementation (Go type definitions, reconcilers, conversion functions between v1alpha1<->v1beta1, and unit tests) is tracked upstream in argoproj-labs/argocd-operator#2252. The go.mod dependency bump will follow once that upstream change is merged and tagged. Resolves: RFE-8802 Signed-off-by: arayadav --- bundle/manifests/argoproj.io_argocds.yaml | 60 +++++++++++++++++++++++ config/crd/bases/argoproj.io_argocds.yaml | 60 +++++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/bundle/manifests/argoproj.io_argocds.yaml b/bundle/manifests/argoproj.io_argocds.yaml index da1cf638ff0..5179491d10b 100644 --- a/bundle/manifests/argoproj.io_argocds.yaml +++ b/bundle/manifests/argoproj.io_argocds.yaml @@ -250,6 +250,11 @@ spec: by the ApplicationSet controller. Defaults to ArgoCDDefaultLogLevel if not set. Valid options are debug,info, error, and warn. type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for ApplicationSet. @@ -1292,6 +1297,11 @@ spec: operations format: int32 type: integer + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string processors: description: Processors contains the options for the Application Controller processors. @@ -2530,6 +2540,11 @@ spec: image: description: Image is the Redis container image. type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for Redis. @@ -4337,6 +4352,11 @@ spec: description: MountSAToken describes whether you would like to have the Repo server mount the service account token type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string replicas: description: Replicas defines the number of replicas for argocd-repo-server. Value should be greater than or equal to 0. Default is nil. @@ -8379,6 +8399,11 @@ spec: If empty, Prometheus uses the global scrape timeout. type: string type: object + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string replicas: description: Replicas defines the number of replicas for argocd-server. Default is nil. Value should be greater than or equal to 0. @@ -8593,6 +8618,11 @@ spec: description: OpenShiftOAuth enables OpenShift OAuth authentication for the Dex server. type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to the Dex + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for Dex. @@ -9385,6 +9415,11 @@ spec: logformat: description: 'Deprecated: use LogFormat instead.' type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for ApplicationSet. @@ -14114,6 +14149,11 @@ spec: operations format: int32 type: integer + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string processors: description: Processors contains the options for the Application Controller processors. @@ -19032,6 +19072,11 @@ spec: image: description: Image is the Redis container image. type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string remote: description: Remote specifies the remote URL of the Redis container. (optional, by default, a local instance managed by the operator @@ -20858,6 +20903,11 @@ spec: description: MountSAToken describes whether you would like to have the Repo server mount the service account token type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string remote: description: Remote specifies the remote URL of the Repo Server container. (optional, by default, a local instance managed by @@ -26676,6 +26726,11 @@ spec: If empty, Prometheus uses the global scrape timeout. type: string type: object + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string replicas: description: Replicas defines the number of replicas for argocd-server. Default is nil. Value should be greater than or equal to 0. @@ -30536,6 +30591,11 @@ spec: description: OpenShiftOAuth enables OpenShift OAuth authentication for the Dex server. type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to the Dex + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for Dex. diff --git a/config/crd/bases/argoproj.io_argocds.yaml b/config/crd/bases/argoproj.io_argocds.yaml index 09c6829ba7d..d1bfcc97cf4 100644 --- a/config/crd/bases/argoproj.io_argocds.yaml +++ b/config/crd/bases/argoproj.io_argocds.yaml @@ -239,6 +239,11 @@ spec: by the ApplicationSet controller. Defaults to ArgoCDDefaultLogLevel if not set. Valid options are debug,info, error, and warn. type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for ApplicationSet. @@ -1281,6 +1286,11 @@ spec: operations format: int32 type: integer + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string processors: description: Processors contains the options for the Application Controller processors. @@ -2519,6 +2529,11 @@ spec: image: description: Image is the Redis container image. type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for Redis. @@ -4326,6 +4341,11 @@ spec: description: MountSAToken describes whether you would like to have the Repo server mount the service account token type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string replicas: description: Replicas defines the number of replicas for argocd-repo-server. Value should be greater than or equal to 0. Default is nil. @@ -8368,6 +8388,11 @@ spec: If empty, Prometheus uses the global scrape timeout. type: string type: object + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string replicas: description: Replicas defines the number of replicas for argocd-server. Default is nil. Value should be greater than or equal to 0. @@ -8582,6 +8607,11 @@ spec: description: OpenShiftOAuth enables OpenShift OAuth authentication for the Dex server. type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to the Dex + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for Dex. @@ -9374,6 +9404,11 @@ spec: logformat: description: 'Deprecated: use LogFormat instead.' type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for ApplicationSet. @@ -14103,6 +14138,11 @@ spec: operations format: int32 type: integer + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string processors: description: Processors contains the options for the Application Controller processors. @@ -19021,6 +19061,11 @@ spec: image: description: Image is the Redis container image. type: string + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string remote: description: Remote specifies the remote URL of the Redis container. (optional, by default, a local instance managed by the operator @@ -20847,6 +20892,11 @@ spec: description: MountSAToken describes whether you would like to have the Repo server mount the service account token type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string remote: description: Remote specifies the remote URL of the Repo Server container. (optional, by default, a local instance managed by @@ -26665,6 +26715,11 @@ spec: If empty, Prometheus uses the global scrape timeout. type: string type: object + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to this component's + pod. The PriorityClass must already exist in the cluster. + type: string replicas: description: Replicas defines the number of replicas for argocd-server. Default is nil. Value should be greater than or equal to 0. @@ -30525,6 +30580,11 @@ spec: description: OpenShiftOAuth enables OpenShift OAuth authentication for the Dex server. type: boolean + priorityClassName: + description: |- + PriorityClassName is the name of the PriorityClass resource to assign to the Dex + pod. The PriorityClass must already exist in the cluster. + type: string resources: description: Resources defines the Compute Resources required by the container for Dex.