--- apiVersion: v1 items: - apiVersion: v1 data: cnibincopy.sh: |- #!/bin/bash set -e function log() { echo "$(date --iso-8601=seconds) [cnibincopy] ${1}" } DESTINATION_DIRECTORY=/host/opt/cni/bin/ # Perform validation of usage if [ -z "$RHEL8_SOURCE_DIRECTORY" ] || [ -z "$RHEL9_SOURCE_DIRECTORY" ] || [ -z "$DEFAULT_SOURCE_DIRECTORY" ]; then log "FATAL ERROR: You must set env variables: RHEL8_SOURCE_DIRECTORY, RHEL9_SOURCE_DIRECTORY, DEFAULT_SOURCE_DIRECTORY" exit 1 fi if [ ! -d "$DESTINATION_DIRECTORY" ]; then log "FATAL ERROR: Destination directory ($DESTINATION_DIRECTORY) does not exist" exit 1 fi # Collect host OS information . /host/etc/os-release rhelmajor= # detect which version we're using in order to copy the proper binaries case "${ID}" in rhcos|scos) RHEL_VERSION=$(echo "${CPE_NAME}" | cut -f 5 -d :) rhelmajor=$(echo $RHEL_VERSION | sed -E 's/([0-9]+)\.{1}[0-9]+(\.[0-9]+)?/\1/') ;; rhel|centos) rhelmajor=$(echo "${VERSION_ID}" | cut -f 1 -d .) ;; fedora) if [ "${VARIANT_ID}" == "coreos" ]; then rhelmajor=8 else log "FATAL ERROR: Unsupported Fedora variant=${VARIANT_ID}" exit 1 fi ;; *) log "FATAL ERROR: Unsupported OS ID=${ID}"; exit 1 ;; esac # Set which directory we'll copy from, detect if it exists sourcedir= founddir=false case "${rhelmajor}" in 8) if [ -d "${RHEL8_SOURCE_DIRECTORY}" ]; then sourcedir=${RHEL8_SOURCE_DIRECTORY} founddir=true fi ;; 9) if [ -d "${RHEL9_SOURCE_DIRECTORY}" ]; then sourcedir=${RHEL9_SOURCE_DIRECTORY} founddir=true fi ;; *) log "ERROR: RHEL Major Version Unsupported, rhelmajor=${rhelmajor}" ;; esac # When it doesn't exist, fall back to the original directory. if [ "$founddir" == false ]; then log "Source directory unavailable for OS version: ${rhelmajor}" sourcedir=$DEFAULT_SOURCE_DIRECTORY fi # Use a subdirectory called "upgrade" so we can atomically move fully copied files. # We now use --remove-destination after running into an issue with -f not working over symlinks UPGRADE_DIRECTORY=${DESTINATION_DIRECTORY}upgrade_$(uuidgen) rm -Rf $UPGRADE_DIRECTORY mkdir -p $UPGRADE_DIRECTORY cp -r --remove-destination ${sourcedir}* $UPGRADE_DIRECTORY if [ $? -eq 0 ]; then log "Successfully copied files in ${sourcedir} to $UPGRADE_DIRECTORY" else log "Failed to copy files in ${sourcedir} to $UPGRADE_DIRECTORY" rm -Rf $UPGRADE_DIRECTORY exit 1 fi mv -f $UPGRADE_DIRECTORY/* ${DESTINATION_DIRECTORY}/ if [ $? -eq 0 ]; then log "Successfully moved files in $UPGRADE_DIRECTORY to ${DESTINATION_DIRECTORY}" else log "Failed to move files in $UPGRADE_DIRECTORY to ${DESTINATION_DIRECTORY}" rm -Rf $UPGRADE_DIRECTORY exit 1 fi rm -Rf $UPGRADE_DIRECTORY kind: ConfigMap metadata: annotations: kubernetes.io/description: | This is a script used to copy CNI binaries based on host OS release.openshift.io/version: 4.21.24 creationTimestamp: "2026-07-14T11:54:13Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:cnibincopy.sh: {} f:metadata: f:annotations: f:kubernetes.io/description: {} f:release.openshift.io/version: {} f:ownerReferences: k:{"uid":"6f4ec677-9272-49fa-8cd8-76666346365a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-14T11:54:13Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f4ec677-9272-49fa-8cd8-76666346365a resourceVersion: "2669" uid: f72e9779-8176-4ec8-a873-c76d099d98b6 - apiVersion: v1 data: allowlist.conf: |- ^net.ipv4.conf.IFNAME.accept_redirects$ ^net.ipv4.conf.IFNAME.accept_source_route$ ^net.ipv4.conf.IFNAME.arp_accept$ ^net.ipv4.conf.IFNAME.arp_notify$ ^net.ipv4.conf.IFNAME.disable_policy$ ^net.ipv4.conf.IFNAME.secure_redirects$ ^net.ipv4.conf.IFNAME.send_redirects$ ^net.ipv6.conf.IFNAME.accept_ra$ ^net.ipv6.conf.IFNAME.accept_redirects$ ^net.ipv6.conf.IFNAME.accept_source_route$ ^net.ipv6.conf.IFNAME.arp_accept$ ^net.ipv6.conf.IFNAME.arp_notify$ ^net.ipv6.neigh.IFNAME.base_reachable_time_ms$ ^net.ipv6.neigh.IFNAME.retrans_time_ms$ kind: ConfigMap metadata: annotations: kubernetes.io/description: | Sysctl allowlist for nodes. release.openshift.io/version: 4.21.24 creationTimestamp: "2026-07-14T11:54:13Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:allowlist.conf: {} f:metadata: f:annotations: .: {} f:kubernetes.io/description: {} f:release.openshift.io/version: {} manager: network-operator operation: Update time: "2026-07-14T11:54:13Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2627" uid: ed905160-5e48-4fc3-b6c0-4d87f505799d - apiVersion: v1 data: allowlist.conf: |- ^net.ipv4.conf.IFNAME.accept_redirects$ ^net.ipv4.conf.IFNAME.accept_source_route$ ^net.ipv4.conf.IFNAME.arp_accept$ ^net.ipv4.conf.IFNAME.arp_notify$ ^net.ipv4.conf.IFNAME.disable_policy$ ^net.ipv4.conf.IFNAME.secure_redirects$ ^net.ipv4.conf.IFNAME.send_redirects$ ^net.ipv6.conf.IFNAME.accept_ra$ ^net.ipv6.conf.IFNAME.accept_redirects$ ^net.ipv6.conf.IFNAME.accept_source_route$ ^net.ipv6.conf.IFNAME.arp_accept$ ^net.ipv6.conf.IFNAME.arp_notify$ ^net.ipv6.neigh.IFNAME.base_reachable_time_ms$ ^net.ipv6.neigh.IFNAME.retrans_time_ms$ kind: ConfigMap metadata: annotations: kubernetes.io/description: | Sysctl allowlist for nodes. release.openshift.io/version: 4.21.24 creationTimestamp: "2026-07-14T11:54:13Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:allowlist.conf: {} f:metadata: f:annotations: f:kubernetes.io/description: {} f:release.openshift.io/version: {} f:ownerReferences: k:{"uid":"6f4ec677-9272-49fa-8cd8-76666346365a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-14T11:54:13Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f4ec677-9272-49fa-8cd8-76666346365a resourceVersion: "2613" uid: 8262c329-7966-4f55-9a84-df4b72248c60 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIINl2oMqpwyqswDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNDExNDkzOFoX DTM2MDcxMTExNDkzOFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzR7wAwl5VaCR lr7t7aOw1fajILkCgE0xi+nCW65yat59DMA2lt3QgA0VllOzIOR+KIA9Fy8trCKY 3ciJtMF9aI+u4gs33HHi28Kl9mFSr7wqLcv3TJhNfLjYUesrhZRxlgAyKHhJLf0u GOVkj3s9oa2zpHFELFOYmT/w4kV3cOV9K07kqRj077F13Aw8RZoLbjaPIypWongf RQsMgktvNApfaBS1KAfgoqMkdHRtjrfty7EskTAdAKJhLP5hHG8xng2iahJRntGU mOSYpW4N9Etjwnj4TreEbM2DWdzN/r63WZ7H5CjWttd5PtMEqJWdKILS+XeFTUXK 6t8tmk99zQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAE/iABFP/5zwYF7q5qoiWNmju3sscDwSSQqAFGNyr9CJi7VP3 PZlLBZGMWRWolLQEHi3iDbK1o7rYT32Y7ft2TTANBgkqhkiG9w0BAQsFAAOCAQEA rqWv+ULW9meO6QAA5fp89e8Qcj9jSYwSpciJpBc8bB36ubHiwPWf7T7Kt0tKJgiI cpoJEBoA3wUmX4Ung0QNgkBM3pFG2x2urXWgThmDRfHeshFkzwD/HIZ6Bfs0YTF3 zyOlMQfVfSXJBezstWe7x49fp7sIuYxPCI49KhTaX1j0XqE9qUNUAkKsguZ9RlfL 8s1E7/XnY1GT+gBTgrePoEMGv+B884v+3N6SHEpv7y3cnHEb/IPGTvu6dfz0cV15 cSdgxvYF+sDhg3emz+gx3XTpihlYiDDnk8Ptc6wHrUQj1f1p2bh/sCReNABMIYlA rNk6JgeRxF3apI+3To3MaQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIITr1sE+xxmZowDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNDExNTAzN1oX DTI3MDcxNDExNTAzN1owMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AL/eeU0pAvXPCxCI9TWWItTNlDIgXbb0ebysAeV5BNFjpOvMgPJs3/3NuEtSVo7f 52jb3CM8ofDup1VObq3wlU9D8Lf/fu+HZ869AtPGfL9ig9r9GdcLnkf/S3rJIHQL i3nHU28heEVQIEBrxffozBwUcYbfatb2XEsv857p/xAT4/RCrdGgbCieY5j6q59D ZPiCPHLuTzDlTzq9c7LACVDiO/tOJvRlhZRlrsS9vfpFDbogANrmbc/JII1QPS8N OGomKcnd/W6WcsMNjgAqpPkC4VXc5qL04SUpThXSlZXMej1WZh1hxShXjxsVuHmd 3SO7avgB6tubRlatoh6p6+UCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAaXgXySkBD+CT+Pd705Ghkzn3UmVp3JwgBm9pjCD1i5HERASTF4QKakek p900mpH5s7woXMZDXICzozyzH+Z+XjBLBgNVHSMERDBCgEAT+IAEU//nPBgXurmq iJY2aO7eyxwPBJJCoAUY3Kv0ImLtU/c9mUsFkYxZFaiUtAQeLeINsrWjuthPfZjt +3ZNMEsGA1UdEQREMEKCQCouYXBwcy42ODAyYmFkYS0yODA5LTQ4NGEtYTg4My0z Nzg5MTJiMmMzNzEucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBADjxVsr+TdNDwy8DuLKV/ufFFtS2nh35tSgH9629cYoGyXev5R5s5umGUGKC 408iigCplu0YLB/tvyrSfGyQvxJ07jyse6nVqF0K4C7UkettJev3EAdaYa48OZ5m Jw9RxRRThTABMsxV0iHth5KyVUCnz+LMkQmEqoLZ0ZvKyjh7ER2pI3+o2pbZFSe4 R2WGT8RoKCk7H99HHgtYKTTJ6GVJckzgBpMQ7nRYxaKCyXG5kL1ZkJX8WbgGjlMF KZcwYCEfFO/ABP3pz/k73hSmWDJHCBy6W0dt/tWWpkTXeczzqIn1jt0owamiFnXT S70xk5Zs89te3xY5Gbp+YD1Bhz8= -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: kubernetes.io/description: Contains a CA bundle that can be used to verify the kube-apiserver when using internal endpoints such as the internal service IP or kubernetes.default.svc. No other usage is guaranteed across distributions of Kubernetes clusters. creationTimestamp: "2026-07-14T11:54:15Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: .: {} f:ca.crt: {} f:metadata: f:annotations: .: {} f:kubernetes.io/description: {} manager: kube-controller-manager operation: Update time: "2026-07-14T11:54:15Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3227" uid: 8f8679f0-388a-4512-95f3-941336d6b92d - apiVersion: v1 data: daemon-config.json: | { "cniVersion": "0.3.1", "chrootDir": "/hostroot", "logToStderr": true, "logLevel": "verbose", "binDir": "/var/lib/cni/bin", "perNodeCertificate": { "enabled": true, "bootstrapKubeconfig": "/var/lib/kubelet/kubeconfig", "certDir": "/etc/cni/multus/certs", "certDuration": "24h" }, "cniConfigDir": "/host/etc/cni/net.d", "multusConfigFile": "auto", "multusAutoconfigDir": "/host/run/multus/cni/net.d", "namespaceIsolation": true, "globalNamespaces": "default,openshift-multus,openshift-sriov-network-operator,openshift-cnv", "readinessindicatorfile": "/host/run/multus/cni/net.d/10-ovn-kubernetes.conf", "daemonSocketDir": "/run/multus/socket", "socketDir": "/host/run/multus/socket", "auxiliaryCNIChainName": "vendor-cni-chain" } kind: ConfigMap metadata: creationTimestamp: "2026-07-14T11:54:14Z" labels: app: multus tier: node managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:daemon-config.json: {} f:metadata: f:labels: f:app: {} f:tier: {} f:ownerReferences: k:{"uid":"6f4ec677-9272-49fa-8cd8-76666346365a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-14T11:54:14Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f4ec677-9272-49fa-8cd8-76666346365a resourceVersion: "2883" uid: 6a7b9a91-2947-44b3-a001-7313447ef535 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIF2Jsd/Rs73IwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NDAzMDM5MTAe Fw0yNjA3MTQxMTU5NTBaFw0yODA5MTExMTU5NTFaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODQwMzAzOTEwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrPZwaRTbniAVLnrFgLmbbUVzGkKmmbJDN mNFJN7fDvmzZ4v6yT4XP5Y6KdlvwrBXZepNpuSWHfFHaNfjNTCZr8MysQwbi2YVd a5wpqCSjZlSGU8V38Q/2fE+AFSfaJ2bmpDkBkxXJfdP4YofUVRMYoCwvGCmmmc3k OeJtB2xoN2/N5RVg3BZ208kqkAXKHKiF0xuLB2PebAb0ymxeujllcsgTWVzwtQUU 4T6t5Mxm0raWGkN1BBgXFG95CEh10JXJ9VksnvgHTSo7vmq8zlyKojNlL5Jrq1uu r4G0HL5vQR7x++xMIAMMIC7mTq4cThrrgtXom7T/SvNLmxrxJ7SlAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQR6beO kj/NZhMLQpWDe1fpsA4WRjAfBgNVHSMEGDAWgBQR6beOkj/NZhMLQpWDe1fpsA4W RjANBgkqhkiG9w0BAQsFAAOCAQEAC156wL9YfEFX9LbmgWz8CHku8qYHolgSEB01 hjE1Z97S94YZVRm9nXCM90DHZzSGIYmh0BIneZKrk49iesdWQ72WiwXKYiGw6SRL cRAgYgO2SBemmztxyCXbRQGs28uFib1Cm+/XdMvXiyss8uQdb0CRFub2U/jJRdy1 fep9n/Ux6yIlI3rpafhFzhRLQWbOiC2THzyfR9lJAuaVvTWAtqJzb7RZo69qOYbX 4eWl3TVk17+jIfP8+aMD+1gMlmUSIXw1YqlMmVOCpARnnDZ9JUimKi0cm8c6gLsl sl4owZeLnaEIQroV45Z5W8lfQU8zNzBI+6yaloNAxpXKNSk/FA== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-14T11:54:15Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: {} f:metadata: f:annotations: .: {} f:service.beta.openshift.io/inject-cabundle: {} manager: kube-controller-manager operation: Update time: "2026-07-14T11:54:15Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-14T12:00:05Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8323" uid: 8c479c96-d6f9-4fa0-9dcc-df1e55c1499e - apiVersion: v1 data: whereabouts.conf: | { "datastore": "kubernetes", "kubernetes": { "kubeconfig": "/etc/kubernetes/cni/net.d/whereabouts.d/whereabouts.kubeconfig" }, "reconciler_cron_expression": "30 4 * * *", "log_level": "verbose", "configuration_path": "/etc/kubernetes/cni/net.d/whereabouts.d" } kind: ConfigMap metadata: creationTimestamp: "2026-07-14T11:54:13Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"6f4ec677-9272-49fa-8cd8-76666346365a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-14T11:54:13Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f4ec677-9272-49fa-8cd8-76666346365a resourceVersion: "2782" uid: 60cd770c-059a-459f-ac5b-1acdca2fc030 kind: ConfigMapList metadata: resourceVersion: "11163"