--- 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.26 creationTimestamp: "2026-07-28T13:41:24Z" 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":"efbfe2a0-19e8-48a0-8755-0d179f7d3268"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T13:41:24Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: efbfe2a0-19e8-48a0-8755-0d179f7d3268 resourceVersion: "2374" uid: a12d7e2e-0216-4e00-8850-3f32427c85d8 - 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.26 creationTimestamp: "2026-07-28T13:41:23Z" 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-28T13:41:23Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2369" uid: 3d05b06a-432d-4e34-9eef-ce84a11a67ea - 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.26 creationTimestamp: "2026-07-28T13:41:23Z" 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":"efbfe2a0-19e8-48a0-8755-0d179f7d3268"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T13:41:23Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: efbfe2a0-19e8-48a0-8755-0d179f7d3268 resourceVersion: "2368" uid: 8c0882c0-d149-4d1c-89ce-7a65731cd3b0 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIE7AGbEnc9BcwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODEzMzg0OVoX DTM2MDcyNTEzMzg0OVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlPUos9VDN3FG DhrNYUQPQjKg932tZzk2GENLZrf13sYvWb6xZnCvtAGbCkgzUJ5AUNRMN8rvXHft +Pz6pitTylhXVRU/CouugnyLtWT7JwZTE/NngDu9Qz4pv7ZJCHsGqpG+QX+dK02I 5gnM0N4KgR7xY6NUIkh5uvFKONHmzNWf53flh4VgiOCqHfHlQmnXM+4vkleDOsuD kF1sDEAc66X7eh+WGBxzTsegzIbbFwT6od5pTZSm5ABrHseWe5aC9hmU2J2Fw2ys RubGsNqOO0iOmSPVwoFw3glRVudCI5UqV03RRPK/U5jNogixd2kakkFjCyZ8TQCS h4oiAvHqwwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRA3F8xGZ0Rs08hlKe3bLjqP+w3KJX+as/D6vdNOMQa+CnCeVgb WVPfb1vpR/IhJvRmu3BuUPR/Olm/OYsQeoTQIjANBgkqhkiG9w0BAQsFAAOCAQEA iKk+unfPuBbIuc18wuFY4XIFVmS3v0hwmsKV3RfiOrbrNdtlOt1dxrPy4fqWvbw8 VD3pr6XgIHYD9jS9hwRg+rHiB6zUA6ESVwrD+pOxBMkBv6Mgpm+J87ja2NF5AnCO nVm6AVuHHKoyDPzKNVLXUadRtIT2V+2trhxO4mscpoDttg031UsweQZXntxj+WBq rPOQvMOuZJ6hd8QGV/Do1KMwcTnW+R45dx7+SxI/L+IEBTI97+OrpogD/wKqJ8Mt R2KHlXz5n5RmXRcmLTeVPHv7Xt7RZJNf8CcdVEYfXj6NsiJnqlBYp32hsdtXoOad rHE3X0jqXMQkg9xOSkqSTw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIMYTZeEPai9kwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODEzMzkyMVoX DTI3MDcyODEzMzkyMVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB APCPBmX4b6Ujl9PaVxPGeGtOhFYsWT/wosQpIXBeFy5QU/4t20VEtjoND0I26SSt gFhKhNUTmrNswScXvSS3gOx4HKbN4Sw4/Y0wJdZoiwGLgRx4ByqhEJKpzCx2DJ9I KTIfHPtmmHVM8Yyfrt8UjKY31/1LuclpmB4BQDziCZzlWPooJEKDi9MMfn5HPfJN i4niZW+c+V9JsfgoNvW54fIWrSCqwEjdLg+z/KLEdZ+t8mdo89sJeiddbHBcTjs3 rx1PQl219fkNKUcUBqkHwnATjnjopXubyWvIXg91kCtE/d0ywR9ExkJi1q7Gc+NW /T8WVCvpXYT9syRJn3GFpvECAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA5dxhqtxxdbzkG7dv9KLA333zsKEBpB2+aZub33HT57uhITCLKFbGrQyN ZubUAUYneNrqwPCb3czLsZAmn5aSFzBLBgNVHSMERDBCgEDcXzEZnRGzTyGUp7ds uOo/7Dcolf5qz8Pq9004xBr4KcJ5WBtZU99vW+lH8iEm9Ga7cG5Q9H86Wb85ixB6 hNAiMEsGA1UdEQREMEKCQCouYXBwcy42YzVkZGI0My1kMWI3LTQ0OGMtYTc3MS0z YmMxZjdkYjE4ZWMucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAC+ztggxBhU1hkHRc/3qCQqhGnNpGZL0Oja6ROrY4NiAuIl8wTCTlW72+Go0 yL8Vc9v8uRxUKVZxOD9OStTV4kw+G52Khg4dCz9TDnSnJxNelOxSecgLwN90+o9c waD6wWeUW9fDbPs4dl7b+ufVw/Rb6AtDkffEQUFwy7SaIt68nDLawB2dTGgsDbMe QD2DnbCuqYf735JMLr0Yoa3NOnjVpSNxeJBzopTQY34lmM94wHKHxqFrMa2tHJHc 1Xvty4M9ro/TAddMlmiYKO/X0IIk2jnRvKdEjHbxYXPEOIaZx7skCccDf3mQtG4/ 72LZJebeJjZ9GOdjDg9v4xBsgzA= -----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-28T13:41:34Z" 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-28T13:41:34Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2673" uid: bd446128-476c-4fcf-8fe5-9dfffe487351 - 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-28T13:41:24Z" 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":"efbfe2a0-19e8-48a0-8755-0d179f7d3268"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T13:41:24Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: efbfe2a0-19e8-48a0-8755-0d179f7d3268 resourceVersion: "2385" uid: bb6710c6-3cb0-4a90-aef3-162a8b69ac71 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIITcbmRk/FdRIwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTI0NjQ1OTAe Fw0yNjA3MjgxMzQ3MzhaFw0yODA5MjUxMzQ3MzlaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyNDY0NTkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWwtlGX2lMLIZrX2j4NZOXeNtBRDpKG+9a Ftxz8eHEBbCHBk8yzF6W9t58EFeyVlD3zC/o0pfs8INzcOKYne8YRMioaMaIXODZ bVIN20POMk5GMsiu4g32yJW5Q04bCyymn3aQ2zVyCV0zZw90AVvdHKLExyG5f7Vd 1W7RopZCtV1Ekm6UM7T5CDr9A4BNDT+HR9FgwzsNTcgRbJrgpbqWUa+VjhOJkHFp JljYeRRMot/0KBq7/d6W6Cr+GpngQ2ZbsmexxYXUwuZvyYE702X7qwohzZuNAW9C KY3Vee/B1sK+yelJhsnuZ6mpe5qxiqVdrm/GqnUZl2iYeMwd4TKzAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTfM+P7 ntdBXmLmeQSPkAg+ydrcBjAfBgNVHSMEGDAWgBTfM+P7ntdBXmLmeQSPkAg+ydrc BjANBgkqhkiG9w0BAQsFAAOCAQEAFh8prRervQT8RnzNvLPxNfPgUKoem+lmWNWC NdPaR6XHGjo95e+9I3fjb+3AgSv63nC/Yc0vJtFsTfrfOuCqgMpbIz/FnTaHxXFN TK36FHPDxUNpBh/t5C+a13nwtKjq14XukWUGH1gxBuoDfYkGDbjMqm2p5WeV3pjv 9MceZ4D/YXqt62hJ3vDQ0oonnfsJUDZF6v8G/qyZPoNEkQlDT680pw37jiooXbX6 4yCpR1M2CwuVsQRnP3x9g11wgbpGEhy64r259XlQ0CSQC1uww5AYIG1nmk9DrzN+ o6IGf8dtOHQd9lq9qCb+iTqcITjXCLLawMvUzbsxaVwbppAqVw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-28T13:41:34Z" 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-28T13:41:34Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-28T13:47:54Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "7788" uid: 4fe0e511-a817-4ddf-9896-1fadf02a3968 - 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-28T13:41:24Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"efbfe2a0-19e8-48a0-8755-0d179f7d3268"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T13:41:24Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: efbfe2a0-19e8-48a0-8755-0d179f7d3268 resourceVersion: "2383" uid: 276252a8-e08d-47bc-892f-1da8aeee60a5 kind: ConfigMapList metadata: resourceVersion: "15549"