--- apiVersion: v1 items: - apiVersion: v1 kind: Pod metadata: annotations: k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.19/23"],"mac_address":"0a:58:0a:80:00:13","gateway_ips":["10.128.0.1"],"routes":[{"dest":"10.128.0.0/14","nextHop":"10.128.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.128.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.128.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.128.0.1"}],"ip_address":"10.128.0.19/23","gateway_ip":"10.128.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.128.0.19" ], "mac": "0a:58:0a:80:00:13", "default": true, "dns": {} }] openshift.io/required-scc: restricted-v2 openshift.io/scc: restricted-v2 seccomp.security.alpha.kubernetes.io/pod: runtime/default creationTimestamp: "2025-10-14T13:06:27Z" generateName: cluster-image-registry-operator-6b8674d7ff- labels: name: cluster-image-registry-operator pod-template-hash: 6b8674d7ff managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:generateName: {} f:labels: .: {} f:name: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"7d4ea25c-dce7-4e04-897c-94f5cab4d21b"}: {} f:spec: f:containers: k:{"name":"cluster-image-registry-operator"}: .: {} f:args: {} f:env: .: {} k:{"name":"AZURE_ENVIRONMENT_FILEPATH"}: .: {} f:name: {} f:value: {} k:{"name":"IMAGE"}: .: {} f:name: {} f:value: {} k:{"name":"IMAGE_PRUNER"}: .: {} f:name: {} f:value: {} k:{"name":"OPERATOR_IMAGE"}: .: {} f:name: {} f:value: {} k:{"name":"OPERATOR_IMAGE_VERSION"}: .: {} f:name: {} f:value: {} k:{"name":"OPERATOR_NAME"}: .: {} f:name: {} f:value: {} k:{"name":"POD_NAME"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} k:{"name":"RELEASE_VERSION"}: .: {} f:name: {} f:value: {} k:{"name":"WATCH_NAMESPACE"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":60000,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/secrets"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/var/run/configmaps/trusted-ca/"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/var/run/secrets/openshift/serviceaccount"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:shareProcessNamespace: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"bound-sa-token"}: .: {} f:name: {} f:projected: .: {} f:defaultMode: {} f:sources: {} k:{"name":"image-registry-operator-tls"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"trusted-ca"}: .: {} f:configMap: .: {} f:defaultMode: {} f:items: {} f:name: {} f:optional: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-10-14T13:06:27Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: .: {} k:{"type":"PodScheduled"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-scheduler operation: Update subresource: status time: "2025-10-14T13:06:27Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-1 operation: Update subresource: status time: "2025-10-14T13:07:59Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.v1.cni.cncf.io/network-status: {} manager: multus-daemon operation: Update subresource: status time: "2025-10-14T13:08:31Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"10.128.0.19"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-14T13:08:46Z" name: cluster-image-registry-operator-6b8674d7ff-gspqw namespace: openshift-image-registry ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: cluster-image-registry-operator-6b8674d7ff uid: 7d4ea25c-dce7-4e04-897c-94f5cab4d21b resourceVersion: "7599" uid: b1a35e1e-333f-480c-b1d6-059475700627 spec: containers: - args: - --files=/var/run/configmaps/trusted-ca/tls-ca-bundle.pem - --files=/etc/secrets/tls.crt - --files=/etc/secrets/tls.key env: - name: RELEASE_VERSION value: 4.18.25 - name: WATCH_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OPERATOR_NAME value: cluster-image-registry-operator - name: OPERATOR_IMAGE value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c78b39674bd52b55017e08466030e88727f76514fbfa4e1918541697374881b3 - name: IMAGE value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 - name: IMAGE_PRUNER value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c1bf279b80440264700aa5e7b186b74a9ca45bd6a14638beb3ee5df0e610086a - name: AZURE_ENVIRONMENT_FILEPATH value: /tmp/azurestackcloud.json - name: OPERATOR_IMAGE_VERSION value: 4.18.25 image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c78b39674bd52b55017e08466030e88727f76514fbfa4e1918541697374881b3 imagePullPolicy: IfNotPresent name: cluster-image-registry-operator ports: - containerPort: 60000 name: metrics protocol: TCP resources: requests: cpu: 10m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL runAsNonRoot: true runAsUser: 1000310000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/run/configmaps/trusted-ca/ name: trusted-ca - mountPath: /etc/secrets name: image-registry-operator-tls - mountPath: /var/run/secrets/openshift/serviceaccount name: bound-sa-token readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-5dlkx readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true nodeName: master-1 nodeSelector: node-role.kubernetes.io/master: "" preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000310000 seLinuxOptions: level: s0:c18,c2 seccompProfile: type: RuntimeDefault serviceAccount: cluster-image-registry-operator serviceAccountName: cluster-image-registry-operator shareProcessNamespace: false 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 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: image-registry-operator-tls secret: defaultMode: 420 secretName: image-registry-operator-tls - configMap: defaultMode: 420 items: - key: ca-bundle.crt path: tls-ca-bundle.pem name: trusted-ca optional: true name: trusted-ca - name: bound-sa-token projected: defaultMode: 420 sources: - serviceAccountToken: audience: openshift expirationSeconds: 3600 path: token - name: kube-api-access-5dlkx projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-10-14T13:08:46Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-14T13:07:59Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-14T13:08:46Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-14T13:08:46Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-14T13:07:59Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://27a4cbad3b079767e9b919d9bf0cb209bf6f3cb106ef58feb6d99ee68f84176d image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c78b39674bd52b55017e08466030e88727f76514fbfa4e1918541697374881b3 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c78b39674bd52b55017e08466030e88727f76514fbfa4e1918541697374881b3 lastState: {} name: cluster-image-registry-operator ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-14T13:08:46Z" volumeMounts: - mountPath: /var/run/configmaps/trusted-ca/ name: trusted-ca - mountPath: /etc/secrets name: image-registry-operator-tls - mountPath: /var/run/secrets/openshift/serviceaccount name: bound-sa-token readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-5dlkx readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.11 hostIPs: - ip: 192.168.34.11 phase: Running podIP: 10.128.0.19 podIPs: - ip: 10.128.0.19 qosClass: Burstable startTime: "2025-10-14T13:07:59Z" - apiVersion: v1 kind: Pod metadata: annotations: openshift.io/required-scc: privileged openshift.io/scc: privileged creationTimestamp: "2025-10-14T13:20:12Z" generateName: node-ca- labels: controller-revision-hash: 7588dc9584 name: node-ca pod-template-generation: "1" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:generateName: {} f:labels: .: {} f:controller-revision-hash: {} f:name: {} f:pod-template-generation: {} f:ownerReferences: .: {} k:{"uid":"7d1c2c41-edd7-42d2-a31d-98d6f4a3a23e"}: {} f:spec: f:affinity: .: {} f:nodeAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"node-ca"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:privileged: {} f:runAsGroup: {} f:runAsUser: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/docker/certs.d"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/tmp/serviceca"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:hostNetwork: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"host"}: .: {} f:hostPath: .: {} f:path: {} f:type: {} f:name: {} k:{"name":"serviceca"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-10-14T13:20:12Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"192.168.34.10"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-14T13:22:05Z" name: node-ca-4wx2z namespace: openshift-image-registry ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: DaemonSet name: node-ca uid: 7d1c2c41-edd7-42d2-a31d-98d6f4a3a23e resourceVersion: "20328" uid: c593965b-ba7b-477c-b906-0c57232dc126 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchFields: - key: metadata.name operator: In values: - master-0 containers: - command: - /bin/sh - -c - | trap 'jobs -p | xargs -r kill; echo shutting down node-ca; exit 0' TERM while [ true ]; do for f in $(ls /tmp/serviceca); do echo $f ca_file_path="/tmp/serviceca/${f}" f=$(echo $f | sed -r 's/(.*)\.\./\1:/') reg_dir_path="/etc/docker/certs.d/${f}" if [ -e "${reg_dir_path}" ]; then cp -u $ca_file_path $reg_dir_path/ca.crt else mkdir $reg_dir_path cp $ca_file_path $reg_dir_path/ca.crt fi done for d in $(ls /etc/docker/certs.d); do echo $d dp=$(echo $d | sed -r 's/(.*):/\1\.\./') reg_conf_path="/tmp/serviceca/${dp}" if [ ! -e "${reg_conf_path}" ]; then rm -rf /etc/docker/certs.d/$d fi done sleep 60 & wait ${!} done image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 imagePullPolicy: IfNotPresent name: node-ca resources: requests: cpu: 10m memory: 10Mi securityContext: privileged: true runAsGroup: 0 runAsNonRoot: true runAsUser: 1001 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /tmp/serviceca name: serviceca - mountPath: /etc/docker/certs.d name: host - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-jl829 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true hostNetwork: true imagePullSecrets: - name: node-ca-dockercfg-svq88 nodeName: master-0 nodeSelector: kubernetes.io/os: linux preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: node-ca serviceAccountName: node-ca terminationGracePeriodSeconds: 30 tolerations: - operator: Exists volumes: - hostPath: path: /etc/docker/certs.d type: "" name: host - configMap: defaultMode: 420 name: image-registry-certificates name: serviceca - name: kube-api-access-jl829 projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-10-14T13:22:04Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:46Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-14T13:22:04Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-14T13:22:04Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:46Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://d85789363af029709b2f7a7e6727744d1147d8d0ee33394ba6aedb6817e37616 image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 lastState: {} name: node-ca ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-14T13:22:03Z" volumeMounts: - mountPath: /tmp/serviceca name: serviceca - mountPath: /etc/docker/certs.d name: host - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-jl829 readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.10 hostIPs: - ip: 192.168.34.10 phase: Running podIP: 192.168.34.10 podIPs: - ip: 192.168.34.10 qosClass: Burstable startTime: "2025-10-14T13:21:46Z" - apiVersion: v1 kind: Pod metadata: annotations: openshift.io/required-scc: privileged openshift.io/scc: privileged creationTimestamp: "2025-10-14T13:20:01Z" generateName: node-ca- labels: controller-revision-hash: 7588dc9584 name: node-ca pod-template-generation: "1" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:generateName: {} f:labels: .: {} f:controller-revision-hash: {} f:name: {} f:pod-template-generation: {} f:ownerReferences: .: {} k:{"uid":"7d1c2c41-edd7-42d2-a31d-98d6f4a3a23e"}: {} f:spec: f:affinity: .: {} f:nodeAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"node-ca"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:privileged: {} f:runAsGroup: {} f:runAsUser: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/docker/certs.d"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/tmp/serviceca"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:hostNetwork: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"host"}: .: {} f:hostPath: .: {} f:path: {} f:type: {} f:name: {} k:{"name":"serviceca"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-10-14T13:20:01Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"192.168.34.12"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-14T13:21:50Z" name: node-ca-8fg56 namespace: openshift-image-registry ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: DaemonSet name: node-ca uid: 7d1c2c41-edd7-42d2-a31d-98d6f4a3a23e resourceVersion: "19559" uid: b14dba7b-829d-48e2-a0bb-9eef2303a088 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchFields: - key: metadata.name operator: In values: - master-2 containers: - command: - /bin/sh - -c - | trap 'jobs -p | xargs -r kill; echo shutting down node-ca; exit 0' TERM while [ true ]; do for f in $(ls /tmp/serviceca); do echo $f ca_file_path="/tmp/serviceca/${f}" f=$(echo $f | sed -r 's/(.*)\.\./\1:/') reg_dir_path="/etc/docker/certs.d/${f}" if [ -e "${reg_dir_path}" ]; then cp -u $ca_file_path $reg_dir_path/ca.crt else mkdir $reg_dir_path cp $ca_file_path $reg_dir_path/ca.crt fi done for d in $(ls /etc/docker/certs.d); do echo $d dp=$(echo $d | sed -r 's/(.*):/\1\.\./') reg_conf_path="/tmp/serviceca/${dp}" if [ ! -e "${reg_conf_path}" ]; then rm -rf /etc/docker/certs.d/$d fi done sleep 60 & wait ${!} done image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 imagePullPolicy: IfNotPresent name: node-ca resources: requests: cpu: 10m memory: 10Mi securityContext: privileged: true runAsGroup: 0 runAsNonRoot: true runAsUser: 1001 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /tmp/serviceca name: serviceca - mountPath: /etc/docker/certs.d name: host - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-h5rf5 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true hostNetwork: true imagePullSecrets: - name: node-ca-dockercfg-svq88 nodeName: master-2 nodeSelector: kubernetes.io/os: linux preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: node-ca serviceAccountName: node-ca terminationGracePeriodSeconds: 30 tolerations: - operator: Exists volumes: - hostPath: path: /etc/docker/certs.d type: "" name: host - configMap: defaultMode: 420 name: image-registry-certificates name: serviceca - name: kube-api-access-h5rf5 projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:50Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:46Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:50Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:50Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:46Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://a6712211fa663f11cc06d2f09c27ec76fc938ea7a2a801ba362098b3d8615c32 image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 lastState: {} name: node-ca ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-14T13:21:50Z" volumeMounts: - mountPath: /tmp/serviceca name: serviceca - mountPath: /etc/docker/certs.d name: host - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-h5rf5 readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.12 hostIPs: - ip: 192.168.34.12 phase: Running podIP: 192.168.34.12 podIPs: - ip: 192.168.34.12 qosClass: Burstable startTime: "2025-10-14T13:21:46Z" - apiVersion: v1 kind: Pod metadata: annotations: openshift.io/required-scc: privileged openshift.io/scc: privileged creationTimestamp: "2025-10-14T13:20:01Z" generateName: node-ca- labels: controller-revision-hash: 7588dc9584 name: node-ca pod-template-generation: "1" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:generateName: {} f:labels: .: {} f:controller-revision-hash: {} f:name: {} f:pod-template-generation: {} f:ownerReferences: .: {} k:{"uid":"7d1c2c41-edd7-42d2-a31d-98d6f4a3a23e"}: {} f:spec: f:affinity: .: {} f:nodeAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"node-ca"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:privileged: {} f:runAsGroup: {} f:runAsUser: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/docker/certs.d"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/tmp/serviceca"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:hostNetwork: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"host"}: .: {} f:hostPath: .: {} f:path: {} f:type: {} f:name: {} k:{"name":"serviceca"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-10-14T13:20:01Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"192.168.34.11"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-14T13:21:51Z" name: node-ca-xvwmq namespace: openshift-image-registry ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: DaemonSet name: node-ca uid: 7d1c2c41-edd7-42d2-a31d-98d6f4a3a23e resourceVersion: "19697" uid: e37236b2-d620-45d8-985a-913c91466842 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchFields: - key: metadata.name operator: In values: - master-1 containers: - command: - /bin/sh - -c - | trap 'jobs -p | xargs -r kill; echo shutting down node-ca; exit 0' TERM while [ true ]; do for f in $(ls /tmp/serviceca); do echo $f ca_file_path="/tmp/serviceca/${f}" f=$(echo $f | sed -r 's/(.*)\.\./\1:/') reg_dir_path="/etc/docker/certs.d/${f}" if [ -e "${reg_dir_path}" ]; then cp -u $ca_file_path $reg_dir_path/ca.crt else mkdir $reg_dir_path cp $ca_file_path $reg_dir_path/ca.crt fi done for d in $(ls /etc/docker/certs.d); do echo $d dp=$(echo $d | sed -r 's/(.*):/\1\.\./') reg_conf_path="/tmp/serviceca/${dp}" if [ ! -e "${reg_conf_path}" ]; then rm -rf /etc/docker/certs.d/$d fi done sleep 60 & wait ${!} done image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 imagePullPolicy: IfNotPresent name: node-ca resources: requests: cpu: 10m memory: 10Mi securityContext: privileged: true runAsGroup: 0 runAsNonRoot: true runAsUser: 1001 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /tmp/serviceca name: serviceca - mountPath: /etc/docker/certs.d name: host - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-745h2 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true hostNetwork: true imagePullSecrets: - name: node-ca-dockercfg-svq88 nodeName: master-1 nodeSelector: kubernetes.io/os: linux preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: node-ca serviceAccountName: node-ca terminationGracePeriodSeconds: 30 tolerations: - operator: Exists volumes: - hostPath: path: /etc/docker/certs.d type: "" name: host - configMap: defaultMode: 420 name: image-registry-certificates name: serviceca - name: kube-api-access-745h2 projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:51Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:46Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:51Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:51Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-14T13:21:46Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://5cd725ef29fe3c227043090c0656f7d49d1d79b074e6118964f9fcea28baf6dc image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:033c253ddc49271d2affc9841208ba0a36a902d5cf00eae4873bae24715622d2 lastState: {} name: node-ca ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-14T13:21:50Z" volumeMounts: - mountPath: /tmp/serviceca name: serviceca - mountPath: /etc/docker/certs.d name: host - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-745h2 readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.11 hostIPs: - ip: 192.168.34.11 phase: Running podIP: 192.168.34.11 podIPs: - ip: 192.168.34.11 qosClass: Burstable startTime: "2025-10-14T13:21:46Z" kind: PodList metadata: resourceVersion: "61203"