diff --git a/features.md b/features.md
index 750b68d62fc..a21875c029e 100644
--- a/features.md
+++ b/features.md
@@ -20,7 +20,6 @@
| NewOLMConfigAPI| | | | Enabled | | | | Enabled |
| NewOLMOwnSingleNamespace| | | | Enabled | | | | Enabled |
| NewOLMPreflightPermissionChecks| | | | Enabled | | | | Enabled |
-| NoRegistryClusterInstall| | | | Enabled | | | | Enabled |
| OLMLifecycleAndCompatibility| | | | Enabled | | | | Enabled |
| ProvisioningRequestAvailable| | | Enabled | Enabled | | | | |
| VSphereMultiVCenterDay2| | | Enabled | Enabled | | | | |
@@ -76,6 +75,7 @@
| NewOLM| | Enabled | | Enabled | | Enabled | | Enabled |
| NewOLMWebhookProviderOpenshiftServiceCA| | Enabled | | Enabled | | Enabled | | Enabled |
| NoOverlayMode| | | Enabled | Enabled | | | Enabled | Enabled |
+| NoRegistryClusterInstall| | Enabled | | Enabled | | Enabled | | Enabled |
| NutanixMultiSubnets| | | Enabled | Enabled | | | Enabled | Enabled |
| OSStreams| | | Enabled | Enabled | | | Enabled | Enabled |
| OVNObservability| | | Enabled | Enabled | | | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index c17075aa867..d21db29e354 100644
--- a/features/features.go
+++ b/features/features.go
@@ -457,12 +457,12 @@ var (
mustRegister()
FeatureGateOLMLifecycleAndCompatibility = newFeatureGate("OLMLifecycleAndCompatibility").
- reportProblemsToJiraComponent("olm").
- contactPerson("joelanford").
- productScope(ocpSpecific).
- enhancementPR("https://github.com/openshift/enhancements/pull/1991").
- enable(inClusterProfile(SelfManaged), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
- mustRegister()
+ reportProblemsToJiraComponent("olm").
+ contactPerson("joelanford").
+ productScope(ocpSpecific).
+ enhancementPR("https://github.com/openshift/enhancements/pull/1991").
+ enable(inClusterProfile(SelfManaged), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
+ mustRegister()
FeatureGateInsightsOnDemandDataGather = newFeatureGate("InsightsOnDemandDataGather").
reportProblemsToJiraComponent("insights").
@@ -787,7 +787,7 @@ var (
contactPerson("andfasano").
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1821").
- enable(inClusterProfile(SelfManaged), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
+ enable(inDefault(), inOKD(), inClusterProfile(SelfManaged), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
mustRegister()
FeatureGateAWSClusterHostedDNSInstall = newFeatureGate("AWSClusterHostedDNSInstall").
diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Default.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Hypershift-Default.crd.yaml
similarity index 99%
rename from machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Default.crd.yaml
rename to machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Hypershift-Default.crd.yaml
index 85c77750465..69920b355ad 100644
--- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Default.crd.yaml
+++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Hypershift-Default.crd.yaml
@@ -5,7 +5,6 @@ metadata:
api-approved.openshift.io: https://github.com/openshift/api/pull/2255
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/feature-set: Default
labels:
openshift.io/operator-managed: ""
diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-OKD.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Hypershift-OKD.crd.yaml
similarity index 99%
rename from machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-OKD.crd.yaml
rename to machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Hypershift-OKD.crd.yaml
index 8263d178336..966080e5bbf 100644
--- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-OKD.crd.yaml
+++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-Hypershift-OKD.crd.yaml
@@ -5,7 +5,6 @@ metadata:
api-approved.openshift.io: https://github.com/openshift/api/pull/2255
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/feature-set: OKD
labels:
openshift.io/operator-managed: ""
diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-Default.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-Default.crd.yaml
new file mode 100644
index 00000000000..45b3c659850
--- /dev/null
+++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-Default.crd.yaml
@@ -0,0 +1,520 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/2255
+ api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/self-managed-high-availability: "true"
+ release.openshift.io/feature-set: Default
+ labels:
+ openshift.io/operator-managed: ""
+ name: machineconfignodes.machineconfiguration.openshift.io
+spec:
+ group: machineconfiguration.openshift.io
+ names:
+ kind: MachineConfigNode
+ listKind: MachineConfigNodeList
+ plural: machineconfignodes
+ singular: machineconfignode
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.pool.name
+ name: PoolName
+ type: string
+ - jsonPath: .spec.configVersion.desired
+ name: DesiredConfig
+ type: string
+ - jsonPath: .status.configVersion.current
+ name: CurrentConfig
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Updated")].status
+ name: Updated
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="UpdatePrepared")].status
+ name: UpdatePrepared
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateExecuted")].status
+ name: UpdateExecuted
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdatePostActionComplete")].status
+ name: UpdatePostActionComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateComplete")].status
+ name: UpdateComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Resumed")].status
+ name: Resumed
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="AppliedFilesAndOS")].status
+ name: UpdatedFilesAndOS
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Cordoned")].status
+ name: CordonedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Drained")].status
+ name: DrainedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="RebootedNode")].status
+ name: RebootedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Uncordoned")].status
+ name: UncordonedNode
+ priority: 1
+ type: string
+ name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ MachineConfigNode describes the health of the Machines on the system
+ 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 describes the configuration of the machine config node.
+ properties:
+ configVersion:
+ description: |-
+ configVersion holds the desired config version for the node targeted by this machine config node resource.
+ The desired version represents the machine config the node will attempt to update to and gets set before the machine config operator validates
+ the new machine config against the current machine config.
+ properties:
+ desired:
+ description: |-
+ desired is the name of the machine config that the the node should be upgraded to.
+ This value is set when the machine config pool generates a new version of its rendered configuration.
+ When this value is changed, the machine config daemon starts the node upgrade process.
+ This value gets set in the machine config node spec once the machine config has been targeted for upgrade and before it is validated.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ node:
+ description: node contains a reference to the node for this machine
+ config node.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ pool:
+ description: |-
+ pool contains a reference to the machine config pool that this machine config node's
+ referenced node belongs to.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ required:
+ - configVersion
+ - node
+ - pool
+ type: object
+ status:
+ description: status describes the last observed state of this machine
+ config node.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of a machine config node's current state. Valid types are:
+ UpdatePrepared, UpdateExecuted, UpdatePostActionComplete, UpdateComplete, Updated, Resumed,
+ Drained, AppliedFilesAndOS, Cordoned, Uncordoned, RebootedNode, NodeDegraded, PinnedImageSetsProgressing,
+ and PinnedImageSetsDegraded.
+ The following types are only available when the ImageModeStatusReporting feature gate is enabled: ImagePulledFromRegistry,
+ AppliedOSImage, AppliedFiles
+ The following types are only available when the NoRegistryClusterInstall feature gate is enabled: InternalReleaseImageDegraded
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 20
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ configVersion:
+ description: configVersion describes the current and desired machine
+ config version for this node.
+ properties:
+ current:
+ description: |-
+ current is the name of the machine config currently in use on the node.
+ This value is updated once the machine config daemon has completed the update of the configuration for the node.
+ This value should match the desired version unless an upgrade is in progress.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ desired:
+ description: |-
+ desired is the MachineConfig the node wants to upgrade to.
+ This value gets set in the machine config node status once the machine config has been validated
+ against the current machine config.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ internalReleaseImage:
+ description: |-
+ internalReleaseImage describes the status of the release payloads stored in the node.
+ When specified, an internalReleaseImage custom resource exists on the cluster, and the specified images will be made available on the control plane nodes.
+ This field will reflect the actual on-disk state of those release images.
+ properties:
+ releases:
+ description: |-
+ releases is a list of the release bundles currently owned and managed by the
+ cluster.
+ A release bundle content could be safely pulled only when its Conditions field
+ contains at least an Available entry set to "True" and Degraded to "False".
+ Entries must be unique, keyed on the name field.
+ releases must contain at least one entry and must not exceed 32 entries.
+ items:
+ description: |-
+ MachineConfigNodeStatusInternalReleaseImageRef is used to provide a more detailed reference for
+ a release bundle.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of an internal release image current state. Valid types are:
+ Mounted, Installing, Available, Removing and Degraded.
+
+ If Mounted is true, that means that a valid ISO has been mounted on the current node.
+ If Installing is true, that means that a new release bundle is currently being copied on the current node, and not yet completed.
+ If Available is true, it means that the release has been previously installed on the current node, and it can be used.
+ If Removing is true, it means that a release deletion is in progress on the current node, and not yet completed.
+ If Degraded is true, that means something has gone wrong in the current node.
+ items:
+ description: Condition contains details for one aspect
+ of the current state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True,
+ False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in
+ foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 5
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ image:
+ description: |-
+ image is an OCP release image referenced by digest.
+ The format of the image pull spec is: host[:port][/namespace]/name@sha256:,
+ where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
+ The host must be either exactly "localhost" or a dot-qualified domain name.
+ Single-label hosts other than "localhost" are not permitted.
+ The length of the whole spec must be between 1 to 447 characters.
+ The field is optional, and it will be provided after a release will be successfully installed.
+ maxLength: 447
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: the OCI Image reference must end with a valid
+ '@sha256:' suffix, where '' is 64 characters
+ long
+ rule: (self.split('@').size() == 2 && self.split('@')[1].matches('^sha256:[a-f0-9]{64}$'))
+ - message: the OCI Image name should follow the host[:port][/namespace]/name
+ format, resembling a valid URL without the scheme; host
+ must be either 'localhost' or a dot-qualified domain
+ name
+ rule: (self.split('@')[0].matches('^(localhost|([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+)(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$'))
+ name:
+ description: |-
+ name indicates the desired release bundle identifier. This field is required and must be between 1 and 64 characters long.
+ The expected name format is ocp-release-bundle--.
+ maxLength: 64
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must be ocp-release-bundle--
+ and <= 64 chars
+ rule: self.matches('^ocp-release-bundle-[0-9]+\\.[0-9]+\\.[0-9]+-[A-Za-z0-9._-]+$')
+ required:
+ - name
+ type: object
+ maxItems: 32
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ required:
+ - releases
+ type: object
+ observedGeneration:
+ description: |-
+ observedGeneration represents the generation of the MachineConfigNode object observed by the Machine Config Operator's controller.
+ This field is updated when the controller observes a change to the desiredConfig in the configVersion of the machine config node spec.
+ format: int64
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: observedGeneration must not decrease
+ rule: self >= oldSelf
+ pinnedImageSets:
+ description: pinnedImageSets describes the current and desired pinned
+ image sets for this node.
+ items:
+ description: MachineConfigNodeStatusPinnedImageSet holds information
+ about the current, desired, and failed pinned image sets for the
+ observed machine config node.
+ properties:
+ currentGeneration:
+ description: currentGeneration is the generation of the pinned
+ image set that has most recently been successfully pulled
+ and pinned on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: currentGeneration must not decrease
+ rule: self >= oldSelf
+ desiredGeneration:
+ description: desiredGeneration is the generation of the pinned
+ image set that is targeted to be pulled and pinned on this
+ node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: desiredGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGeneration:
+ description: lastFailedGeneration is the generation of the most
+ recent pinned image set that failed to be pulled and pinned
+ on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: lastFailedGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGenerationError:
+ description: |-
+ lastFailedGenerationError is the error explaining why the desired images failed to be pulled and pinned.
+ The error is an empty string if the image pull and pin is successful.
+ maxLength: 32768
+ type: string
+ name:
+ description: |-
+ name is the name of the pinned image set.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start
+ and end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ x-kubernetes-validations:
+ - message: desired generation must be greater than or equal to the
+ current generation
+ rule: 'has(self.desiredGeneration) && has(self.currentGeneration)
+ ? self.desiredGeneration >= self.currentGeneration : true'
+ - message: desired generation must be greater than or equal to the
+ last failed generation
+ rule: 'has(self.lastFailedGeneration) && has(self.desiredGeneration)
+ ? self.desiredGeneration >= self.lastFailedGeneration : true'
+ - message: last failed generation error must be defined on image
+ pull and pin failure
+ rule: 'has(self.lastFailedGeneration) ? has(self.lastFailedGenerationError)
+ : true'
+ maxItems: 100
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ type: object
+ required:
+ - spec
+ type: object
+ x-kubernetes-validations:
+ - message: spec.node.name should match metadata.name
+ rule: self.metadata.name == self.spec.node.name
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-OKD.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-OKD.crd.yaml
new file mode 100644
index 00000000000..fa7edbcf9aa
--- /dev/null
+++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-OKD.crd.yaml
@@ -0,0 +1,520 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/2255
+ api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/self-managed-high-availability: "true"
+ release.openshift.io/feature-set: OKD
+ labels:
+ openshift.io/operator-managed: ""
+ name: machineconfignodes.machineconfiguration.openshift.io
+spec:
+ group: machineconfiguration.openshift.io
+ names:
+ kind: MachineConfigNode
+ listKind: MachineConfigNodeList
+ plural: machineconfignodes
+ singular: machineconfignode
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.pool.name
+ name: PoolName
+ type: string
+ - jsonPath: .spec.configVersion.desired
+ name: DesiredConfig
+ type: string
+ - jsonPath: .status.configVersion.current
+ name: CurrentConfig
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Updated")].status
+ name: Updated
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="UpdatePrepared")].status
+ name: UpdatePrepared
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateExecuted")].status
+ name: UpdateExecuted
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdatePostActionComplete")].status
+ name: UpdatePostActionComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateComplete")].status
+ name: UpdateComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Resumed")].status
+ name: Resumed
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="AppliedFilesAndOS")].status
+ name: UpdatedFilesAndOS
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Cordoned")].status
+ name: CordonedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Drained")].status
+ name: DrainedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="RebootedNode")].status
+ name: RebootedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Uncordoned")].status
+ name: UncordonedNode
+ priority: 1
+ type: string
+ name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ MachineConfigNode describes the health of the Machines on the system
+ 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 describes the configuration of the machine config node.
+ properties:
+ configVersion:
+ description: |-
+ configVersion holds the desired config version for the node targeted by this machine config node resource.
+ The desired version represents the machine config the node will attempt to update to and gets set before the machine config operator validates
+ the new machine config against the current machine config.
+ properties:
+ desired:
+ description: |-
+ desired is the name of the machine config that the the node should be upgraded to.
+ This value is set when the machine config pool generates a new version of its rendered configuration.
+ When this value is changed, the machine config daemon starts the node upgrade process.
+ This value gets set in the machine config node spec once the machine config has been targeted for upgrade and before it is validated.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ node:
+ description: node contains a reference to the node for this machine
+ config node.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ pool:
+ description: |-
+ pool contains a reference to the machine config pool that this machine config node's
+ referenced node belongs to.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ required:
+ - configVersion
+ - node
+ - pool
+ type: object
+ status:
+ description: status describes the last observed state of this machine
+ config node.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of a machine config node's current state. Valid types are:
+ UpdatePrepared, UpdateExecuted, UpdatePostActionComplete, UpdateComplete, Updated, Resumed,
+ Drained, AppliedFilesAndOS, Cordoned, Uncordoned, RebootedNode, NodeDegraded, PinnedImageSetsProgressing,
+ and PinnedImageSetsDegraded.
+ The following types are only available when the ImageModeStatusReporting feature gate is enabled: ImagePulledFromRegistry,
+ AppliedOSImage, AppliedFiles
+ The following types are only available when the NoRegistryClusterInstall feature gate is enabled: InternalReleaseImageDegraded
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 20
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ configVersion:
+ description: configVersion describes the current and desired machine
+ config version for this node.
+ properties:
+ current:
+ description: |-
+ current is the name of the machine config currently in use on the node.
+ This value is updated once the machine config daemon has completed the update of the configuration for the node.
+ This value should match the desired version unless an upgrade is in progress.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ desired:
+ description: |-
+ desired is the MachineConfig the node wants to upgrade to.
+ This value gets set in the machine config node status once the machine config has been validated
+ against the current machine config.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ internalReleaseImage:
+ description: |-
+ internalReleaseImage describes the status of the release payloads stored in the node.
+ When specified, an internalReleaseImage custom resource exists on the cluster, and the specified images will be made available on the control plane nodes.
+ This field will reflect the actual on-disk state of those release images.
+ properties:
+ releases:
+ description: |-
+ releases is a list of the release bundles currently owned and managed by the
+ cluster.
+ A release bundle content could be safely pulled only when its Conditions field
+ contains at least an Available entry set to "True" and Degraded to "False".
+ Entries must be unique, keyed on the name field.
+ releases must contain at least one entry and must not exceed 32 entries.
+ items:
+ description: |-
+ MachineConfigNodeStatusInternalReleaseImageRef is used to provide a more detailed reference for
+ a release bundle.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of an internal release image current state. Valid types are:
+ Mounted, Installing, Available, Removing and Degraded.
+
+ If Mounted is true, that means that a valid ISO has been mounted on the current node.
+ If Installing is true, that means that a new release bundle is currently being copied on the current node, and not yet completed.
+ If Available is true, it means that the release has been previously installed on the current node, and it can be used.
+ If Removing is true, it means that a release deletion is in progress on the current node, and not yet completed.
+ If Degraded is true, that means something has gone wrong in the current node.
+ items:
+ description: Condition contains details for one aspect
+ of the current state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True,
+ False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in
+ foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 5
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ image:
+ description: |-
+ image is an OCP release image referenced by digest.
+ The format of the image pull spec is: host[:port][/namespace]/name@sha256:,
+ where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
+ The host must be either exactly "localhost" or a dot-qualified domain name.
+ Single-label hosts other than "localhost" are not permitted.
+ The length of the whole spec must be between 1 to 447 characters.
+ The field is optional, and it will be provided after a release will be successfully installed.
+ maxLength: 447
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: the OCI Image reference must end with a valid
+ '@sha256:' suffix, where '' is 64 characters
+ long
+ rule: (self.split('@').size() == 2 && self.split('@')[1].matches('^sha256:[a-f0-9]{64}$'))
+ - message: the OCI Image name should follow the host[:port][/namespace]/name
+ format, resembling a valid URL without the scheme; host
+ must be either 'localhost' or a dot-qualified domain
+ name
+ rule: (self.split('@')[0].matches('^(localhost|([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+)(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$'))
+ name:
+ description: |-
+ name indicates the desired release bundle identifier. This field is required and must be between 1 and 64 characters long.
+ The expected name format is ocp-release-bundle--.
+ maxLength: 64
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must be ocp-release-bundle--
+ and <= 64 chars
+ rule: self.matches('^ocp-release-bundle-[0-9]+\\.[0-9]+\\.[0-9]+-[A-Za-z0-9._-]+$')
+ required:
+ - name
+ type: object
+ maxItems: 32
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ required:
+ - releases
+ type: object
+ observedGeneration:
+ description: |-
+ observedGeneration represents the generation of the MachineConfigNode object observed by the Machine Config Operator's controller.
+ This field is updated when the controller observes a change to the desiredConfig in the configVersion of the machine config node spec.
+ format: int64
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: observedGeneration must not decrease
+ rule: self >= oldSelf
+ pinnedImageSets:
+ description: pinnedImageSets describes the current and desired pinned
+ image sets for this node.
+ items:
+ description: MachineConfigNodeStatusPinnedImageSet holds information
+ about the current, desired, and failed pinned image sets for the
+ observed machine config node.
+ properties:
+ currentGeneration:
+ description: currentGeneration is the generation of the pinned
+ image set that has most recently been successfully pulled
+ and pinned on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: currentGeneration must not decrease
+ rule: self >= oldSelf
+ desiredGeneration:
+ description: desiredGeneration is the generation of the pinned
+ image set that is targeted to be pulled and pinned on this
+ node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: desiredGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGeneration:
+ description: lastFailedGeneration is the generation of the most
+ recent pinned image set that failed to be pulled and pinned
+ on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: lastFailedGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGenerationError:
+ description: |-
+ lastFailedGenerationError is the error explaining why the desired images failed to be pulled and pinned.
+ The error is an empty string if the image pull and pin is successful.
+ maxLength: 32768
+ type: string
+ name:
+ description: |-
+ name is the name of the pinned image set.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start
+ and end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ x-kubernetes-validations:
+ - message: desired generation must be greater than or equal to the
+ current generation
+ rule: 'has(self.desiredGeneration) && has(self.currentGeneration)
+ ? self.desiredGeneration >= self.currentGeneration : true'
+ - message: desired generation must be greater than or equal to the
+ last failed generation
+ rule: 'has(self.lastFailedGeneration) && has(self.desiredGeneration)
+ ? self.desiredGeneration >= self.lastFailedGeneration : true'
+ - message: last failed generation error must be defined on image
+ pull and pin failure
+ rule: 'has(self.lastFailedGeneration) ? has(self.lastFailedGenerationError)
+ : true'
+ maxItems: 100
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ type: object
+ required:
+ - spec
+ type: object
+ x-kubernetes-validations:
+ - message: spec.node.name should match metadata.name
+ rule: self.metadata.name == self.spec.node.name
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml b/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
index c28df43cb11..e408ecb163a 100644
--- a/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
+++ b/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
@@ -5,7 +5,6 @@ metadata:
api-approved.openshift.io: https://github.com/openshift/api/pull/2510
api.openshift.io/merged-by-featuregates: "true"
include.release.openshift.io/self-managed-high-availability: "true"
- release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,TechPreviewNoUpgrade
labels:
openshift.io/operator-managed: ""
name: internalreleaseimages.machineconfiguration.openshift.io
diff --git a/openapi/openapi.json b/openapi/openapi.json
index 0774c34942c..fb248cd7e4f 100644
--- a/openapi/openapi.json
+++ b/openapi/openapi.json
@@ -20515,6 +20515,19 @@
}
}
},
+ "com.github.openshift.api.config.v1.NetworkObservabilitySpec": {
+ "description": "NetworkObservabilitySpec defines the configuration for network observability installation",
+ "type": "object",
+ "required": [
+ "installationPolicy"
+ ],
+ "properties": {
+ "installationPolicy": {
+ "description": "installationPolicy controls whether network observability is installed during cluster deployment. Valid values are \"InstallAndEnable\" and \"NoAction\". When set to \"InstallAndEnable\", ensure that network observability will be installed and enabled on the cluster. If already installed, no action taken, but if it gets uninstalled, it will install it again. When set to \"NoAction\", nothing will be done regarding Network observability.",
+ "type": "string"
+ }
+ }
+ },
"com.github.openshift.api.config.v1.NetworkSpec": {
"description": "NetworkSpec is the desired network configuration. As a general rule, this SHOULD NOT be read directly. Instead, you should consume the NetworkStatus, as it indicates the currently deployed configuration. Currently, most spec fields are immutable after installation. Please view the individual ones for further details on each.",
"type": "object",
@@ -20542,6 +20555,11 @@
"default": {},
"$ref": "#/definitions/com.github.openshift.api.config.v1.NetworkDiagnostics"
},
+ "networkObservability": {
+ "description": "networkObservability is an optional field that configures network observability installation during cluster deployment (day-0). When omitted, unless this is a SNO cluster, network observability will be installed if not already present, after that, no action taken.",
+ "default": {},
+ "$ref": "#/definitions/com.github.openshift.api.config.v1.NetworkObservabilitySpec"
+ },
"networkType": {
"description": "networkType is the plugin that is to be deployed (e.g. OVNKubernetes). This should match a value that the cluster-network-operator understands, or else no networking will be installed. Currently supported values are: - OVNKubernetes This field is immutable after installation.",
"type": "string",
@@ -25111,14 +25129,6 @@
"type": "integer",
"format": "int32"
},
- "nodeSelector": {
- "description": "nodeSelector defines the nodes on which the Pods are scheduled. nodeSelector is optional.\n\nWhen omitted, this means the user has no opinion and the platform is left to choose reasonable defaults. These defaults are subject to change over time. The current default value is `kubernetes.io/os: linux`. When specified, nodeSelector must contain at least 1 entry and must not contain more than 10 entries.",
- "type": "object",
- "additionalProperties": {
- "type": "string",
- "default": ""
- }
- },
"resources": {
"description": "resources defines the compute resource requests and limits for the node-exporter container. This includes CPU, memory and HugePages constraints to help control scheduling and resource usage. When not specified, defaults are used by the platform. Requests cannot exceed limits. This field is optional. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ This is a simplified API that maps to Kubernetes ResourceRequirements. The current default values are:\n resources:\n - name: cpu\n request: 8m\n limit: null\n - name: memory\n request: 32Mi\n limit: null",
"type": "array",
@@ -25130,15 +25140,6 @@
"name"
],
"x-kubernetes-list-type": "map"
- },
- "tolerations": {
- "description": "tolerations defines tolerations for the pods. tolerations is optional.\n\nWhen omitted, this means the user has no opinion and the platform is left to choose reasonable defaults. These defaults are subject to change over time. The current default is to tolerate all taints (operator: Exists without any key), which is typical for DaemonSets that must run on every node. Maximum length for this list is 10. Minimum length for this list is 1.",
- "type": "array",
- "items": {
- "default": {},
- "$ref": "#/definitions/Toleration.v1.core.api.k8s.io"
- },
- "x-kubernetes-list-type": "atomic"
}
}
},
diff --git a/payload-manifests/crds/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
index c28df43cb11..e408ecb163a 100644
--- a/payload-manifests/crds/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
+++ b/payload-manifests/crds/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
@@ -5,7 +5,6 @@ metadata:
api-approved.openshift.io: https://github.com/openshift/api/pull/2510
api.openshift.io/merged-by-featuregates: "true"
include.release.openshift.io/self-managed-high-availability: "true"
- release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,TechPreviewNoUpgrade
labels:
openshift.io/operator-managed: ""
name: internalreleaseimages.machineconfiguration.openshift.io
diff --git a/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Default.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Hypershift-Default.crd.yaml
similarity index 99%
rename from payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Default.crd.yaml
rename to payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Hypershift-Default.crd.yaml
index 85c77750465..69920b355ad 100644
--- a/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Default.crd.yaml
+++ b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Hypershift-Default.crd.yaml
@@ -5,7 +5,6 @@ metadata:
api-approved.openshift.io: https://github.com/openshift/api/pull/2255
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/feature-set: Default
labels:
openshift.io/operator-managed: ""
diff --git a/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-OKD.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Hypershift-OKD.crd.yaml
similarity index 99%
rename from payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-OKD.crd.yaml
rename to payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Hypershift-OKD.crd.yaml
index 8263d178336..966080e5bbf 100644
--- a/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-OKD.crd.yaml
+++ b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-Hypershift-OKD.crd.yaml
@@ -5,7 +5,6 @@ metadata:
api-approved.openshift.io: https://github.com/openshift/api/pull/2255
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/feature-set: OKD
labels:
openshift.io/operator-managed: ""
diff --git a/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-Default.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-Default.crd.yaml
new file mode 100644
index 00000000000..45b3c659850
--- /dev/null
+++ b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-Default.crd.yaml
@@ -0,0 +1,520 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/2255
+ api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/self-managed-high-availability: "true"
+ release.openshift.io/feature-set: Default
+ labels:
+ openshift.io/operator-managed: ""
+ name: machineconfignodes.machineconfiguration.openshift.io
+spec:
+ group: machineconfiguration.openshift.io
+ names:
+ kind: MachineConfigNode
+ listKind: MachineConfigNodeList
+ plural: machineconfignodes
+ singular: machineconfignode
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.pool.name
+ name: PoolName
+ type: string
+ - jsonPath: .spec.configVersion.desired
+ name: DesiredConfig
+ type: string
+ - jsonPath: .status.configVersion.current
+ name: CurrentConfig
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Updated")].status
+ name: Updated
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="UpdatePrepared")].status
+ name: UpdatePrepared
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateExecuted")].status
+ name: UpdateExecuted
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdatePostActionComplete")].status
+ name: UpdatePostActionComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateComplete")].status
+ name: UpdateComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Resumed")].status
+ name: Resumed
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="AppliedFilesAndOS")].status
+ name: UpdatedFilesAndOS
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Cordoned")].status
+ name: CordonedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Drained")].status
+ name: DrainedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="RebootedNode")].status
+ name: RebootedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Uncordoned")].status
+ name: UncordonedNode
+ priority: 1
+ type: string
+ name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ MachineConfigNode describes the health of the Machines on the system
+ 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 describes the configuration of the machine config node.
+ properties:
+ configVersion:
+ description: |-
+ configVersion holds the desired config version for the node targeted by this machine config node resource.
+ The desired version represents the machine config the node will attempt to update to and gets set before the machine config operator validates
+ the new machine config against the current machine config.
+ properties:
+ desired:
+ description: |-
+ desired is the name of the machine config that the the node should be upgraded to.
+ This value is set when the machine config pool generates a new version of its rendered configuration.
+ When this value is changed, the machine config daemon starts the node upgrade process.
+ This value gets set in the machine config node spec once the machine config has been targeted for upgrade and before it is validated.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ node:
+ description: node contains a reference to the node for this machine
+ config node.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ pool:
+ description: |-
+ pool contains a reference to the machine config pool that this machine config node's
+ referenced node belongs to.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ required:
+ - configVersion
+ - node
+ - pool
+ type: object
+ status:
+ description: status describes the last observed state of this machine
+ config node.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of a machine config node's current state. Valid types are:
+ UpdatePrepared, UpdateExecuted, UpdatePostActionComplete, UpdateComplete, Updated, Resumed,
+ Drained, AppliedFilesAndOS, Cordoned, Uncordoned, RebootedNode, NodeDegraded, PinnedImageSetsProgressing,
+ and PinnedImageSetsDegraded.
+ The following types are only available when the ImageModeStatusReporting feature gate is enabled: ImagePulledFromRegistry,
+ AppliedOSImage, AppliedFiles
+ The following types are only available when the NoRegistryClusterInstall feature gate is enabled: InternalReleaseImageDegraded
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 20
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ configVersion:
+ description: configVersion describes the current and desired machine
+ config version for this node.
+ properties:
+ current:
+ description: |-
+ current is the name of the machine config currently in use on the node.
+ This value is updated once the machine config daemon has completed the update of the configuration for the node.
+ This value should match the desired version unless an upgrade is in progress.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ desired:
+ description: |-
+ desired is the MachineConfig the node wants to upgrade to.
+ This value gets set in the machine config node status once the machine config has been validated
+ against the current machine config.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ internalReleaseImage:
+ description: |-
+ internalReleaseImage describes the status of the release payloads stored in the node.
+ When specified, an internalReleaseImage custom resource exists on the cluster, and the specified images will be made available on the control plane nodes.
+ This field will reflect the actual on-disk state of those release images.
+ properties:
+ releases:
+ description: |-
+ releases is a list of the release bundles currently owned and managed by the
+ cluster.
+ A release bundle content could be safely pulled only when its Conditions field
+ contains at least an Available entry set to "True" and Degraded to "False".
+ Entries must be unique, keyed on the name field.
+ releases must contain at least one entry and must not exceed 32 entries.
+ items:
+ description: |-
+ MachineConfigNodeStatusInternalReleaseImageRef is used to provide a more detailed reference for
+ a release bundle.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of an internal release image current state. Valid types are:
+ Mounted, Installing, Available, Removing and Degraded.
+
+ If Mounted is true, that means that a valid ISO has been mounted on the current node.
+ If Installing is true, that means that a new release bundle is currently being copied on the current node, and not yet completed.
+ If Available is true, it means that the release has been previously installed on the current node, and it can be used.
+ If Removing is true, it means that a release deletion is in progress on the current node, and not yet completed.
+ If Degraded is true, that means something has gone wrong in the current node.
+ items:
+ description: Condition contains details for one aspect
+ of the current state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True,
+ False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in
+ foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 5
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ image:
+ description: |-
+ image is an OCP release image referenced by digest.
+ The format of the image pull spec is: host[:port][/namespace]/name@sha256:,
+ where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
+ The host must be either exactly "localhost" or a dot-qualified domain name.
+ Single-label hosts other than "localhost" are not permitted.
+ The length of the whole spec must be between 1 to 447 characters.
+ The field is optional, and it will be provided after a release will be successfully installed.
+ maxLength: 447
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: the OCI Image reference must end with a valid
+ '@sha256:' suffix, where '' is 64 characters
+ long
+ rule: (self.split('@').size() == 2 && self.split('@')[1].matches('^sha256:[a-f0-9]{64}$'))
+ - message: the OCI Image name should follow the host[:port][/namespace]/name
+ format, resembling a valid URL without the scheme; host
+ must be either 'localhost' or a dot-qualified domain
+ name
+ rule: (self.split('@')[0].matches('^(localhost|([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+)(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$'))
+ name:
+ description: |-
+ name indicates the desired release bundle identifier. This field is required and must be between 1 and 64 characters long.
+ The expected name format is ocp-release-bundle--.
+ maxLength: 64
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must be ocp-release-bundle--
+ and <= 64 chars
+ rule: self.matches('^ocp-release-bundle-[0-9]+\\.[0-9]+\\.[0-9]+-[A-Za-z0-9._-]+$')
+ required:
+ - name
+ type: object
+ maxItems: 32
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ required:
+ - releases
+ type: object
+ observedGeneration:
+ description: |-
+ observedGeneration represents the generation of the MachineConfigNode object observed by the Machine Config Operator's controller.
+ This field is updated when the controller observes a change to the desiredConfig in the configVersion of the machine config node spec.
+ format: int64
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: observedGeneration must not decrease
+ rule: self >= oldSelf
+ pinnedImageSets:
+ description: pinnedImageSets describes the current and desired pinned
+ image sets for this node.
+ items:
+ description: MachineConfigNodeStatusPinnedImageSet holds information
+ about the current, desired, and failed pinned image sets for the
+ observed machine config node.
+ properties:
+ currentGeneration:
+ description: currentGeneration is the generation of the pinned
+ image set that has most recently been successfully pulled
+ and pinned on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: currentGeneration must not decrease
+ rule: self >= oldSelf
+ desiredGeneration:
+ description: desiredGeneration is the generation of the pinned
+ image set that is targeted to be pulled and pinned on this
+ node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: desiredGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGeneration:
+ description: lastFailedGeneration is the generation of the most
+ recent pinned image set that failed to be pulled and pinned
+ on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: lastFailedGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGenerationError:
+ description: |-
+ lastFailedGenerationError is the error explaining why the desired images failed to be pulled and pinned.
+ The error is an empty string if the image pull and pin is successful.
+ maxLength: 32768
+ type: string
+ name:
+ description: |-
+ name is the name of the pinned image set.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start
+ and end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ x-kubernetes-validations:
+ - message: desired generation must be greater than or equal to the
+ current generation
+ rule: 'has(self.desiredGeneration) && has(self.currentGeneration)
+ ? self.desiredGeneration >= self.currentGeneration : true'
+ - message: desired generation must be greater than or equal to the
+ last failed generation
+ rule: 'has(self.lastFailedGeneration) && has(self.desiredGeneration)
+ ? self.desiredGeneration >= self.lastFailedGeneration : true'
+ - message: last failed generation error must be defined on image
+ pull and pin failure
+ rule: 'has(self.lastFailedGeneration) ? has(self.lastFailedGenerationError)
+ : true'
+ maxItems: 100
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ type: object
+ required:
+ - spec
+ type: object
+ x-kubernetes-validations:
+ - message: spec.node.name should match metadata.name
+ rule: self.metadata.name == self.spec.node.name
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-OKD.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-OKD.crd.yaml
new file mode 100644
index 00000000000..fa7edbcf9aa
--- /dev/null
+++ b/payload-manifests/crds/0000_80_machine-config_01_machineconfignodes-SelfManagedHA-OKD.crd.yaml
@@ -0,0 +1,520 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ api-approved.openshift.io: https://github.com/openshift/api/pull/2255
+ api.openshift.io/merged-by-featuregates: "true"
+ include.release.openshift.io/self-managed-high-availability: "true"
+ release.openshift.io/feature-set: OKD
+ labels:
+ openshift.io/operator-managed: ""
+ name: machineconfignodes.machineconfiguration.openshift.io
+spec:
+ group: machineconfiguration.openshift.io
+ names:
+ kind: MachineConfigNode
+ listKind: MachineConfigNodeList
+ plural: machineconfignodes
+ singular: machineconfignode
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.pool.name
+ name: PoolName
+ type: string
+ - jsonPath: .spec.configVersion.desired
+ name: DesiredConfig
+ type: string
+ - jsonPath: .status.configVersion.current
+ name: CurrentConfig
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Updated")].status
+ name: Updated
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.conditions[?(@.type=="UpdatePrepared")].status
+ name: UpdatePrepared
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateExecuted")].status
+ name: UpdateExecuted
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdatePostActionComplete")].status
+ name: UpdatePostActionComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="UpdateComplete")].status
+ name: UpdateComplete
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Resumed")].status
+ name: Resumed
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="AppliedFilesAndOS")].status
+ name: UpdatedFilesAndOS
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Cordoned")].status
+ name: CordonedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Drained")].status
+ name: DrainedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="RebootedNode")].status
+ name: RebootedNode
+ priority: 1
+ type: string
+ - jsonPath: .status.conditions[?(@.type=="Uncordoned")].status
+ name: UncordonedNode
+ priority: 1
+ type: string
+ name: v1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ MachineConfigNode describes the health of the Machines on the system
+ 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 describes the configuration of the machine config node.
+ properties:
+ configVersion:
+ description: |-
+ configVersion holds the desired config version for the node targeted by this machine config node resource.
+ The desired version represents the machine config the node will attempt to update to and gets set before the machine config operator validates
+ the new machine config against the current machine config.
+ properties:
+ desired:
+ description: |-
+ desired is the name of the machine config that the the node should be upgraded to.
+ This value is set when the machine config pool generates a new version of its rendered configuration.
+ When this value is changed, the machine config daemon starts the node upgrade process.
+ This value gets set in the machine config node spec once the machine config has been targeted for upgrade and before it is validated.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ node:
+ description: node contains a reference to the node for this machine
+ config node.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ pool:
+ description: |-
+ pool contains a reference to the machine config pool that this machine config node's
+ referenced node belongs to.
+ properties:
+ name:
+ description: |-
+ name is the name of the object being referenced. For example, this can represent a machine
+ config pool or node name.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ required:
+ - configVersion
+ - node
+ - pool
+ type: object
+ status:
+ description: status describes the last observed state of this machine
+ config node.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of a machine config node's current state. Valid types are:
+ UpdatePrepared, UpdateExecuted, UpdatePostActionComplete, UpdateComplete, Updated, Resumed,
+ Drained, AppliedFilesAndOS, Cordoned, Uncordoned, RebootedNode, NodeDegraded, PinnedImageSetsProgressing,
+ and PinnedImageSetsDegraded.
+ The following types are only available when the ImageModeStatusReporting feature gate is enabled: ImagePulledFromRegistry,
+ AppliedOSImage, AppliedFiles
+ The following types are only available when the NoRegistryClusterInstall feature gate is enabled: InternalReleaseImageDegraded
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 20
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ configVersion:
+ description: configVersion describes the current and desired machine
+ config version for this node.
+ properties:
+ current:
+ description: |-
+ current is the name of the machine config currently in use on the node.
+ This value is updated once the machine config daemon has completed the update of the configuration for the node.
+ This value should match the desired version unless an upgrade is in progress.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ desired:
+ description: |-
+ desired is the MachineConfig the node wants to upgrade to.
+ This value gets set in the machine config node status once the machine config has been validated
+ against the current machine config.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start and
+ end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - desired
+ type: object
+ internalReleaseImage:
+ description: |-
+ internalReleaseImage describes the status of the release payloads stored in the node.
+ When specified, an internalReleaseImage custom resource exists on the cluster, and the specified images will be made available on the control plane nodes.
+ This field will reflect the actual on-disk state of those release images.
+ properties:
+ releases:
+ description: |-
+ releases is a list of the release bundles currently owned and managed by the
+ cluster.
+ A release bundle content could be safely pulled only when its Conditions field
+ contains at least an Available entry set to "True" and Degraded to "False".
+ Entries must be unique, keyed on the name field.
+ releases must contain at least one entry and must not exceed 32 entries.
+ items:
+ description: |-
+ MachineConfigNodeStatusInternalReleaseImageRef is used to provide a more detailed reference for
+ a release bundle.
+ properties:
+ conditions:
+ description: |-
+ conditions represent the observations of an internal release image current state. Valid types are:
+ Mounted, Installing, Available, Removing and Degraded.
+
+ If Mounted is true, that means that a valid ISO has been mounted on the current node.
+ If Installing is true, that means that a new release bundle is currently being copied on the current node, and not yet completed.
+ If Available is true, it means that the release has been previously installed on the current node, and it can be used.
+ If Removing is true, it means that a release deletion is in progress on the current node, and not yet completed.
+ If Degraded is true, that means something has gone wrong in the current node.
+ items:
+ description: Condition contains details for one aspect
+ of the current state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True,
+ False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in
+ foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ maxItems: 5
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ image:
+ description: |-
+ image is an OCP release image referenced by digest.
+ The format of the image pull spec is: host[:port][/namespace]/name@sha256:,
+ where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
+ The host must be either exactly "localhost" or a dot-qualified domain name.
+ Single-label hosts other than "localhost" are not permitted.
+ The length of the whole spec must be between 1 to 447 characters.
+ The field is optional, and it will be provided after a release will be successfully installed.
+ maxLength: 447
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: the OCI Image reference must end with a valid
+ '@sha256:' suffix, where '' is 64 characters
+ long
+ rule: (self.split('@').size() == 2 && self.split('@')[1].matches('^sha256:[a-f0-9]{64}$'))
+ - message: the OCI Image name should follow the host[:port][/namespace]/name
+ format, resembling a valid URL without the scheme; host
+ must be either 'localhost' or a dot-qualified domain
+ name
+ rule: (self.split('@')[0].matches('^(localhost|([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+)(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$'))
+ name:
+ description: |-
+ name indicates the desired release bundle identifier. This field is required and must be between 1 and 64 characters long.
+ The expected name format is ocp-release-bundle--.
+ maxLength: 64
+ minLength: 1
+ type: string
+ x-kubernetes-validations:
+ - message: must be ocp-release-bundle--
+ and <= 64 chars
+ rule: self.matches('^ocp-release-bundle-[0-9]+\\.[0-9]+\\.[0-9]+-[A-Za-z0-9._-]+$')
+ required:
+ - name
+ type: object
+ maxItems: 32
+ minItems: 1
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ required:
+ - releases
+ type: object
+ observedGeneration:
+ description: |-
+ observedGeneration represents the generation of the MachineConfigNode object observed by the Machine Config Operator's controller.
+ This field is updated when the controller observes a change to the desiredConfig in the configVersion of the machine config node spec.
+ format: int64
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: observedGeneration must not decrease
+ rule: self >= oldSelf
+ pinnedImageSets:
+ description: pinnedImageSets describes the current and desired pinned
+ image sets for this node.
+ items:
+ description: MachineConfigNodeStatusPinnedImageSet holds information
+ about the current, desired, and failed pinned image sets for the
+ observed machine config node.
+ properties:
+ currentGeneration:
+ description: currentGeneration is the generation of the pinned
+ image set that has most recently been successfully pulled
+ and pinned on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: currentGeneration must not decrease
+ rule: self >= oldSelf
+ desiredGeneration:
+ description: desiredGeneration is the generation of the pinned
+ image set that is targeted to be pulled and pinned on this
+ node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: desiredGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGeneration:
+ description: lastFailedGeneration is the generation of the most
+ recent pinned image set that failed to be pulled and pinned
+ on this node.
+ format: int32
+ minimum: 1
+ type: integer
+ x-kubernetes-validations:
+ - message: lastFailedGeneration must not decrease
+ rule: self >= oldSelf
+ lastFailedGenerationError:
+ description: |-
+ lastFailedGenerationError is the error explaining why the desired images failed to be pulled and pinned.
+ The error is an empty string if the image pull and pin is successful.
+ maxLength: 32768
+ type: string
+ name:
+ description: |-
+ name is the name of the pinned image set.
+ Must be a lowercase RFC-1123 subdomain name (https://tools.ietf.org/html/rfc1123) consisting
+ of only lowercase alphanumeric characters, hyphens (-), and periods (.), and must start and end
+ with an alphanumeric character, and be at most 253 characters in length.
+ maxLength: 253
+ type: string
+ x-kubernetes-validations:
+ - message: a lowercase RFC 1123 subdomain must consist of lower
+ case alphanumeric characters, '-' or '.', and must start
+ and end with an alphanumeric character.
+ rule: '!format.dns1123Subdomain().validate(self).hasValue()'
+ required:
+ - name
+ type: object
+ x-kubernetes-validations:
+ - message: desired generation must be greater than or equal to the
+ current generation
+ rule: 'has(self.desiredGeneration) && has(self.currentGeneration)
+ ? self.desiredGeneration >= self.currentGeneration : true'
+ - message: desired generation must be greater than or equal to the
+ last failed generation
+ rule: 'has(self.lastFailedGeneration) && has(self.desiredGeneration)
+ ? self.desiredGeneration >= self.lastFailedGeneration : true'
+ - message: last failed generation error must be defined on image
+ pull and pin failure
+ rule: 'has(self.lastFailedGeneration) ? has(self.lastFailedGenerationError)
+ : true'
+ maxItems: 100
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ type: object
+ required:
+ - spec
+ type: object
+ x-kubernetes-validations:
+ - message: spec.node.name should match metadata.name
+ rule: self.metadata.name == self.spec.node.name
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
index c74894c2ff6..e56eb46ee82 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
@@ -221,9 +221,6 @@
{
"name": "NoOverlayMode"
},
- {
- "name": "NoRegistryClusterInstall"
- },
{
"name": "NutanixMultiSubnets"
},
@@ -331,6 +328,9 @@
{
"name": "NewOLMWebhookProviderOpenshiftServiceCA"
},
+ {
+ "name": "NoRegistryClusterInstall"
+ },
{
"name": "OpenShiftPodSecurityAdmission"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
index 9c33c4dc09f..f2ccf5a6d30 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
@@ -223,9 +223,6 @@
{
"name": "NoOverlayMode"
},
- {
- "name": "NoRegistryClusterInstall"
- },
{
"name": "NutanixMultiSubnets"
},
@@ -333,6 +330,9 @@
{
"name": "NewOLMWebhookProviderOpenshiftServiceCA"
},
+ {
+ "name": "NoRegistryClusterInstall"
+ },
{
"name": "OpenShiftPodSecurityAdmission"
},