--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: api-approved.openshift.io: https://github.com/openshift/api/pull/2198 api.openshift.io/merged-by-featuregates: "true" include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" creationTimestamp: "2026-02-17T12:42:29Z" generation: 1 labels: openshift.io/operator-managed: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:api-approved.openshift.io: {} f:api.openshift.io/merged-by-featuregates: {} f:include.release.openshift.io/ibm-cloud-managed: {} f:include.release.openshift.io/self-managed-high-availability: {} f:labels: .: {} f:openshift.io/operator-managed: {} f:ownerReferences: .: {} k:{"uid":"7e539b58-bfcb-42f5-8fd4-1a6475b7c4a5"}: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:scope: {} f:versions: {} manager: cluster-version-operator operation: Update time: "2026-02-17T12:42:29Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: {} f:listKind: {} f:plural: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-02-17T12:42:29Z" name: pinnedimagesets.machineconfiguration.openshift.io ownerReferences: - apiVersion: config.openshift.io/v1 controller: true kind: ClusterVersion name: version uid: 7e539b58-bfcb-42f5-8fd4-1a6475b7c4a5 resourceVersion: "1520" uid: d3da31d1-a5b2-4449-beb1-e132e4bc5be9 spec: conversion: strategy: None group: machineconfiguration.openshift.io names: kind: PinnedImageSet listKind: PinnedImageSetList plural: pinnedimagesets singular: pinnedimageset scope: Cluster versions: - name: v1 schema: openAPIV3Schema: description: |- PinnedImageSet describes a set of images that should be pinned by CRI-O and pulled to the nodes which are members of the declared MachineConfigPools. 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 this pinned image set. properties: pinnedImages: description: |- pinnedImages is a list of OCI Image referenced by digest that should be pinned and pre-loaded by the nodes of a MachineConfigPool. Translates into a new file inside the /etc/crio/crio.conf.d directory with content similar to this: pinned_images = [ "quay.io/openshift-release-dev/ocp-release@sha256:...", "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...", "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...", ... ] Image references must be by digest. A maximum of 500 images may be specified. items: description: PinnedImageRef represents a reference to an OCI image properties: name: description: |- name is an OCI 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 length of the whole spec must be between 1 to 447 characters. 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 rule: (self.split('@')[0].matches('^([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$')) required: - name type: object maxItems: 500 minItems: 1 type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map required: - pinnedImages type: object required: - spec type: object served: true storage: true status: acceptedNames: kind: PinnedImageSet listKind: PinnedImageSetList plural: pinnedimagesets singular: pinnedimageset conditions: - lastTransitionTime: "2026-02-17T12:42:29Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-02-17T12:42:29Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1