diff --git a/features.md b/features.md
index 9f8357fec1b..6f66fdb2fc9 100644
--- a/features.md
+++ b/features.md
@@ -25,7 +25,6 @@
| NewOLMConfigAPI| | | | Enabled | | | | Enabled |
| NewOLMOwnSingleNamespace| | | | Enabled | | | | Enabled |
| NewOLMPreflightPermissionChecks| | | | Enabled | | | | Enabled |
-| NoRegistryClusterInstall| | | | Enabled | | | | Enabled |
| OLMLifecycleAndCompatibility| | | | Enabled | | | | Enabled |
| ProvisioningRequestAvailable| | | Enabled | Enabled | | | | |
| AWSClusterHostedDNS| | | Enabled | Enabled | | | Enabled | Enabled |
@@ -82,6 +81,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 |
| OVNObservability| | | Enabled | Enabled | | | Enabled | Enabled |
| OnPremDNSRecords| | | Enabled | Enabled | | | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 547be2a7b33..e6df25553bb 100644
--- a/features/features.go
+++ b/features/features.go
@@ -838,7 +838,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_internalreleaseimages-SelfManagedHA.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
index b5b2f6f185c..b96953d1335 100644
--- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_internalreleaseimages-SelfManagedHA.crd.yaml
+++ b/machineconfiguration/v1/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/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/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 b5b2f6f185c..b96953d1335 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 a4b39b8eaf2..a3d74ccfa52 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml
@@ -242,9 +242,6 @@
{
"name": "NoOverlayMode"
},
- {
- "name": "NoRegistryClusterInstall"
- },
{
"name": "NutanixMultiSubnets"
},
@@ -355,6 +352,9 @@
{
"name": "NewOLMWebhookProviderOpenshiftServiceCA"
},
+ {
+ "name": "NoRegistryClusterInstall"
+ },
{
"name": "OSStreams"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
index ed62b6d0e99..460ceb1c265 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml
@@ -244,9 +244,6 @@
{
"name": "NoOverlayMode"
},
- {
- "name": "NoRegistryClusterInstall"
- },
{
"name": "NutanixMultiSubnets"
},
@@ -357,6 +354,9 @@
{
"name": "NewOLMWebhookProviderOpenshiftServiceCA"
},
+ {
+ "name": "NoRegistryClusterInstall"
+ },
{
"name": "OSStreams"
},