--- apiVersion: apps/v1 items: - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" operator.openshift.io/spec-hash: c4ac1b3509541637f44804fd3e6bea024ccb5bcf800645760047f6389fc95064 creationTimestamp: "2025-12-05T12:31:46Z" generation: 1 labels: app: migrator managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:operator.openshift.io/spec-hash: {} f:labels: .: {} f:app: {} f:spec: f:progressDeadlineSeconds: {} f:replicas: {} f:revisionHistoryLimit: {} f:selector: {} f:strategy: f:rollingUpdate: .: {} f:maxSurge: {} f:maxUnavailable: {} f:type: {} f:template: f:metadata: f:annotations: .: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:labels: .: {} f:app: {} f:spec: f:containers: k:{"name":"graceful-termination"}: .: {} f:args: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:runAsUser: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} k:{"name":"migrator"}: .: {} f:args: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:runAsUser: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:dnsPolicy: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:seccompProfile: .: {} f:type: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} manager: cluster-kube-storage-version-migrator-operator operation: Update time: "2025-12-05T12:31:46Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2025-12-05T12:31:52Z" name: migrator namespace: openshift-kube-storage-version-migrator resourceVersion: "4610" uid: c2dcd5a9-c948-40df-951f-2ede4f7c3ec0 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: migrator strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: annotations: openshift.io/required-scc: nonroot-v2 target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app: migrator spec: containers: - args: - |- trap 'echo "Termination signal received, but ignored. Continuing..."; sleep infinity' TERM migrator "$@" & wait $! - bash - --alsologtostderr - --v=2 command: - /bin/bash - -c image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7e438b814f8e16f00b3fc4b69991af80eee79ae111d2a707f34aa64b2ccbb6eb imagePullPolicy: IfNotPresent name: migrator resources: requests: cpu: 10m memory: 200Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL runAsUser: 1001 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError - args: - |- trap 'echo "Gracefully sleeping for 25s to let another pod start..."; sleep 25; exit' EXIT while true; do echo "Waiting for termination..."; sleep 3600 & wait $!; done command: - /bin/bash - -c image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7e438b814f8e16f00b3fc4b69991af80eee79ae111d2a707f34aa64b2ccbb6eb imagePullPolicy: IfNotPresent name: graceful-termination resources: requests: cpu: 1m memory: 1Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL runAsUser: 1001 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError dnsPolicy: ClusterFirst priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault serviceAccount: kube-storage-version-migrator-sa serviceAccountName: kube-storage-version-migrator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 120 - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 120 status: availableReplicas: 1 conditions: - lastTransitionTime: "2025-12-05T12:31:52Z" lastUpdateTime: "2025-12-05T12:31:52Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2025-12-05T12:31:46Z" lastUpdateTime: "2025-12-05T12:31:52Z" message: ReplicaSet "migrator-74b7b57c65" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 kind: DeploymentList metadata: resourceVersion: "51415"