--- 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.23 creationTimestamp: "2026-07-06T20:58:22Z" 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":"7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T20:58:22Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec resourceVersion: "2318" uid: 131bc95b-1d01-4429-afec-a080200fedcf - 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.23 creationTimestamp: "2026-07-06T20:58:22Z" 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-06T20:58:22Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2315" uid: a5d94abf-623e-479a-9412-2fa6175a801b - 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.23 creationTimestamp: "2026-07-06T20:58:22Z" 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":"7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T20:58:22Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec resourceVersion: "2313" uid: 8efe0f42-77a2-4de5-88dc-8edd2a2c24fa - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIFM6MzD9//2cwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwNjIwNTU1OVoX DTM2MDcwMzIwNTU1OVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkuQTaEMd++46 5sthbCgocfooitW6qSLmhjE2+VvnAav71Sh2H2+7puPR/Q5NG+gJKzO9Wp5x+5zA dqd10bSw5HK8q1XmcToCcq8TY2ROQsDKB7OuFdEo9FmG+TwZ8NiRXXyrfhI06e6D XjRzIMXdKf3moYEVh/8XW/0fAfYECqc8Ka1YxIWIHbjQlM3uoZsg+9N8bQjgT7xv ZuJfNwPSH1dNNILkNDmSZ8ZMHZne7bH8wAfnJPJqFMz56Mu+4Uqe0YV518nviNaO W+3dC4CEs2YKqXcYWZdpIZjxAgVby90SOswcvzDRGOnl9P5Hvwjp8wKzVuE4OrJV SLDhN7wpTQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRABMXew6GJG5iw62Igeq2PzA3N3RizPlmr9dkrPXea3kX9fiP1 W0qfFHYovw8hzgd6CVQ2747rVrcSx8gv/7+kvDANBgkqhkiG9w0BAQsFAAOCAQEA L+0UaOC2oUPij1tTOZklRF1N75Y0qiEdkG/QIr2zLdURF415LBc0kpK1JXGYgvPC lmpHMxGIYt1RAcXfTjIeR7l9fPIpHBsr6O15O8yxC6cLSs0ii9QDGh0kuITVUPSa uz5etx4boF7OjATT0Z2IXa0mwMp4Se7SrS6xtKsUsLQLtd9erA4nvSILDVx1CiAS EO1h9ZxlF7/qgUf7a73xl3uI0LWObwnG1pI9X4/9J2vNCEOwYOhidf79YdraWg7t MagL9k28fCaZrf1/PbJ7b9nJlSr4hB/hoqTvVaWD8w58rpX53xQcQ1ZVI4klh6tH lBdYv5gpirK2COC1Q55XFw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIcdU1IjPFhBAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwNjIwNTYzMVoX DTI3MDcwNjIwNTYzMVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMteq3/NNGsZY80ONDcFYirp1MAPMemBeMgYGhG8YS0RecU3pK87PB6dVSygoTEX mJxv6LTraLzMENUQccEp7GssaxKMPT7b4twiYKcfMNLKpLY7ckr3/a+gSsFo0i8Q 2T4LHKUvzSJrZXp3WQ2gx3l8hsFKLSd7J4nHg0hXqMe7urRx6UjbUMTTWXnm7shB 7w7pF0LVe/IMJai/mUMjqAAckKYYXqMxYIdqBAKyy1moMy0lCK6Iq8gfKV7j286T LMr7NLx5hnwLEdrFXl87qc8Zb9t7fDMdpLeAWkHtpKl3fRd2B4SL173N/gFSunaw zanj7OH7Yp3dbJ8UKtVTvVcCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA8nJDmgM+oNSmqY3jY2+XmIe/gxkZ12YhGFcuMc1W/exWqvHF82pRF75z lFQEt54fTfEmBxfYX2+LBtUH1PSTXzBLBgNVHSMERDBCgEAExd7DoYkbmLDrYiB6 rY/MDc3dGLM+Wav12Ss9d5reRf1+I/VbSp8Udii/DyHOB3oJVDbvjutWtxLHyC// v6S8MEsGA1UdEQREMEKCQCouYXBwcy4wYTQ5OWE5Yi0wZjc5LTQ0OTQtOWM5NS04 YjNmN2I2YTE5NzkucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAEQjqe9DhEnmkXDQydRBrs5bn/HselMIbL70bEdvtobC6t4plUopzRG3tMuk D86q3EfW6DlNPtL+gDuNJgxCXPGvv32Rb/souEWA7Zk8N66hceTHfrdbgApDw1Rx ZXomX6tVIW4JGUyNxybYS7uB4O2qOcykky7BvrcqLzSGHdJ5jj5GZ7SFCT33+8Ry twKatBdVggQzOBObUUt9tZYjB4Vbz5W4+lesjLIrkv3P/ZJpybmmSJnykUyBtjam mL5KOyrAVsKRsfl+8kkNLZ335lkyd9mAxu+i3R+UmyZd25xMRsmW88gUEd6E5iX8 H6vzWZH+cg7gTMIbRn4d9BEe1sM= -----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-06T20:58:31Z" 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-06T20:58:31Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2581" uid: 89fd6a58-aad8-4d10-ab73-475189030609 - 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-06T20:58:23Z" 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":"7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T20:58:23Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec resourceVersion: "2325" uid: cf5aea91-5fde-4a5f-bfca-59fe92447281 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIZF8wPghwZQQwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4MzM3MjExNzAe Fw0yNjA3MDYyMTA4MzdaFw0yODA5MDMyMTA4MzhaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODMzNzIxMTcwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwfXy1mhvrLaTzXzb+sunr6PZpqWFDRSK/ kjAapCOk2AdqxzZxFrRnUFJfmP9RWvPjCAqAyrIEWAkXlpPsyvxzkrT1/rIYoqIO ndjWlHGd30kOLChj86Ab4f4ziZzrnAR6wZsldi3wtuo9r8SniHYBFSjRoqRWN6wD P7G2V2XhcA6lQNCBS4P3FcYWEI9ZwD3H05U9RzeiQH+kvOZ3ayQZsTDvioOUZuaS in+R9IaJVXltrB+lVVtEykk0uo0d6x1bPc9XBz4TUoWCVRlEsxnJyOPKkvhri5bl nLsJg737IVoNB8D5+ry+cOM9VUoogCHIiIkyVRqCuGwDfi+qH5IJAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIrIwZ 71hFYZaq8hys5F+HyaC1DDAfBgNVHSMEGDAWgBTIrIwZ71hFYZaq8hys5F+HyaC1 DDANBgkqhkiG9w0BAQsFAAOCAQEAGrYflpwvVpnsx1zDVKbFF33/YPvDPyfufvFl ooO/bziLtUiHEF/JIgfWztNktO2iiTevhnCOOIJKBbYFDnpVCiwPojjURSYLuGgo UvIRElOhGepKGigL6wRsozqptJLhCuZmuRb7YNClNWg4WhRr8mBn77wO8dePsJkA 1m5B2DoFvUwLsy60oz/G8EeJj5m70KoqaCwrc+TNuPcVxAa0MMyCRwfx3xq9iYRW 2XVWrRy0Mi4qEhESpFuij9GGJ16ZD9k+JJfU1weJ+fztPjD32howD7fneTUOieg5 YEviaMSK1b9tH4mTYKHADLRo84rao/mmAYSEWq0SHL2OIhA3zw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-06T20:58:31Z" 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-06T20:58:31Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-06T21:08:50Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "9150" uid: f96fdf2e-da11-4e12-afe4-3a6563254b02 - 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-06T20:58:23Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T20:58:23Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 7d42f9a3-4dd8-430a-b83e-65cdefc7e9ec resourceVersion: "2321" uid: bfc4a6b5-26c5-4b5f-a954-f3f03f29328f kind: ConfigMapList metadata: resourceVersion: "12212"