--- 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.27 creationTimestamp: "2026-08-04T09:35:38Z" 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":"b1c9f152-84af-450f-b0ed-944565583fae"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-08-04T09:35:38Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b1c9f152-84af-450f-b0ed-944565583fae resourceVersion: "2588" uid: dc92a9a9-44de-4ca1-b8c3-8192af7dafd2 - 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.27 creationTimestamp: "2026-08-04T09:35:38Z" 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-08-04T09:35:38Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2585" uid: 5ecd1c7a-78f6-4b05-b87b-c339d6cb172a - 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.27 creationTimestamp: "2026-08-04T09:35:38Z" 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":"b1c9f152-84af-450f-b0ed-944565583fae"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-08-04T09:35:38Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b1c9f152-84af-450f-b0ed-944565583fae resourceVersion: "2581" uid: e1938607-a3d3-4377-9a63-7c7186969065 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIICctkWX/G1xowDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDgwNDA5MzIyMFoX DTM2MDgwMTA5MzIyMFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyF3T6sgubYdM u6rW8cb2pQv09Wke2kJB6+rXw0ri0p3GpCblxbAe61/CfbDht3DpYGWJI2xK4W8y pD5KpqavrqDsCB+A73XtQVqlqPl0bSTIVFxeeqMBmV+qDGvaW97g7msRivyuBKfP D2EgRnlMmFpL2VQT9ETSsifZcrkyROm8oL8Y6mLizNwMWZiqusOUIIUWNrCyZQs7 6pY1Kh/4C6t81WeeAETLiqx+u079UdyEG9hsUyoJAkLdv8Aung6UX81cOL/NV333 fhZDyVQxG904P34geR0IS7pc2vWugGGuY47UPH57JFM7QBPq43ixhwnnr6V556vQ qSwV+0CVcwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAdOVQERSrf7PwAw6Ph9w9mgQdKOhpigiqIERaKilzQbHJCvCi MeRM0m6QZDfe4mhvhAbrR2BSADe+d8dKQRzODTANBgkqhkiG9w0BAQsFAAOCAQEA Nfg5JhaXXB6PUihWzQxSmq6r294lj/zU6Q7E1P/CdaN6vySYZgNpjAGnwh/GVbbz Of4ox8sbjgsje+Dm/6toZ54kqZ747LBp5VjhGxnQ/yqKUzaiN6Zl7Vgb6tfBNsjf d7+ajaLQW64fkq8UnZz5IJsS8QW7PJ+oc1goNXSGGk3NgTQ1RozLnn8Vbx76CMni 1avLJMjmZsQSA0sAbSeoNdkLqYPudTqHAkpt42ZhJ2jgPxMu3w27DR8fTJOUIcCz L3hnO8lOm5CXeQ6CAgEkvOfKIuvLDH4NKguv2xKXQv+zXqo0kMk1imqCGNaE9DyY 3oq0XbffGCT2E749Xo0K2g== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIdpPhdJ8a/QEwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDgwNDA5MzMwMFoX DTI3MDgwNDA5MzMwMFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALzewANUwgaDVz1lfkggIPpqO3k2EcWamUJxCxMVJC1fPYgDWcedvqoYuOmWSpsI HMAJZy6oXNneYViN9zsPpIQgK/hC33TFgc9zMs8DM7re/BOPFWq7as8cKCsxaV2k gfgeApzEk+oNbCwHfEgWRdw4CjafjkcKFFfk5yL7kjc8aZrOEl4oce48d48bC99E Zkq3GHiAeIteVLC3kk7rLFElFRynWoE8UHngSINVzewgywXYJuAriLzASquTcWU2 0BX8uW3iZprorlpz1ODPQPGThK/oEemSYWFlT4lSwR7/FdQS7l+IctjWf6g8JwSS SaAMrwUPNWNohlqed4TzEC8CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAjwQKb8GAHSp1oGAarRaXSFtdniz0sjXCKeiwTJVM+HxytiduMzIN1meu bOmFboCHSBgH+pkxFv4ZzzlbhCK5qDBLBgNVHSMERDBCgEB05VARFKt/s/ADDo+H 3D2aBB0o6GmKCKogRFoqKXNBsckK8KIx5EzSbpBkN97iaG+EButHYFIAN753x0pB HM4NMEsGA1UdEQREMEKCQCouYXBwcy44ODdkNzViYS1jMDY2LTQ5NWUtOTU4OC05 ZTkyOWRmNjZhZTkucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAA/BhuGPhlT2C6rX3tcba5BPDTUVHu6Qmk4mkYAWHkaH/iP85fylaQt0tchV FP0YEdt2pFK8WVg0AJtsX+hBkacwX2X1Q/6buvbeerPiwGeo7Rj0C0ljB7lzlVXt 5jHqippYZC9o3Fv8l0s8G3ux8qp5euw6Wp/OWAJPml9rLtuipAu+FVVODk5FLXJi Gn7btJIuY2/rgiZ7bpVY2q1G3xh2VLnZ1z7iHihDJwWXRCZyD5LNnYTwmwOJERIy UoQNwlAqJLzKQt/DQ40eq/4IE06JSDB96R8bPS/L/j1RDgI2tGHUC3U0Q8mA6SBI Kwr4b661w6AReZa2OMAcPxFJD/E= -----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-08-04T09:35:49Z" 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-08-04T09:35:49Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3744" uid: fe9c7e8d-b45a-4c65-a4f7-48b84070c792 - 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-08-04T09:35:39Z" 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":"b1c9f152-84af-450f-b0ed-944565583fae"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-08-04T09:35:39Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b1c9f152-84af-450f-b0ed-944565583fae resourceVersion: "2597" uid: 43dedc06-7a8b-4213-b113-aca77c4a5a98 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIGQJjGIjTe9owDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTgzNjQ4NTAe Fw0yNjA4MDQwOTQxMjVaFw0yODEwMDIwOTQxMjZaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODU4MzY0ODUwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2Z0829qDvReg/nmPPkdO/MJdko14+wECb O7naIFTeeH6u79HjjYcRG2kZkmCui4ZD9dVtnNTYSX5D031wLNxM7Cz5J8WP9Yo7 D/8GqePx2osCpaFfCEEHpnhtQFhimrR2JifmhYwe3o3apjEevJxUEouJ74peUbqa 1Eb9fBAf+xYsF8zecXObpHxnEmSzH0sbAVkW2b61LugN9UTyFT2+HZhraVI3CZNy +cgr3nuPGPnHHTthsQr5oIbEUOr/fDeVPhJA4QzLxgM52TEuwwiTW9wRgfznmxNH dNs7kcCmYBhlv4oBIRWctXhzVc15EtlZ1XnkIipPrawmHPECP3NTAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRnnHzT SrDVWsMSVOq8wEHGeEsVyzAfBgNVHSMEGDAWgBRnnHzTSrDVWsMSVOq8wEHGeEsV yzANBgkqhkiG9w0BAQsFAAOCAQEAEod0NAKYviTwz6Q5YsVpukrfn1tp8VqNyFbu OZwwNCudSlrFHMz18ApXCWVB9IMs2cNd84aKpUrcOjDbrxNrivPjbEoKmYaNzEXA 6QmyVl9l34FFxW0RmgmMTsbtghG1nRhpj/C+hV1QzJIvLvvKsyVciedO2s7qETp/ 7LTMliEdY23BxU8nUyNM+wooQCwGzxPgzByAC0VGTojEOoRtH22hfvsJuQmTyyI8 IiuplVe2liR9Q/wEuS0w076PIX/QgzJcEMKDnUrQb7gvEhWfgeipu9Vms8JsMmQa 10MCBQkeD0XdI7vuEu7UPdygg4Q5/Au4fTZ6+46DwfdVLKv5tw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-08-04T09:35:49Z" 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-08-04T09:35:49Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-08-04T09:41:39Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8112" uid: a97dad5b-e0cb-4fdb-8c91-b735e60c0b42 - 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-08-04T09:35:39Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"b1c9f152-84af-450f-b0ed-944565583fae"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-08-04T09:35:39Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b1c9f152-84af-450f-b0ed-944565583fae resourceVersion: "2593" uid: 3283368f-bc87-49aa-9319-6622e3ef20ff kind: ConfigMapList metadata: resourceVersion: "15810"