--- 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.25 creationTimestamp: "2026-07-22T16:07:09Z" 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":"764a7eb3-d109-4cdf-a502-bfa2a0ed7df3"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-22T16:07:09Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 764a7eb3-d109-4cdf-a502-bfa2a0ed7df3 resourceVersion: "2375" uid: 2db285b2-479a-40e3-bcc7-629f316f2c52 - 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.25 creationTimestamp: "2026-07-22T16:07:09Z" 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-22T16:07:09Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2373" uid: e418f7fa-3eea-486e-ade5-2e610569bffb - 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.25 creationTimestamp: "2026-07-22T16:07:09Z" 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":"764a7eb3-d109-4cdf-a502-bfa2a0ed7df3"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-22T16:07:09Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 764a7eb3-d109-4cdf-a502-bfa2a0ed7df3 resourceVersion: "2372" uid: a9d69511-f676-4a8a-b417-6b3a21d264d2 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIaA3pc5iCEjAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyMjE2MDMzMFoX DTM2MDcxOTE2MDMzMFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvMcambmHaKOu pNG0TMRwmr2Cbep75cGl7OkZ7ZNtQYIluZoHGOP5FTM3pb3w4BSilVXT97p7ZYo4 mZx3Klbj9n62Zh/20FSHLgaXQY2sL2rMrDS7oZ3U68pFIk3kND1aHPapFh+mOi4b U5uqvbq7zWlKgm5yfj6VpL0qO3YdmEj4TlNmJQiNcBe/Jkm1gg9TTrIt+IEYvkok 4fODTOh18ieieEjHHZ3rjWtAfYNlL0vIlQ0gAQg8tb7/VV8GhmGqdW1McNCNjSxU 2DA6atJfIYK93hsjc2aIJuVhpbjzWhhtjMbarypYUdCmEI1fnuwZwUlov3CX5MJo Jl2p7LsNDQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAoLAwc5TzfGCFcNnThuMdthdbVcFzceQQgr8jkf9h1jOwLqGj c99agsIrL1Il0Wd2hkViAmzAcomjSjxQ+jRMazANBgkqhkiG9w0BAQsFAAOCAQEA cNbix+khpdcWoo3exN0krMXr9QURB2q5PCVbaJYOX9Lx8SIBJqnj4N6aFQpy8T8d brgaEuTpaSO72u1PjGrayPaLlGSugMWYK8bZeGZo63Nd8S4mZWDB5VjbApx8hf1n CPv6ZEzd6xKuM0KpbZmXmOadcV6h4vE1PbdRG5sMOjVrOhP9C4mV8kKgsiW4hcSY zbR1aXpgP+8i6deMQlZ3SPXjTRzTIIuSMOV9ZISYBPRC8/AZnL653yjYtHZA0nCJ 7Rct1TKkufBC3llSGra4P9vUvKjQ4lnvBa1bLDik0b7mMHzS5y2zeMQXrUuGZD46 ljTVXntpLKdvrCn6/Q77oQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIYSmkIEtnYuAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyMjE2MDQyMFoX DTI3MDcyMjE2MDQyMFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANGoSkSBRT3oNVOp4Wh6ZZUsKkexm+e4sB2j38DawQcBjMxdYdYysC0au7rGwvAI JPSdnz/HX9Y/e9X+GDGvP1hXL4OI+3Sw0SbiKsJSZFKt7uT1XyroEAVO4Slqf9w5 kFMQ2BpS29+0DfLz/b97KC4QyukFTmToiaeFMZvcRslLFMSqm6c/Zuzq8rWFdQFu V4UFfldVsb6a6uRNB8fy8falW+qP93jOjnWC3/oGl2EvupNbY7A99yM73Y8lnGFt 6uuQkb1ZxOrQn9NVo8GHrKjWqKYxQGUuulgKRlrF2U1BK8/vFGT0LqsIxHa48vus vG2gew+Mi++XaJV9hF+IvLMCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAi9v8E75Aqlq+OdVJa7ArjhtcVJdqwLZrihw+2sw6mBs+dBp8zH9P6I8I tOiC3HTAKV08DH4SjMk1FpHPRCBTCTBLBgNVHSMERDBCgECgsDBzlPN8YIVw2dOG 4x22F1tVwXNx5BCCvyOR/2HWM7AuoaNz31qCwisvUiXRZ3aGRWICbMByiaNKPFD6 NExrMEsGA1UdEQREMEKCQCouYXBwcy5jNGVjYjc2NC05YTUzLTQ1YTctYjIxZi0y YjJlNDU0NDQzYmQucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBALqLJWMqObhJAEcbGPYPNbHZpW/jnn4QhVvNIr4d6y6f9Z7NYDP8JUsYMj/k IfgA7QRePvWJ3E8ieOov31pOxetYRFrww3NGCOPM0XHIuiCyJDFK1y/CvnIUhpZO OHPWCOw6z1mpUHOEELcphevGKWeFWnU3puNBshDxnkBFYxUl2DOrdzp7pT8j0StX CQDEKrUvVSGUmQvQB0dVzJuD11zEn2YTOk5ORVm4l5Bf03Sx7yDXkvjFnKTwJJi9 v74QKyTOLDlG5PwCZueZ9CayAncndEM3Vg+ZnfEhgeZ7HvuNJ+OldzxY1pPDjyuE CPai1CfDyvHp3c9oT/sMhI8N0mU= -----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-22T16:07:18Z" 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-22T16:07:18Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2641" uid: 6e96e2a1-bf19-4aaa-a1bf-d657be7e73cc - 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-22T16:07:09Z" 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":"764a7eb3-d109-4cdf-a502-bfa2a0ed7df3"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-22T16:07:09Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 764a7eb3-d109-4cdf-a502-bfa2a0ed7df3 resourceVersion: "2386" uid: 25de8308-8a87-47ce-b9ad-7af1042007ee - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIPhSmGMdp1L8wDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NDczNjc4MTAe Fw0yNjA3MjIxNjEzMDFaFw0yODA5MTkxNjEzMDJaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODQ3MzY3ODEwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDju2WSn0nIkyKLinhfIv7Go3onR1lLEXcl xMri+SVfEJOOMAE+1CRH1Luw9asmSxbOxfz4aJnilkSOexjBrwh33VvAxYEvAe79 pze4wRbsla4oQuu2svwqeu9TTO4tsy7ltAxHIs5dKhz2KxbDeFUJJptIFHzyiE19 U3Hf97hvUG0iSRlJLtRc2Bs5gd91pvME/OlE460PPpbqgEjq/kbDTXfkXiNLhtJJ AaM15lv/sQ95JPAr9G5TP+Q70IuJoljcECu9f5sI2bUkU86K+iDhDakJkbnDjlrQ cqsKd7PvFNJZnhA4BN3Nc14fF91qkLjfp7Q7TCVdsO6v7uWNO8S9AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRAaX7X Si9fMSAiw3NH+jRSMYHXWTAfBgNVHSMEGDAWgBRAaX7XSi9fMSAiw3NH+jRSMYHX WTANBgkqhkiG9w0BAQsFAAOCAQEAlqzNFLsGC0L5PSrkGe8L6TUbzEuY46PSJ5wg mcyGCTi0sUcaz9SiE5m1T1vM+pPtVM7k97dWjWHtnWizFKCdwqnhp9cgsTTKXB8V OIMECfpcPju7o8JSt1X6w6I1dtq9d5/MLXUxsrXHt5fcBqMqnUsIvoEK6bS1ebE1 ygTu5H2PNGN3EwbmZ/GlFmo6pLWzAFsk3kuH1P7JofAgGAXGay6ZMhKwQ1OhH3fA 0y50/ed6ukrw+PdUcO+GvO6rbnrVOZI/QqyaRSPqjoZ0gXwTNfao9/sgnoS3v/po LSPM3luC1/+WQ7T6iTUrR+JEj9oH5R1pGjNjaElYDuRDd2Y5dg== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-22T16:07:17Z" 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-22T16:07:17Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-22T16:13:13Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8120" uid: cd64a661-c8bc-4b5b-9a1b-2739bfc8643d - 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-22T16:07:09Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"764a7eb3-d109-4cdf-a502-bfa2a0ed7df3"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-22T16:07:09Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 764a7eb3-d109-4cdf-a502-bfa2a0ed7df3 resourceVersion: "2384" uid: 851a78e3-a161-4a10-b11e-e73d5e439fd6 kind: ConfigMapList metadata: resourceVersion: "22432"