diff --git a/config/v1/tests/schedulers.config.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml b/config/v1/tests/schedulers.config.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml
new file mode 100644
index 00000000000..d25bfd99bec
--- /dev/null
+++ b/config/v1/tests/schedulers.config.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml
@@ -0,0 +1,16 @@
+apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if we don't have this
+name: "Scheduler"
+crdName: schedulers.config.openshift.io
+featureGates:
+- HyperShiftOnlyDynamicResourceAllocation
+tests:
+ onCreate:
+ - name: Should be able to create a minimal Scheduler
+ initial: |
+ apiVersion: config.openshift.io/v1
+ kind: Scheduler
+ spec: {} # No spec is required for a Scheduler
+ expected: |
+ apiVersion: config.openshift.io/v1
+ kind: Scheduler
+ spec: {}
diff --git a/config/v1/types_scheduling.go b/config/v1/types_scheduling.go
index c90d5633f68..028bbd495d9 100644
--- a/config/v1/types_scheduling.go
+++ b/config/v1/types_scheduling.go
@@ -48,7 +48,10 @@ type SchedulerSpec struct {
// +optional
Profile SchedulerProfile `json:"profile,omitempty"`
// profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ // Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ // is enabled by' default in the cluster, this field will be removed in 4.24.
// +openshift:enable:FeatureGate=DynamicResourceAllocation
+ // +openshift:enable:FeatureGate=HyperShiftOnlyDynamicResourceAllocation
// +optional
ProfileCustomizations ProfileCustomizations `json:"profileCustomizations"`
// defaultNodeSelector helps set the cluster-wide default node selector to
diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-Hypershift.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-Hypershift.crd.yaml
new file mode 100644
index 00000000000..98be1b9a031
--- /dev/null
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-Hypershift.crd.yaml
@@ -0,0 +1,143 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/470
+ api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/ibm-cloud-managed: "true"
+ release.openshift.io/bootstrap-required: "true"
+ name: schedulers.config.openshift.io
+spec:
+ group: config.openshift.io
+ names:
+ kind: Scheduler
+ listKind: SchedulerList
+ plural: schedulers
+ singular: scheduler
+ scope: Cluster
+ versions:
+ - name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Scheduler holds cluster-wide config information to run the Kubernetes Scheduler
+ and influence its placement decisions. The canonical name for this config is `cluster`.
+
+ Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: spec holds user settable values for configuration
+ properties:
+ defaultNodeSelector:
+ description: |-
+ defaultNodeSelector helps set the cluster-wide default node selector to
+ restrict pod placement to specific nodes. This is applied to the pods
+ created in all namespaces and creates an intersection with any existing
+ nodeSelectors already set on a pod, additionally constraining that pod's selector.
+ For example,
+ defaultNodeSelector: "type=user-node,region=east" would set nodeSelector
+ field in pod spec to "type=user-node,region=east" to all pods created
+ in all namespaces. Namespaces having project-wide node selectors won't be
+ impacted even if this field is set. This adds an annotation section to
+ the namespace.
+ For example, if a new namespace is created with
+ node-selector='type=user-node,region=east',
+ the annotation openshift.io/node-selector: type=user-node,region=east
+ gets added to the project. When the openshift.io/node-selector annotation
+ is set on the project the value is used in preference to the value we are setting
+ for defaultNodeSelector field.
+ For instance,
+ openshift.io/node-selector: "type=user-node,region=west" means
+ that the default of "type=user-node,region=east" set in defaultNodeSelector
+ would not be applied.
+ type: string
+ mastersSchedulable:
+ description: |-
+ mastersSchedulable allows masters nodes to be schedulable. When this flag is
+ turned on, all the master nodes in the cluster will be made schedulable,
+ so that workload pods can run on them. The default value for this field is false,
+ meaning none of the master nodes are schedulable.
+ Important Note: Once the workload pods start running on the master nodes,
+ extreme care must be taken to ensure that cluster-critical control plane components
+ are not impacted.
+ Please turn on this field after doing due diligence.
+ type: boolean
+ policy:
+ description: |-
+ DEPRECATED: the scheduler Policy API has been deprecated and will be removed in a future release.
+ policy is a reference to a ConfigMap containing scheduler policy which has
+ user specified predicates and priorities. If this ConfigMap is not available
+ scheduler will default to use DefaultAlgorithmProvider.
+ The namespace for this configmap is openshift-config.
+ properties:
+ name:
+ description: name is the metadata.name of the referenced config
+ map
+ type: string
+ required:
+ - name
+ type: object
+ profile:
+ description: |-
+ profile sets which scheduling profile should be set in order to configure scheduling
+ decisions for new pods.
+
+ Valid values are "LowNodeUtilization", "HighNodeUtilization", "NoScoring"
+ Defaults to "LowNodeUtilization"
+ enum:
+ - ""
+ - LowNodeUtilization
+ - HighNodeUtilization
+ - NoScoring
+ type: string
+ profileCustomizations:
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
+ properties:
+ dynamicResourceAllocation:
+ description: |-
+ dynamicResourceAllocation allows to enable or disable dynamic resource allocation within the scheduler.
+ Dynamic resource allocation is an API for requesting and sharing resources between pods and containers inside a pod.
+ Third-party resource drivers are responsible for tracking and allocating resources.
+ Different kinds of resources support arbitrary parameters for defining requirements and initialization.
+ Valid values are Enabled, Disabled and omitted.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default,
+ which is subject to change over time.
+ The current default is Disabled.
+ enum:
+ - ""
+ - Enabled
+ - Disabled
+ type: string
+ type: object
+ type: object
+ status:
+ description: status holds observed values from the cluster. They may not
+ be overridden.
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-CustomNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-CustomNoUpgrade.crd.yaml
similarity index 95%
rename from config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-CustomNoUpgrade.crd.yaml
rename to config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-CustomNoUpgrade.crd.yaml
index d058dd7dccc..1f70a2b096e 100644
--- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-CustomNoUpgrade.crd.yaml
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-CustomNoUpgrade.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: CustomNoUpgrade
@@ -110,8 +109,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-Default.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-Default.crd.yaml
similarity index 99%
rename from config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-Default.crd.yaml
rename to config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-Default.crd.yaml
index 37abbe9a533..5110cb86e70 100644
--- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-Default.crd.yaml
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-Default.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: Default
diff --git a/payload-manifests/crds/0000_10_config-operator_01_schedulers-DevPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
similarity index 95%
rename from payload-manifests/crds/0000_10_config-operator_01_schedulers-DevPreviewNoUpgrade.crd.yaml
rename to config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
index a62eb09733f..e57a58f012c 100644
--- a/payload-manifests/crds/0000_10_config-operator_01_schedulers-DevPreviewNoUpgrade.crd.yaml
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: DevPreviewNoUpgrade
@@ -110,8 +109,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/payload-manifests/crds/0000_10_config-operator_01_schedulers-TechPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
similarity index 95%
rename from payload-manifests/crds/0000_10_config-operator_01_schedulers-TechPreviewNoUpgrade.crd.yaml
rename to config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
index 24fbbb3021f..534bf58f107 100644
--- a/payload-manifests/crds/0000_10_config-operator_01_schedulers-TechPreviewNoUpgrade.crd.yaml
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: TechPreviewNoUpgrade
@@ -110,8 +109,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/config/v1/zz_generated.featuregated-crd-manifests.yaml b/config/v1/zz_generated.featuregated-crd-manifests.yaml
index a1d37f65d00..693f1b5df30 100644
--- a/config/v1/zz_generated.featuregated-crd-manifests.yaml
+++ b/config/v1/zz_generated.featuregated-crd-manifests.yaml
@@ -576,6 +576,7 @@ schedulers.config.openshift.io:
Category: ""
FeatureGates:
- DynamicResourceAllocation
+ - HyperShiftOnlyDynamicResourceAllocation
FilenameOperatorName: config-operator
FilenameOperatorOrdering: "01"
FilenameRunLevel: "0000_10"
diff --git a/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/DynamicResourceAllocation.yaml b/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/DynamicResourceAllocation.yaml
index 405806d2e96..969cb96b661 100644
--- a/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/DynamicResourceAllocation.yaml
+++ b/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/DynamicResourceAllocation.yaml
@@ -110,8 +110,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml b/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml
new file mode 100644
index 00000000000..5b396f185c9
--- /dev/null
+++ b/config/v1/zz_generated.featuregated-crd-manifests/schedulers.config.openshift.io/HyperShiftOnlyDynamicResourceAllocation.yaml
@@ -0,0 +1,145 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/470
+ api.openshift.io/filename-cvo-runlevel: "0000_10"
+ api.openshift.io/filename-operator: config-operator
+ api.openshift.io/filename-ordering: "01"
+ feature-gate.release.openshift.io/HyperShiftOnlyDynamicResourceAllocation: "true"
+ release.openshift.io/bootstrap-required: "true"
+ name: schedulers.config.openshift.io
+spec:
+ group: config.openshift.io
+ names:
+ kind: Scheduler
+ listKind: SchedulerList
+ plural: schedulers
+ singular: scheduler
+ scope: Cluster
+ versions:
+ - name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Scheduler holds cluster-wide config information to run the Kubernetes Scheduler
+ and influence its placement decisions. The canonical name for this config is `cluster`.
+
+ Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: spec holds user settable values for configuration
+ properties:
+ defaultNodeSelector:
+ description: |-
+ defaultNodeSelector helps set the cluster-wide default node selector to
+ restrict pod placement to specific nodes. This is applied to the pods
+ created in all namespaces and creates an intersection with any existing
+ nodeSelectors already set on a pod, additionally constraining that pod's selector.
+ For example,
+ defaultNodeSelector: "type=user-node,region=east" would set nodeSelector
+ field in pod spec to "type=user-node,region=east" to all pods created
+ in all namespaces. Namespaces having project-wide node selectors won't be
+ impacted even if this field is set. This adds an annotation section to
+ the namespace.
+ For example, if a new namespace is created with
+ node-selector='type=user-node,region=east',
+ the annotation openshift.io/node-selector: type=user-node,region=east
+ gets added to the project. When the openshift.io/node-selector annotation
+ is set on the project the value is used in preference to the value we are setting
+ for defaultNodeSelector field.
+ For instance,
+ openshift.io/node-selector: "type=user-node,region=west" means
+ that the default of "type=user-node,region=east" set in defaultNodeSelector
+ would not be applied.
+ type: string
+ mastersSchedulable:
+ description: |-
+ mastersSchedulable allows masters nodes to be schedulable. When this flag is
+ turned on, all the master nodes in the cluster will be made schedulable,
+ so that workload pods can run on them. The default value for this field is false,
+ meaning none of the master nodes are schedulable.
+ Important Note: Once the workload pods start running on the master nodes,
+ extreme care must be taken to ensure that cluster-critical control plane components
+ are not impacted.
+ Please turn on this field after doing due diligence.
+ type: boolean
+ policy:
+ description: |-
+ DEPRECATED: the scheduler Policy API has been deprecated and will be removed in a future release.
+ policy is a reference to a ConfigMap containing scheduler policy which has
+ user specified predicates and priorities. If this ConfigMap is not available
+ scheduler will default to use DefaultAlgorithmProvider.
+ The namespace for this configmap is openshift-config.
+ properties:
+ name:
+ description: name is the metadata.name of the referenced config
+ map
+ type: string
+ required:
+ - name
+ type: object
+ profile:
+ description: |-
+ profile sets which scheduling profile should be set in order to configure scheduling
+ decisions for new pods.
+
+ Valid values are "LowNodeUtilization", "HighNodeUtilization", "NoScoring"
+ Defaults to "LowNodeUtilization"
+ enum:
+ - ""
+ - LowNodeUtilization
+ - HighNodeUtilization
+ - NoScoring
+ type: string
+ profileCustomizations:
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
+ properties:
+ dynamicResourceAllocation:
+ description: |-
+ dynamicResourceAllocation allows to enable or disable dynamic resource allocation within the scheduler.
+ Dynamic resource allocation is an API for requesting and sharing resources between pods and containers inside a pod.
+ Third-party resource drivers are responsible for tracking and allocating resources.
+ Different kinds of resources support arbitrary parameters for defining requirements and initialization.
+ Valid values are Enabled, Disabled and omitted.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default,
+ which is subject to change over time.
+ The current default is Disabled.
+ enum:
+ - ""
+ - Enabled
+ - Disabled
+ type: string
+ type: object
+ type: object
+ status:
+ description: status holds observed values from the cluster. They may not
+ be overridden.
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/config/v1/zz_generated.swagger_doc_generated.go b/config/v1/zz_generated.swagger_doc_generated.go
index b9d0799fbdf..2e8e05fef77 100644
--- a/config/v1/zz_generated.swagger_doc_generated.go
+++ b/config/v1/zz_generated.swagger_doc_generated.go
@@ -2901,7 +2901,7 @@ func (SchedulerList) SwaggerDoc() map[string]string {
var map_SchedulerSpec = map[string]string{
"policy": "DEPRECATED: the scheduler Policy API has been deprecated and will be removed in a future release. policy is a reference to a ConfigMap containing scheduler policy which has user specified predicates and priorities. If this ConfigMap is not available scheduler will default to use DefaultAlgorithmProvider. The namespace for this configmap is openshift-config.",
"profile": "profile sets which scheduling profile should be set in order to configure scheduling decisions for new pods.\n\nValid values are \"LowNodeUtilization\", \"HighNodeUtilization\", \"NoScoring\" Defaults to \"LowNodeUtilization\"",
- "profileCustomizations": "profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.",
+ "profileCustomizations": "profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles. Deprecated: no longer needed, since DRA is GA starting with 4.21, and is enabled by' default in the cluster, this field will be removed in 4.24.",
"defaultNodeSelector": "defaultNodeSelector helps set the cluster-wide default node selector to restrict pod placement to specific nodes. This is applied to the pods created in all namespaces and creates an intersection with any existing nodeSelectors already set on a pod, additionally constraining that pod's selector. For example, defaultNodeSelector: \"type=user-node,region=east\" would set nodeSelector field in pod spec to \"type=user-node,region=east\" to all pods created in all namespaces. Namespaces having project-wide node selectors won't be impacted even if this field is set. This adds an annotation section to the namespace. For example, if a new namespace is created with node-selector='type=user-node,region=east', the annotation openshift.io/node-selector: type=user-node,region=east gets added to the project. When the openshift.io/node-selector annotation is set on the project the value is used in preference to the value we are setting for defaultNodeSelector field. For instance, openshift.io/node-selector: \"type=user-node,region=west\" means that the default of \"type=user-node,region=east\" set in defaultNodeSelector would not be applied.",
"mastersSchedulable": "mastersSchedulable allows masters nodes to be schedulable. When this flag is turned on, all the master nodes in the cluster will be made schedulable, so that workload pods can run on them. The default value for this field is false, meaning none of the master nodes are schedulable. Important Note: Once the workload pods start running on the master nodes, extreme care must be taken to ensure that cluster-critical control plane components are not impacted. Please turn on this field after doing due diligence.",
}
diff --git a/features.md b/features.md
index e74ac0734bf..42ce35cc6b0 100644
--- a/features.md
+++ b/features.md
@@ -15,6 +15,7 @@
| NewOLMPreflightPermissionChecks| | | | Enabled | | Enabled |
| NoRegistryClusterInstall| | | | Enabled | | Enabled |
| ProvisioningRequestAvailable| | | Enabled | Enabled | | |
+| HyperShiftOnlyDynamicResourceAllocation| Enabled | | Enabled | | Enabled | |
| NewOLM| | Enabled | | Enabled | | Enabled |
| NewOLMWebhookProviderOpenshiftServiceCA| | Enabled | | Enabled | | Enabled |
| AWSClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 4dbc7fa02fc..a8873114ed1 100644
--- a/features/features.go
+++ b/features/features.go
@@ -939,4 +939,12 @@ var (
enhancementPR("https://github.com/openshift/enhancements/pull/1752").
enableIn(configv1.DevPreviewNoUpgrade).
mustRegister()
+
+ FeatureGateHyperShiftOnlyDynamicResourceAllocation = newFeatureGate("HyperShiftOnlyDynamicResourceAllocation").
+ reportProblemsToJiraComponent("hypershift").
+ contactPerson("csrwng").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/kubernetes/enhancements/issues/4381").
+ enableForClusterProfile(Hypershift, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade, configv1.Default).
+ mustRegister()
)
diff --git a/openapi/generated_openapi/zz_generated.openapi.go b/openapi/generated_openapi/zz_generated.openapi.go
index 37eebca97fb..c96e0838210 100644
--- a/openapi/generated_openapi/zz_generated.openapi.go
+++ b/openapi/generated_openapi/zz_generated.openapi.go
@@ -19977,7 +19977,7 @@ func schema_openshift_api_config_v1_SchedulerSpec(ref common.ReferenceCallback)
},
"profileCustomizations": {
SchemaProps: spec.SchemaProps{
- Description: "profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.",
+ Description: "profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles. Deprecated: no longer needed, since DRA is GA starting with 4.21, and is enabled by' default in the cluster, this field will be removed in 4.24.",
Default: map[string]interface{}{},
Ref: ref("github.com/openshift/api/config/v1.ProfileCustomizations"),
},
diff --git a/payload-manifests/crds/0000_10_config-operator_01_schedulers-Hypershift.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_schedulers-Hypershift.crd.yaml
new file mode 100644
index 00000000000..98be1b9a031
--- /dev/null
+++ b/payload-manifests/crds/0000_10_config-operator_01_schedulers-Hypershift.crd.yaml
@@ -0,0 +1,143 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/470
+ api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/ibm-cloud-managed: "true"
+ release.openshift.io/bootstrap-required: "true"
+ name: schedulers.config.openshift.io
+spec:
+ group: config.openshift.io
+ names:
+ kind: Scheduler
+ listKind: SchedulerList
+ plural: schedulers
+ singular: scheduler
+ scope: Cluster
+ versions:
+ - name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Scheduler holds cluster-wide config information to run the Kubernetes Scheduler
+ and influence its placement decisions. The canonical name for this config is `cluster`.
+
+ Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: spec holds user settable values for configuration
+ properties:
+ defaultNodeSelector:
+ description: |-
+ defaultNodeSelector helps set the cluster-wide default node selector to
+ restrict pod placement to specific nodes. This is applied to the pods
+ created in all namespaces and creates an intersection with any existing
+ nodeSelectors already set on a pod, additionally constraining that pod's selector.
+ For example,
+ defaultNodeSelector: "type=user-node,region=east" would set nodeSelector
+ field in pod spec to "type=user-node,region=east" to all pods created
+ in all namespaces. Namespaces having project-wide node selectors won't be
+ impacted even if this field is set. This adds an annotation section to
+ the namespace.
+ For example, if a new namespace is created with
+ node-selector='type=user-node,region=east',
+ the annotation openshift.io/node-selector: type=user-node,region=east
+ gets added to the project. When the openshift.io/node-selector annotation
+ is set on the project the value is used in preference to the value we are setting
+ for defaultNodeSelector field.
+ For instance,
+ openshift.io/node-selector: "type=user-node,region=west" means
+ that the default of "type=user-node,region=east" set in defaultNodeSelector
+ would not be applied.
+ type: string
+ mastersSchedulable:
+ description: |-
+ mastersSchedulable allows masters nodes to be schedulable. When this flag is
+ turned on, all the master nodes in the cluster will be made schedulable,
+ so that workload pods can run on them. The default value for this field is false,
+ meaning none of the master nodes are schedulable.
+ Important Note: Once the workload pods start running on the master nodes,
+ extreme care must be taken to ensure that cluster-critical control plane components
+ are not impacted.
+ Please turn on this field after doing due diligence.
+ type: boolean
+ policy:
+ description: |-
+ DEPRECATED: the scheduler Policy API has been deprecated and will be removed in a future release.
+ policy is a reference to a ConfigMap containing scheduler policy which has
+ user specified predicates and priorities. If this ConfigMap is not available
+ scheduler will default to use DefaultAlgorithmProvider.
+ The namespace for this configmap is openshift-config.
+ properties:
+ name:
+ description: name is the metadata.name of the referenced config
+ map
+ type: string
+ required:
+ - name
+ type: object
+ profile:
+ description: |-
+ profile sets which scheduling profile should be set in order to configure scheduling
+ decisions for new pods.
+
+ Valid values are "LowNodeUtilization", "HighNodeUtilization", "NoScoring"
+ Defaults to "LowNodeUtilization"
+ enum:
+ - ""
+ - LowNodeUtilization
+ - HighNodeUtilization
+ - NoScoring
+ type: string
+ profileCustomizations:
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
+ properties:
+ dynamicResourceAllocation:
+ description: |-
+ dynamicResourceAllocation allows to enable or disable dynamic resource allocation within the scheduler.
+ Dynamic resource allocation is an API for requesting and sharing resources between pods and containers inside a pod.
+ Third-party resource drivers are responsible for tracking and allocating resources.
+ Different kinds of resources support arbitrary parameters for defining requirements and initialization.
+ Valid values are Enabled, Disabled and omitted.
+ When omitted, this means no opinion and the platform is left to choose a reasonable default,
+ which is subject to change over time.
+ The current default is Disabled.
+ enum:
+ - ""
+ - Enabled
+ - Disabled
+ type: string
+ type: object
+ type: object
+ status:
+ description: status holds observed values from the cluster. They may not
+ be overridden.
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/payload-manifests/crds/0000_10_config-operator_01_schedulers-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-CustomNoUpgrade.crd.yaml
similarity index 95%
rename from payload-manifests/crds/0000_10_config-operator_01_schedulers-CustomNoUpgrade.crd.yaml
rename to payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-CustomNoUpgrade.crd.yaml
index d058dd7dccc..1f70a2b096e 100644
--- a/payload-manifests/crds/0000_10_config-operator_01_schedulers-CustomNoUpgrade.crd.yaml
+++ b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-CustomNoUpgrade.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: CustomNoUpgrade
@@ -110,8 +109,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/payload-manifests/crds/0000_10_config-operator_01_schedulers-Default.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-Default.crd.yaml
similarity index 99%
rename from payload-manifests/crds/0000_10_config-operator_01_schedulers-Default.crd.yaml
rename to payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-Default.crd.yaml
index 37abbe9a533..5110cb86e70 100644
--- a/payload-manifests/crds/0000_10_config-operator_01_schedulers-Default.crd.yaml
+++ b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-Default.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: Default
diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
similarity index 95%
rename from config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-DevPreviewNoUpgrade.crd.yaml
rename to payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
index a62eb09733f..e57a58f012c 100644
--- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-DevPreviewNoUpgrade.crd.yaml
+++ b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-DevPreviewNoUpgrade.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: DevPreviewNoUpgrade
@@ -110,8 +109,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
similarity index 95%
rename from config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-TechPreviewNoUpgrade.crd.yaml
rename to payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
index 24fbbb3021f..534bf58f107 100644
--- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_schedulers-TechPreviewNoUpgrade.crd.yaml
+++ b/payload-manifests/crds/0000_10_config-operator_01_schedulers-SelfManagedHA-TechPreviewNoUpgrade.crd.yaml
@@ -4,7 +4,6 @@ metadata:
annotations:
api-approved.openshift.io: https://github.com/openshift/api/pull/470
api.openshift.io/merged-by-featuregates: "true"
- include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/bootstrap-required: "true"
release.openshift.io/feature-set: TechPreviewNoUpgrade
@@ -110,8 +109,10 @@ spec:
- NoScoring
type: string
profileCustomizations:
- description: profileCustomizations contains configuration for modifying
- the default behavior of existing scheduler profiles.
+ description: |-
+ profileCustomizations contains configuration for modifying the default behavior of existing scheduler profiles.
+ Deprecated: no longer needed, since DRA is GA starting with 4.21, and
+ is enabled by' default in the cluster, this field will be removed in 4.24.
properties:
dynamicResourceAllocation:
description: |-
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
index c283779381d..5fdb6fd0155 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
@@ -275,6 +275,9 @@
{
"name": "HighlyAvailableArbiter"
},
+ {
+ "name": "HyperShiftOnlyDynamicResourceAllocation"
+ },
{
"name": "ImageVolume"
},
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml
index 0c239822665..7b17736bcce 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml
@@ -193,6 +193,9 @@
{
"name": "HighlyAvailableArbiter"
},
+ {
+ "name": "HyperShiftOnlyDynamicResourceAllocation"
+ },
{
"name": "ImageModeStatusReporting"
},
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml
index f74b13b4f52..82103435201 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml
@@ -199,6 +199,9 @@
{
"name": "HighlyAvailableArbiter"
},
+ {
+ "name": "HyperShiftOnlyDynamicResourceAllocation"
+ },
{
"name": "ImageModeStatusReporting"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
index f1a756c7961..b619bdb03bb 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
@@ -120,6 +120,9 @@
{
"name": "GCPDualStackInstall"
},
+ {
+ "name": "HyperShiftOnlyDynamicResourceAllocation"
+ },
{
"name": "ImageModeStatusReporting"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml
index 2bdafb6cf95..3f275aa6941 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml
@@ -20,6 +20,9 @@
{
"name": "EventedPLEG"
},
+ {
+ "name": "HyperShiftOnlyDynamicResourceAllocation"
+ },
{
"name": "MachineAPIOperatorDisableMachineHealthCheckController"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml
index 1a1378733f4..69a60f0a91c 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml
@@ -29,6 +29,9 @@
{
"name": "ExternalSnapshotMetadata"
},
+ {
+ "name": "HyperShiftOnlyDynamicResourceAllocation"
+ },
{
"name": "IngressControllerDynamicConfigurationManager"
},