--- 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-28T06:45:47Z" 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":"9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T06:45:47Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe resourceVersion: "2724" uid: 5c127728-e6f3-419d-acf1-27fbfa6e04cd - 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-28T06:45:47Z" 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-28T06:45:47Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2719" uid: b08f7bd8-abd5-4457-a54a-1826657d9ed4 - 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-28T06:45:47Z" 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":"9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T06:45:47Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe resourceVersion: "2718" uid: 1262e452-6dcd-4da8-a51a-1ad1e97708ac - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIObVzv5ttNe0wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODA2NDMxOFoX DTM2MDcyNTA2NDMxOFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA09hz2XYpm5O2 SW0n+1etbJLBTqHPvia9/z3x1x1tyL820cezJAKq7LiPWU4Cew9Ud0E6PfvBaHOb 2/KiIRYKij1oq75JjaQj/zfQloFbzVSXtpUVwf9ZlH/wqn72S1KVQFLEUUU+Y+wY 4QXY2SlWQ5oVKUS30AcgTcRfR3HKfmM1MxFA2JgKNIbRNdgak8zLe6QuEs2LjKbu vbWn6qTd9mmMQ9r62bzV5g7zsGdvq8WtGyzUel9Ivr61G9EBtFNlpSK/c5kD5DLi 7iND/aYtsPoD+3vos7Fh1avDMOmLZH+GN9mrxxEUHo/TUf/K3nZn1ob9ECOOU7BY 7tBQv9GgtQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAaqqzqTa0+jqH7Pghd9i4agxcsrwfRvuVFWaEJ8CaXcyv3hw/ Rf4UxbmLrGG3XOxlb70A1l5tFAaMCz3AZOBzXzANBgkqhkiG9w0BAQsFAAOCAQEA R4PB+OxXDDiV6mS5JstiHZ2fYY6/ZJQbAKEwQi0fTrg3nrNP/lYJ7PLYNyrphTsH sNz8/SI9wWbZwKtoGw0TmwLuTwCsW/wCxIYDUOJkJGLcnHgI8fe2UOjONkd1EhXo BmtTSezJA3bH5eHqz/F04jEKKZpEe5RnPb/RwVw0mvjCUwPIMBrXsa3ROCJuZZZi tSwCyu4OJgUmBb2PPhmrYD0dytH7FEXj6XHy3vzxXqGuNuljf7pRsHXtebkKQNGj tahlPKjQQI1JXaIdd7F7oc1t+QgliKK/5K6YH6ZD/ojzwrYnLNcZe/i83soXKhVB fyJClGbB8r85nP+xTIUENw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIZbrsz1tj1VYwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODA2NDM1MVoX DTI3MDcyODA2NDM1MVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMDNAVe3TgwMNjlwdZ3Bxd4OO1s+lDPGBkidE3v8HAqMxBjkWAnqnrJP3wCgoynf SxjiQwDSw07hH3YShbc25CfGeJ1dY5mNghK3t9hZch/KeZpKShTHb+jZwV52I1SR iA2qiyGngCRlsQwAxNN13tuHSD+EEziMBAwTbBxB3KzjXkjcbuEQnVLKwrGi/TfO os/tpmEK7hvtyWKKBDGaEcEvmWkRNukQ4zkZYy+WAJuxeTYRTxmwrNzQAr8ChFd0 p16CX3tyO+JrPcalhynANy1cKATDQm/ngSaLz1w86GWgV/nDnhIhxqHbNTdklSji EHUhSm0ZV8hnWN65mPLar80CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAbTPOlPzbMw5/4uJO7P42OXEovJDoDig+Qurg6qO289MWDt3YN7395zNR VPNN5pFdsxvsbnLlDgYDjTEq006qLDBLBgNVHSMERDBCgEBqqrOpNrT6Oofs+CF3 2LhqDFyyvB9G+5UVZoQnwJpdzK/eHD9F/hTFuYusYbdc7GVvvQDWXm0UBowLPcBk 4HNfMEsGA1UdEQREMEKCQCouYXBwcy4wOTBmYTMyOS05MmM1LTQxNjUtODk4My1l MTI5MTIzZDJkZTMucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAKTagy4061Py5tG9FrxIdZL4ZP7Jg/GhFdf+nXYE/nSJLuBuJaYD0sL5tZ88 9NQ9Tg2ead8lyUysfaAnrrbeu9n73axGx8HzQN5FzM/QN5PJb1ZlIaxoXs+Nj7cI ttgd5yif9JHjLxSOaDELNp7SEeON+edVVu59swvaZiuXmKi+WBHkmKZuRutxrmvk wx+W5WPYmQmHvXa4zNlkMc6nAehLlF5JcDGcvj+ITMM8kLA4ZvvYSjk8+GEJubRt T/f9UROZf9TS3mIEutNZadgmL6sBzOrELicb4h/5VQxk3skPi6q6XPn74dYDAQtp wisdseV2nRORATr3B8BAgdZHZ+k= -----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-28T06:45:44Z" 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-28T06:46:11Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3178" uid: 845717e7-5abf-4432-95f2-51f779a76e72 - 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-28T06:45:48Z" 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":"9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T06:45:48Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe resourceVersion: "2729" uid: 8ca14a2b-4d4f-403a-9559-82e008646728 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIR7t7QTRBTaswDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTIyMTc3NjAe Fw0yNjA3MjgwNjU2MTVaFw0yODA5MjUwNjU2MTZaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyMjE3NzYwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVhsz26wWQOlSBPGlpDIVwy6b+mGFD8rSj qfXYut0C2BJEoReYhpHscEx5frGD2MEkcSY49Rcno8ToiAF9JnfCTcKskatrrtMY wNsCZ/YX1QqkNNf3VxXkz23eZ2qN7DqlJyFc8t8p3HwuwwebvSbbksbRv2lUU4XS 2RTZj14/7qaJRrohR/732cE8HGpH52SG6/e6lJylnnG+LORuGxdIuVPx9eRCSdH/ Ag9uJcfqtgbSEbj21shQrguVe9ZUF5aqHAD3+Zz9DKS7nONY5CbD8dZzQMaFeh4H IQlGYDAp+DvTjebzGMbwy8lp75w/oXgsHCgBxwhb56aqhgmFidzpAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS0o2D/ ll3skw2CVkyxKCKTEYbACDAfBgNVHSMEGDAWgBS0o2D/ll3skw2CVkyxKCKTEYbA CDANBgkqhkiG9w0BAQsFAAOCAQEAK3HoHw5+byK0xHZWShCJF0oXHGCskfOEg2OM Oyw3AygFWLMia6WUW35cBpqffNOMLJ7WlxYWBDwC/g1L1rNoC1Mad19dsjbaD9/V XRYbdd5tHoAMuB80UinqOJEaUGIQDmjfrEnAzT61ZWHrDL5FKp9/4IrK9AlKyhZO vCLrnz4ynjEBbzABlc+4dg2sEkx7y0Z8lTI1RggGibKyYNSG5eo9akPky1tyyID9 XHL/xYqaLhLFtoOhovHYv8qsCce+gUHUYPAxt130PvuGwtcoS5oJvUNd+ZZ4xp/I ts6s3w4IxpR8r4uBpUN4bNhkd4a0H18zXeQ/gawGeEr2M08x/w== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-28T06:45:44Z" 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-28T06:45:44Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-28T06:56:31Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "9482" uid: 3b65aef0-b8c8-40e6-9885-e38e0b233675 - 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-28T06:45:47Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T06:45:47Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9fbf18ce-a9f6-46a5-8bcd-94774e9aecbe resourceVersion: "2727" uid: 217c064f-027e-492a-a681-23b3dad0c1a6 kind: ConfigMapList metadata: resourceVersion: "16147"