--- apiVersion: apps/v1 items: - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" operator.openshift.io/spec-hash: 485c1601ee993df282c3f9d471edfa829f8bab9f87904688146d04e517570c88 creationTimestamp: "2025-10-11T10:28:18Z" 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-10-11T10:28:18Z" - 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-10-11T10:28:21Z" name: migrator namespace: openshift-kube-storage-version-migrator resourceVersion: "5171" uid: fd531acf-856b-4148-a913-7447cccd62f9 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:f0d6e7013acdcdd6199fa08c8e2b4059f547cc6f4b424399f9767497c7692f37 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:f0d6e7013acdcdd6199fa08c8e2b4059f547cc6f4b424399f9767497c7692f37 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-10-11T10:28:21Z" lastUpdateTime: "2025-10-11T10:28:21Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2025-10-11T10:28:18Z" lastUpdateTime: "2025-10-11T10:28:21Z" message: ReplicaSet "migrator-d8c4d9469" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 kind: DeploymentList metadata: resourceVersion: "64727"