--- 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.24 creationTimestamp: "2026-07-16T06:06:36Z" 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":"b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T06:06:36Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2 resourceVersion: "2670" uid: b1198b5b-1707-43d0-9dbf-a33d4ce87426 - 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.24 creationTimestamp: "2026-07-16T06:06:36Z" 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-16T06:06:36Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2660" uid: 7d980b02-e5aa-4799-9a86-d8a4bb5f9269 - 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.24 creationTimestamp: "2026-07-16T06:06:36Z" 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":"b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T06:06:36Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2 resourceVersion: "2659" uid: d60797a2-7bce-407f-aab7-7ce034660565 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIUTdp+KztXuQwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNjA2MDQxMVoX DTM2MDcxMzA2MDQxMVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5r/tkJps+Uu /guem1LTA2ntg/l7p/4EibqdbpxcP0By/1zOygxJjD7zP5muJB9G6bbrJMbUw0Ys mIt6ulk6yPf159fGUTdEEngMTvyPXMcfw1b5EKqlF8QT390SFr8j++5eMTcjg0ku rnJ4+n5lQKPcN5HQvDHFk8ZfFRZM5S3B2zKCtOSX3rbjdr7eTq6DXUt7YUjqjnaX XfJHDZfZk8rGuJuHAYb35YtKrWCDJ4e3YoOlqtbTKpbEKFW4cSjATaOfon1xf5+3 jJ+tWL24Zbhwls3knVMBirvPC4xIDxq3VTtK4WW7h7I9UilMR4oWFHRxCR+eBvRK yu/OuoR9mwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAA8s/1E8fJQ0HP237zqFzrYNpxiikrOvMeDDrble78gGaftcU R+KGNoc3C4pvTxh/cQQwpxSeMZase00knApr3jANBgkqhkiG9w0BAQsFAAOCAQEA O5iTmGdGVftW5FG2lUQ8w0W1vCGV7JjA2eR7OPV7rraEVjKblK35FSZwiWKFYxqv r//ju+CaD+Va9QcrZD7lAuQSXFljj5Vk4MJ79d9/2ya2E+aa1VFlwBh3vV82Om+Z 6txZZMcfbVX7bF8ID4HsulQ9obLMT9iXANZrHja8XIaDDkPCI0JF6L+h+1IKEAJo QuiSrdgiRIUBFZAVuN5txJBffyzcyZzxbODOhMOE2F9aUR8LIQubj/l49tkhJOnw 5ayoSPKsnJgxC0Dpkb8huzwJg4hTsAiqkkc6Ni25KPoXSvhBiC4q7fHLmh84IbyS 678hmpilg1Zjw6t8fy64gg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIaj0BIf99yF0wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNjA2MDQ0MVoX DTI3MDcxNjA2MDQ0MVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AKoX4McH8Peonbw5xB1hO1+eVx+mBynaMizWS0leKBuwjMysjMvk5JubNIwsnOmQ OXJVTapraaUF6tNJrqPk3E7WcjxgCU3804/CHWAPmRFfQXy4BJIt8K4LGQZLkMH2 NQ5SG5uJ1fXtUr2Wf1YoTxSQwuu+i6nzhgJ9Afs4mZV6HSqzQ0+VYV648ykenqa7 kNPWGH8NKsDBMNKfXOELrPYOfntJF2cuO1uO5hfkU51n/jmBG3DuiIrJAaJggl1z /Of5kjERAUtee+ULC6xdkWp1uoVoSz2x3nHGkvjOKPURwhXuu3KrMIY7U0LkXJuF PgHIEXLyMwqimcEjqQDQrCkCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA5yljYC+DGGXT/wTY1vZGDtJYP5sJcgcFsY1tMxw5bbyeroLdCJ3j+thB c2yUpxf8D68A4rBBf1mpT4B8o8s8+DBLBgNVHSMERDBCgEADyz/UTx8lDQc/bfvO oXOtg2nGKKSs68x4MOtuV7vyAZp+1xRH4oY2hzcLim9PGH9xBDCnFJ4xlqx7TSSc CmveMEsGA1UdEQREMEKCQCouYXBwcy4wYzBiZTdmYS1iNmJhLTQ0ZTctOGFlZS0z ZGY2YWVkM2UzMGIucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAAnMz5nWicU0quPHJL0O+UP8LDgtru2iZ5pEuEhdqy2AFcAIozT4W/9zrLHX KeeC0zbWINQg2Q8Oj/nHMSRDaxmshX9tSf1C09JDFsd+EdKOsgQyRXBQBs8zWMhh LoOFLr2u37KRLY6KZe8i+QX3d4bGhkXAV/3ID1mc/l2BXFCW0JQKkJNkbzlVcgFD 3jp5gzU4iI7+qpfoIktVba7oKGVXssiY56dbXkzAITQPNMvlLmkxgiq158LL4Hu4 iSgw4ZEe1YKi40VZQ5LhTPxWuLLxLpGlhNrAbJUgy4A3ikehqPCgjOXo3nCqWgJk wRTQvyMOnrYp+j2oQRcomdSB9F8= -----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-16T06:06:33Z" 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-16T06:07:35Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4452" uid: 8f1a358d-426c-4199-bfc2-34fe6d2af46d - 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-16T06:06:37Z" 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":"b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T06:06:37Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2 resourceVersion: "2677" uid: 283c2725-8efa-470e-b14f-08944288156f - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIYXDaScKJxRgwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NDE4MjM5MjAe Fw0yNjA3MTYwNjEzMTFaFw0yODA5MTMwNjEzMTJaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODQxODIzOTIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgTJ2MKWfpbH/osAULxtSXjExl9JZ/MQX/ 6oVA67sYLV4dDjVRSINPQgrvNQ3Glpz6wQU37ckztDCycJS58k6sWcJaNExKzYg9 FCUVDxNAr019epBjSM+vg4ZVNBjc0vB9E8a+gmkPsAlCCrRBTUNaTTsOspelbKsj XwzYBQMjunjRmb1FWIpcV5zfRQgueeej6Kcp5oi+8+ybK+txATeIh+eERsBrar7J d+w+BvXe3uKMcMko9dcbig/rgFxlkmvQnQjEDqlzsuXOxEfdtgLSn3gX7vchsYk/ i42JQoZW08o4sGa+9/JQjYhsAqCOPNTJX+Arv7LcuuUl7IePAUmBAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ3YiCg 488DA3cE1oYb5iD1o6vyrTAfBgNVHSMEGDAWgBQ3YiCg488DA3cE1oYb5iD1o6vy rTANBgkqhkiG9w0BAQsFAAOCAQEAXw4oJRAvizvLFs4L3/rloTWPn1eeR/O5bYLo rsfzod7kS3Sya8888zYR/qlsOjeE+QJrg25adqf2d/r1749CMQDPLp8ZoPRxKG7L pGaNpQktt+klGDRdnd+dDddCjEJGYKFvR92FO8KUBKzyz6OcUr+afm12oHhHS3QQ y3UJqZReqzf84XdyktHTlVzxfs4aMKH9H7Ep7A710Arr1+KtFV7AcQkywmnzQjBH cecu7B7cpcR9DRx5prtK4KaZVoWlXIA2D8ys5qaTqIas4IXfbdmNkN3DaoFFNPn8 YIH0VQ4NC+AGTYawCO0yx9rTaZNK4CMefKkZ3ihvEp3tOVSc9A== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-16T06:06:33Z" 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-16T06:06:33Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-16T06:13:27Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8242" uid: 593370a2-906b-41dd-b2ff-5f54eda24f54 - 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-16T06:06:37Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T06:06:37Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: b0947cef-6ff4-4ef0-8b7f-77e9c9255ba2 resourceVersion: "2675" uid: b99e0235-4343-444f-8e93-a06e811441d1 kind: ConfigMapList metadata: resourceVersion: "11436"