--- apiVersion: v1 items: - apiVersion: v1 kind: Pod metadata: annotations: console.openshift.io/authn-ca-trust-config-version: "17376" console.openshift.io/console-config-version: "29535" console.openshift.io/image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb console.openshift.io/infrastructure-config-version: "528" console.openshift.io/oauth-secret-version: "17479" console.openshift.io/proxy-config-version: "545" console.openshift.io/service-ca-config-version: "17641" console.openshift.io/trusted-ca-config-version: "17711" k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.129.0.91/23"],"mac_address":"0a:58:0a:81:00:5b","gateway_ips":["10.129.0.1"],"routes":[{"dest":"10.128.0.0/14","nextHop":"10.129.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.129.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.129.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.129.0.1"}],"ip_address":"10.129.0.91/23","gateway_ip":"10.129.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.129.0.91" ], "mac": "0a:58:0a:81:00:5b", "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-11T10:48:57Z" generateName: console-69f8677c95- labels: app: console component: ui pod-template-hash: 69f8677c95 managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:console.openshift.io/authn-ca-trust-config-version: {} f:console.openshift.io/console-config-version: {} f:console.openshift.io/image: {} f:console.openshift.io/infrastructure-config-version: {} f:console.openshift.io/oauth-secret-version: {} f:console.openshift.io/proxy-config-version: {} f:console.openshift.io/service-ca-config-version: {} f:console.openshift.io/trusted-ca-config-version: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:generateName: {} f:labels: .: {} f:app: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"06d2cf7a-0180-4256-9a4f-31ef868b978d"}: {} f:spec: f:affinity: .: {} f:podAntiAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"console"}: .: {} f:command: {} f:env: .: {} k:{"name":"POD_NAME"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:lifecycle: .: {} f:preStop: .: {} f:exec: .: {} f:command: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":8443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:startupProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/pki/ca-trust/extracted/pem"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/console-config"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/oauth-config"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/oauth-serving-cert"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/service-ca"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/serving-cert"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:seccompProfile: .: {} f:type: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"console-config"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"console-oauth-config"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"console-serving-cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"oauth-serving-cert"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"service-ca"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"trusted-ca-bundle"}: .: {} f:configMap: .: {} f:defaultMode: {} f:items: {} f:name: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-10-11T10:48:57Z" - 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-11T10:48:57Z" - 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-11T10:48:58Z" - 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.129.0.91"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-11T10:49:07Z" name: console-69f8677c95-9ncnx namespace: openshift-console ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: console-69f8677c95 uid: 06d2cf7a-0180-4256-9a4f-31ef868b978d resourceVersion: "29844" uid: 733e6a5e-667b-4b9e-a359-577c976193f1 spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: component operator: In values: - ui topologyKey: kubernetes.io/hostname containers: - command: - /opt/bridge/bin/bridge - --public-dir=/opt/bridge/static - --config=/var/console-config/console-config.yaml - --service-ca-file=/var/service-ca/service-ca.crt - --v=2 env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb imagePullPolicy: IfNotPresent lifecycle: preStop: exec: command: - sleep - "25" livenessProbe: failureThreshold: 1 httpGet: path: /health port: 8443 scheme: HTTPS periodSeconds: 10 successThreshold: 1 timeoutSeconds: 10 name: console ports: - containerPort: 8443 name: https protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /health port: 8443 scheme: HTTPS periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 10m memory: 100Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false runAsUser: 1000700000 startupProbe: failureThreshold: 30 httpGet: path: /health port: 8443 scheme: HTTPS periodSeconds: 10 successThreshold: 1 timeoutSeconds: 10 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/serving-cert name: console-serving-cert readOnly: true - mountPath: /var/oauth-config name: console-oauth-config readOnly: true - mountPath: /var/console-config name: console-config readOnly: true - mountPath: /var/service-ca name: service-ca readOnly: true - mountPath: /etc/pki/ca-trust/extracted/pem name: trusted-ca-bundle readOnly: true - mountPath: /var/oauth-serving-cert name: oauth-serving-cert readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-lj645 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true imagePullSecrets: - name: console-dockercfg-8wmjp nodeName: master-1 nodeSelector: node-role.kubernetes.io/master: "" preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000700000 runAsNonRoot: true seLinuxOptions: level: s0:c26,c25 seccompProfile: type: RuntimeDefault serviceAccount: console serviceAccountName: console terminationGracePeriodSeconds: 40 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: 300 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: console-serving-cert secret: defaultMode: 420 secretName: console-serving-cert - name: console-oauth-config secret: defaultMode: 420 secretName: console-oauth-config - configMap: defaultMode: 420 name: console-config name: console-config - configMap: defaultMode: 420 name: service-ca name: service-ca - configMap: defaultMode: 420 items: - key: ca-bundle.crt path: tls-ca-bundle.pem name: trusted-ca-bundle name: trusted-ca-bundle - configMap: defaultMode: 420 name: oauth-serving-cert name: oauth-serving-cert - name: kube-api-access-lj645 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-11T10:49:02Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-11T10:48:57Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-11T10:49:07Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-11T10:49:07Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-11T10:48:57Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://d0a0690f05bf6419109c3dbe54649f8b09999cb9e8c0e0810ef25797a35afea4 image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb lastState: {} name: console ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-11T10:49:02Z" volumeMounts: - mountPath: /var/serving-cert name: console-serving-cert readOnly: true recursiveReadOnly: Disabled - mountPath: /var/oauth-config name: console-oauth-config readOnly: true recursiveReadOnly: Disabled - mountPath: /var/console-config name: console-config readOnly: true recursiveReadOnly: Disabled - mountPath: /var/service-ca name: service-ca readOnly: true recursiveReadOnly: Disabled - mountPath: /etc/pki/ca-trust/extracted/pem name: trusted-ca-bundle readOnly: true recursiveReadOnly: Disabled - mountPath: /var/oauth-serving-cert name: oauth-serving-cert readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-lj645 readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.11 hostIPs: - ip: 192.168.34.11 phase: Running podIP: 10.129.0.91 podIPs: - ip: 10.129.0.91 qosClass: Burstable startTime: "2025-10-11T10:48:57Z" - apiVersion: v1 kind: Pod metadata: annotations: console.openshift.io/authn-ca-trust-config-version: "17376" console.openshift.io/console-config-version: "29535" console.openshift.io/image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb console.openshift.io/infrastructure-config-version: "528" console.openshift.io/oauth-secret-version: "17479" console.openshift.io/proxy-config-version: "545" console.openshift.io/service-ca-config-version: "17641" console.openshift.io/trusted-ca-config-version: "17711" k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.102/23"],"mac_address":"0a:58:0a:80:00:66","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.102/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.102" ], "mac": "0a:58:0a:80:00:66", "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-11T10:48:57Z" generateName: console-69f8677c95- labels: app: console component: ui pod-template-hash: 69f8677c95 managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:console.openshift.io/authn-ca-trust-config-version: {} f:console.openshift.io/console-config-version: {} f:console.openshift.io/image: {} f:console.openshift.io/infrastructure-config-version: {} f:console.openshift.io/oauth-secret-version: {} f:console.openshift.io/proxy-config-version: {} f:console.openshift.io/service-ca-config-version: {} f:console.openshift.io/trusted-ca-config-version: {} f:openshift.io/required-scc: {} f:target.workload.openshift.io/management: {} f:generateName: {} f:labels: .: {} f:app: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"06d2cf7a-0180-4256-9a4f-31ef868b978d"}: {} f:spec: f:affinity: .: {} f:podAntiAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"console"}: .: {} f:command: {} f:env: .: {} k:{"name":"POD_NAME"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:lifecycle: .: {} f:preStop: .: {} f:exec: .: {} f:command: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":8443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:startupProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/pki/ca-trust/extracted/pem"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/console-config"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/oauth-config"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/oauth-serving-cert"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/service-ca"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/var/serving-cert"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:seccompProfile: .: {} f:type: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"console-config"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"console-oauth-config"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"console-serving-cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"oauth-serving-cert"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"service-ca"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"trusted-ca-bundle"}: .: {} f:configMap: .: {} f:defaultMode: {} f:items: {} f:name: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-10-11T10:48:57Z" - 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-11T10:48:57Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-2 operation: Update subresource: status time: "2025-10-11T10:49:23Z" - 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-11T10:49:24Z" - 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.102"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-11T10:49:34Z" name: console-69f8677c95-z9d9d namespace: openshift-console ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: console-69f8677c95 uid: 06d2cf7a-0180-4256-9a4f-31ef868b978d resourceVersion: "30244" uid: 722d06e2-c934-4ba0-82e4-51c4b2104851 spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: component operator: In values: - ui topologyKey: kubernetes.io/hostname containers: - command: - /opt/bridge/bin/bridge - --public-dir=/opt/bridge/static - --config=/var/console-config/console-config.yaml - --service-ca-file=/var/service-ca/service-ca.crt - --v=2 env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb imagePullPolicy: IfNotPresent lifecycle: preStop: exec: command: - sleep - "25" livenessProbe: failureThreshold: 1 httpGet: path: /health port: 8443 scheme: HTTPS periodSeconds: 10 successThreshold: 1 timeoutSeconds: 10 name: console ports: - containerPort: 8443 name: https protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /health port: 8443 scheme: HTTPS periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 10m memory: 100Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false runAsUser: 1000700000 startupProbe: failureThreshold: 30 httpGet: path: /health port: 8443 scheme: HTTPS periodSeconds: 10 successThreshold: 1 timeoutSeconds: 10 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/serving-cert name: console-serving-cert readOnly: true - mountPath: /var/oauth-config name: console-oauth-config readOnly: true - mountPath: /var/console-config name: console-config readOnly: true - mountPath: /var/service-ca name: service-ca readOnly: true - mountPath: /etc/pki/ca-trust/extracted/pem name: trusted-ca-bundle readOnly: true - mountPath: /var/oauth-serving-cert name: oauth-serving-cert readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-qm685 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true imagePullSecrets: - name: console-dockercfg-8wmjp nodeName: master-2 nodeSelector: node-role.kubernetes.io/master: "" preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000700000 runAsNonRoot: true seLinuxOptions: level: s0:c26,c25 seccompProfile: type: RuntimeDefault serviceAccount: console serviceAccountName: console terminationGracePeriodSeconds: 40 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: 300 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: console-serving-cert secret: defaultMode: 420 secretName: console-serving-cert - name: console-oauth-config secret: defaultMode: 420 secretName: console-oauth-config - configMap: defaultMode: 420 name: console-config name: console-config - configMap: defaultMode: 420 name: service-ca name: service-ca - configMap: defaultMode: 420 items: - key: ca-bundle.crt path: tls-ca-bundle.pem name: trusted-ca-bundle name: trusted-ca-bundle - configMap: defaultMode: 420 name: oauth-serving-cert name: oauth-serving-cert - name: kube-api-access-qm685 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-11T10:49:25Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-11T10:49:23Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-11T10:49:34Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-11T10:49:34Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-11T10:49:23Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://044fa5901fba56d1be7c30b3901846c5c8e6b627ff7cc261145d28f59a7e889c image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:8f562f655905d420982e90e7817214586a6e8103e7ef15d1dd57f2ae5ee16edb lastState: {} name: console ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-11T10:49:24Z" volumeMounts: - mountPath: /var/serving-cert name: console-serving-cert readOnly: true recursiveReadOnly: Disabled - mountPath: /var/oauth-config name: console-oauth-config readOnly: true recursiveReadOnly: Disabled - mountPath: /var/console-config name: console-config readOnly: true recursiveReadOnly: Disabled - mountPath: /var/service-ca name: service-ca readOnly: true recursiveReadOnly: Disabled - mountPath: /etc/pki/ca-trust/extracted/pem name: trusted-ca-bundle readOnly: true recursiveReadOnly: Disabled - mountPath: /var/oauth-serving-cert name: oauth-serving-cert readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-qm685 readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.12 hostIPs: - ip: 192.168.34.12 phase: Running podIP: 10.128.0.102 podIPs: - ip: 10.128.0.102 qosClass: Burstable startTime: "2025-10-11T10:49:23Z" - apiVersion: v1 kind: Pod metadata: annotations: k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.129.0.66/23"],"mac_address":"0a:58:0a:81:00:42","gateway_ips":["10.129.0.1"],"routes":[{"dest":"10.128.0.0/14","nextHop":"10.129.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.129.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.129.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.129.0.1"}],"ip_address":"10.129.0.66/23","gateway_ip":"10.129.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.129.0.66" ], "mac": "0a:58:0a:81:00:42", "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-11T10:37:43Z" generateName: downloads-65bb9777fc- labels: app: console component: downloads pod-template-hash: 65bb9777fc 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:app: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"6c7db706-e1ae-4e97-bb3c-5f4d53dcbf3f"}: {} f:spec: f:affinity: .: {} f:podAntiAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"download-server"}: .: {} f:args: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":8080,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:seccompProfile: .: {} f:type: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} manager: kube-controller-manager operation: Update time: "2025-10-11T10:37:43Z" - 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-11T10:37:43Z" - 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-11T10:37:44Z" - 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.129.0.66"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-11T10:38:26Z" name: downloads-65bb9777fc-66jxg namespace: openshift-console ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: downloads-65bb9777fc uid: 6c7db706-e1ae-4e97-bb3c-5f4d53dcbf3f resourceVersion: "18848" uid: 6958daf7-e9a7-4151-8e42-851feedec58e spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: component operator: In values: - downloads topologyKey: kubernetes.io/hostname containers: - args: - -c - "cat <>/tmp/serve.py\nimport errno, http.server, os, re, signal, socket, sys, tarfile, tempfile, threading, time, zipfile\n\nsignal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(0))\n\ndef write_index(path, message):\n with open(path, 'wb') as f:\n f.write('\\n'.join([\n '',\n \ '',\n '',\n ' ',\n \ '',\n '',\n ' {}'.format(message),\n '',\n \ '',\n '',\n ]).encode('utf-8'))\n\n# Launch multiple listeners as threads\nclass Thread(threading.Thread):\n def __init__(self, i, socket):\n threading.Thread.__init__(self)\n self.i = i\n self.socket = socket\n self.daemon = True\n self.start()\n\n def run(self):\n server = http.server.SimpleHTTPRequestHandler\n server.server_version = \"OpenShift Downloads Server\"\n server.sys_version = \"\"\n httpd = http.server.HTTPServer(addr, server, False)\n\n # Prevent the HTTP server from re-binding every handler.\n \ # https://stackoverflow.com/questions/46210672/\n httpd.socket = self.socket\n \ httpd.server_bind = self.server_close = lambda self: None\n\n httpd.serve_forever()\n\ntemp_dir = tempfile.mkdtemp()\nprint('serving from {}'.format(temp_dir))\nos.chdir(temp_dir)\nfor arch in ['amd64', 'arm64', 'ppc64le', 's390x']:\n os.mkdir(arch)\ncontent = ['license']\nos.symlink('/usr/share/openshift/LICENSE', 'oc-license')\n\nfor arch, operating_system, path in [\n ('amd64', 'linux', '/usr/share/openshift/linux_amd64/oc'),\n ('amd64', 'mac', '/usr/share/openshift/mac/oc'),\n \ ('amd64', 'windows', '/usr/share/openshift/windows/oc.exe'),\n ('arm64', 'linux', '/usr/share/openshift/linux_arm64/oc'),\n ('arm64', 'mac', '/usr/share/openshift/mac_arm64/oc'),\n \ ('ppc64le', 'linux', '/usr/share/openshift/linux_ppc64le/oc'),\n ('s390x', 'linux', '/usr/share/openshift/linux_s390x/oc'),\n ]:\n basename = os.path.basename(path)\n \ target_path = os.path.join(arch, operating_system, basename)\n os.mkdir(os.path.join(arch, operating_system))\n os.symlink(path, target_path)\n base_root, _ = os.path.splitext(basename)\n \ archive_path_root = os.path.join(arch, operating_system, base_root)\n with tarfile.open('{}.tar'.format(archive_path_root), 'w') as tar:\n tar.add(path, basename)\n with zipfile.ZipFile('{}.zip'.format(archive_path_root), 'w') as zip:\n zip.write(path, basename)\n content.append(\n 'oc ({1} {2}) (tar zip)'.format(\n \ target_path, arch, operating_system, archive_path_root\n )\n )\n\nfor root, directories, filenames in os.walk(temp_dir):\n root_link = os.path.relpath(temp_dir, os.path.join(root, 'child')).replace(os.path.sep, '/')\n for directory in directories:\n write_index(\n path=os.path.join(root, directory, 'index.html'),\n \ message='

Directory listings are disabled. See here for available content.

'.format(root_link),\n )\n\nwrite_index(\n path=os.path.join(temp_dir, 'index.html'),\n message='\\n'.join(\n ['']\n ),\n)\n\n# Create socket\n# IPv6 should handle IPv4 passively so long as it is not bound to a\n# specific address or set to IPv6_ONLY\n# https://stackoverflow.com/questions/25817848/python-3-does-http-server-support-ipv6\ntry:\n \ addr = ('::', 8080)\n sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)\nexcept socket.error as err:\n # errno.EAFNOSUPPORT is \"socket.error: [Errno 97] Address family not supported by protocol\"\n # When IPv6 is disabled, socket will bind using IPv4.\n if err.errno == errno.EAFNOSUPPORT:\n addr = ('', 8080)\n sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n else:\n \ raise \nsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\nsock.bind(addr)\nsock.listen(5)\n\n[Thread(i, socket=sock) for i in range(100)]\ntime.sleep(9e9)\nEOF\nexec python3 /tmp/serve.py\n" command: - /bin/sh image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:76058284378b0037d8c37e800ff8d9c8bec379904010e912e2e2b6414bc6bb7f imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: / port: 8080 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: download-server ports: - containerPort: 8080 name: http protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: / port: 8080 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 10m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false runAsUser: 1000700000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-5mqpr readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true imagePullSecrets: - name: default-dockercfg-pqtx8 nodeName: master-1 nodeSelector: kubernetes.io/os: linux node-role.kubernetes.io/master: "" preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000700000 runAsNonRoot: true seLinuxOptions: level: s0:c26,c25 seccompProfile: type: RuntimeDefault serviceAccount: default serviceAccountName: default terminationGracePeriodSeconds: 0 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: 300 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: kube-api-access-5mqpr 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-11T10:38:12Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-11T10:37:43Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-11T10:38:23Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-11T10:38:23Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-11T10:37:43Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://a368ebd7e5449ec4254f55beacd6ae1c83830fe1507f669e7fc7b33b7cdb82c3 image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:76058284378b0037d8c37e800ff8d9c8bec379904010e912e2e2b6414bc6bb7f imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:76058284378b0037d8c37e800ff8d9c8bec379904010e912e2e2b6414bc6bb7f lastState: {} name: download-server ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-11T10:38:12Z" volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-5mqpr readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.11 hostIPs: - ip: 192.168.34.11 phase: Running podIP: 10.129.0.66 podIPs: - ip: 10.129.0.66 qosClass: Burstable startTime: "2025-10-11T10:37:43Z" - apiVersion: v1 kind: Pod metadata: annotations: k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.75/23"],"mac_address":"0a:58:0a:80:00:4b","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.75/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.75" ], "mac": "0a:58:0a:80:00:4b", "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-11T10:37:43Z" generateName: downloads-65bb9777fc- labels: app: console component: downloads pod-template-hash: 65bb9777fc 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:app: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"6c7db706-e1ae-4e97-bb3c-5f4d53dcbf3f"}: {} f:spec: f:affinity: .: {} f:podAntiAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"download-server"}: .: {} f:args: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":8080,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:priorityClassName: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:seccompProfile: .: {} f:type: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} manager: kube-controller-manager operation: Update time: "2025-10-11T10:37:43Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-2 operation: Update subresource: status time: "2025-10-11T10:37:43Z" - 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-11T10:37:44Z" - 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.75"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-10-11T10:38:24Z" name: downloads-65bb9777fc-bkmsm namespace: openshift-console ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: downloads-65bb9777fc uid: 6c7db706-e1ae-4e97-bb3c-5f4d53dcbf3f resourceVersion: "18825" uid: 31d64616-a514-4ae3-bb6d-d6eb14d9147a spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: component operator: In values: - downloads topologyKey: kubernetes.io/hostname containers: - args: - -c - "cat <>/tmp/serve.py\nimport errno, http.server, os, re, signal, socket, sys, tarfile, tempfile, threading, time, zipfile\n\nsignal.signal(signal.SIGTERM, lambda signum, frame: sys.exit(0))\n\ndef write_index(path, message):\n with open(path, 'wb') as f:\n f.write('\\n'.join([\n '',\n \ '',\n '',\n ' ',\n \ '',\n '',\n ' {}'.format(message),\n '',\n \ '',\n '',\n ]).encode('utf-8'))\n\n# Launch multiple listeners as threads\nclass Thread(threading.Thread):\n def __init__(self, i, socket):\n threading.Thread.__init__(self)\n self.i = i\n self.socket = socket\n self.daemon = True\n self.start()\n\n def run(self):\n server = http.server.SimpleHTTPRequestHandler\n server.server_version = \"OpenShift Downloads Server\"\n server.sys_version = \"\"\n httpd = http.server.HTTPServer(addr, server, False)\n\n # Prevent the HTTP server from re-binding every handler.\n \ # https://stackoverflow.com/questions/46210672/\n httpd.socket = self.socket\n \ httpd.server_bind = self.server_close = lambda self: None\n\n httpd.serve_forever()\n\ntemp_dir = tempfile.mkdtemp()\nprint('serving from {}'.format(temp_dir))\nos.chdir(temp_dir)\nfor arch in ['amd64', 'arm64', 'ppc64le', 's390x']:\n os.mkdir(arch)\ncontent = ['license']\nos.symlink('/usr/share/openshift/LICENSE', 'oc-license')\n\nfor arch, operating_system, path in [\n ('amd64', 'linux', '/usr/share/openshift/linux_amd64/oc'),\n ('amd64', 'mac', '/usr/share/openshift/mac/oc'),\n \ ('amd64', 'windows', '/usr/share/openshift/windows/oc.exe'),\n ('arm64', 'linux', '/usr/share/openshift/linux_arm64/oc'),\n ('arm64', 'mac', '/usr/share/openshift/mac_arm64/oc'),\n \ ('ppc64le', 'linux', '/usr/share/openshift/linux_ppc64le/oc'),\n ('s390x', 'linux', '/usr/share/openshift/linux_s390x/oc'),\n ]:\n basename = os.path.basename(path)\n \ target_path = os.path.join(arch, operating_system, basename)\n os.mkdir(os.path.join(arch, operating_system))\n os.symlink(path, target_path)\n base_root, _ = os.path.splitext(basename)\n \ archive_path_root = os.path.join(arch, operating_system, base_root)\n with tarfile.open('{}.tar'.format(archive_path_root), 'w') as tar:\n tar.add(path, basename)\n with zipfile.ZipFile('{}.zip'.format(archive_path_root), 'w') as zip:\n zip.write(path, basename)\n content.append(\n 'oc ({1} {2}) (tar zip)'.format(\n \ target_path, arch, operating_system, archive_path_root\n )\n )\n\nfor root, directories, filenames in os.walk(temp_dir):\n root_link = os.path.relpath(temp_dir, os.path.join(root, 'child')).replace(os.path.sep, '/')\n for directory in directories:\n write_index(\n path=os.path.join(root, directory, 'index.html'),\n \ message='

Directory listings are disabled. See here for available content.

'.format(root_link),\n )\n\nwrite_index(\n path=os.path.join(temp_dir, 'index.html'),\n message='\\n'.join(\n ['']\n ),\n)\n\n# Create socket\n# IPv6 should handle IPv4 passively so long as it is not bound to a\n# specific address or set to IPv6_ONLY\n# https://stackoverflow.com/questions/25817848/python-3-does-http-server-support-ipv6\ntry:\n \ addr = ('::', 8080)\n sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)\nexcept socket.error as err:\n # errno.EAFNOSUPPORT is \"socket.error: [Errno 97] Address family not supported by protocol\"\n # When IPv6 is disabled, socket will bind using IPv4.\n if err.errno == errno.EAFNOSUPPORT:\n addr = ('', 8080)\n sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n else:\n \ raise \nsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\nsock.bind(addr)\nsock.listen(5)\n\n[Thread(i, socket=sock) for i in range(100)]\ntime.sleep(9e9)\nEOF\nexec python3 /tmp/serve.py\n" command: - /bin/sh image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:76058284378b0037d8c37e800ff8d9c8bec379904010e912e2e2b6414bc6bb7f imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: / port: 8080 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: download-server ports: - containerPort: 8080 name: http protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: / port: 8080 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 10m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false runAsUser: 1000700000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-572jp readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true imagePullSecrets: - name: default-dockercfg-pqtx8 nodeName: master-2 nodeSelector: kubernetes.io/os: linux node-role.kubernetes.io/master: "" preemptionPolicy: PreemptLowerPriority priority: 2000000000 priorityClassName: system-cluster-critical restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000700000 runAsNonRoot: true seLinuxOptions: level: s0:c26,c25 seccompProfile: type: RuntimeDefault serviceAccount: default serviceAccountName: default terminationGracePeriodSeconds: 0 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: 300 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: kube-api-access-572jp 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-11T10:38:16Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-10-11T10:37:43Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-10-11T10:38:23Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-10-11T10:38:23Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-10-11T10:37:43Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://cb5441fccf13a8d6993a2d076504c5ed5dd8298eee96bf1cf619fbea6519355c image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:76058284378b0037d8c37e800ff8d9c8bec379904010e912e2e2b6414bc6bb7f imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:76058284378b0037d8c37e800ff8d9c8bec379904010e912e2e2b6414bc6bb7f lastState: {} name: download-server ready: true restartCount: 0 started: true state: running: startedAt: "2025-10-11T10:38:15Z" volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-572jp readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.34.12 hostIPs: - ip: 192.168.34.12 phase: Running podIP: 10.128.0.75 podIPs: - ip: 10.128.0.75 qosClass: Burstable startTime: "2025-10-11T10:37:43Z" kind: PodList metadata: resourceVersion: "64363"