--- 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-28T11:57:11Z" 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":"3dba3569-ca00-41e7-b65c-a243c4c4734d"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T11:57:11Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 3dba3569-ca00-41e7-b65c-a243c4c4734d resourceVersion: "3247" uid: 3a1835be-4f16-4f74-8981-9e2a17a293e5 - 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-28T11:57:10Z" 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-28T11:57:10Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "3223" uid: e1867d52-8bb7-4d34-9551-b5f97791ebeb - 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-28T11:57:10Z" 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":"3dba3569-ca00-41e7-b65c-a243c4c4734d"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T11:57:10Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 3dba3569-ca00-41e7-b65c-a243c4c4734d resourceVersion: "3221" uid: 97efe185-34ba-42f8-815d-55c13ab77001 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIfEdOvFSPozgwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODExNTQyNFoX DTM2MDcyNTExNTQyNFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt0Ix23P7WhBT gB7s6gIgXbASWxZCUmrA0B7rYSrgDJJIZ0B7b04m8JWDrnRJrkdSTuMjwpd7i68d W+mKcYhdl1HVoUF/NR1tt/S2VkShpJquOwE/lRBBtj/y6GJq46nUxM/IJoHuACq0 eDz1UUEzIrKfEV/oSIqZ9qLjgrLE9lWtRwWmdS0WPJo2RKJEQsEqnS690xgsVuqT T+v13ndIBvdAjvLYqSPkTl8n0NwBQKlx6E6ioCwcuN2Ziw7TtqNCamA6JGHC1xYb +ry9SCNvoR9WRqOvDEgzYbsmWwVOk4atMP2iS0QQ1wRPL/dAmvaWuN4B18A5tOXZ 2mvNtgPgiQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAM/FO43sr5G55bBumPkULyxnUAhWlCTtjCvJS6jfl82DYuXK2 SlFmAhH8Fec12EyvG4PA6M2xbiQIMLngvQe4fjANBgkqhkiG9w0BAQsFAAOCAQEA geupYUwsjz2ba0jRUinosVDQzpRyi8kr3KfgIcReh3WYtGH2ZIxTKEQ/3t9yMWKV 7YrDc6LQRj+A9pS10sTYxPbwcjrKEgETMXt60XqqhOZ3wkzKlS4BxbB4PBhGquex Hnp9kVo7/XqkiVp29+7ozEjWc7zU7DN9+UegiSbLhRJ2KxuB9qIxL45f6Jsd1DBR LGiODpEQf7ABcY3RFKQcZhOBO/gHk+xhJZgBuceqxHm7LqEG24HQlJHsXVVc9AH0 knZ8lswsbY6f1VHNasZmKZqE9wediVUCMW4DNiOBMArt/l6tFchZHKYnb8dDYdav BPEvxtIAvJ2luNzsB7zeTA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIINnGKGlQjal8wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODExNTQ1NVoX DTI3MDcyODExNTQ1NVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AOEv4kLiK5NrE3ggH22LRTNi4Z1NlzVsC8LbDtJNcgU45KMaKjcYik7JhGv09b/n ussrj7qLRO/hqrIL0CGU2znPOcf7xmNJPZv9oDidn5Wxax4ntRXpBBeGsaB60y6s eXF6yEUmN0itofNWKf13x8Ccv5Bj+Rzb691Y+XW08BzgmjzYKCf3+in9KOwCZ/C6 6M9Y8aJZ3djWhMC20fMTEezTttpe0Pfp4dferO/8KiI7MEr2LAnB2oCzd7r1+g3h BSecqIt9DzD+ap/jZtKPB/01tbf4VwTIpdLY+S/eZoqoSVgdTgU6xkcJzgp8ZOfB zjs+EfOXQwnYBGOHZeLJ0OMCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA/OY4dGDKvJTUecU335xlHsH/PCJLsp93CMl0Lk8EfCpPhHZEQD7qpWPj V1SXEkaAUwE+8HDB2Ao9wJS3onI74TBLBgNVHSMERDBCgEAz8U7jeyvkbnlsG6Y+ RQvLGdQCFaUJO2MK8lLqN+XzYNi5crZKUWYCEfwV5zXYTK8bg8DozbFuJAgwueC9 B7h+MEsGA1UdEQREMEKCQCouYXBwcy4wMmM3ZDEyMS1kODRiLTQ2MTgtOTNiMi00 MDU4MGFlODY5ZGIucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAFWfs59qh7BusWTsTKzEJEHrKOSMfqoW3LC2m6jC1MzH5uzaeIjC0zjqJ6lv eoexcGFE6xhmpnWWt8yc1w2ZxIxqCW2tGcK0MPkdx2F7tdUaKp3xvGaZGms20nC6 aE/W1q6OdGiHHNoRrVxiKb2t8/bGDDR6Hlh4xH9y1jBUExful+76ATyar+g2BGL1 UvaZzXwwea+L2WoGDPYa+GntH90DVqtfzKXZMbYFD1wN35HIHDxo75H3o5DWInor Z9SDdOjracwjbVxoZkVL9iRp1Q6iu5l4/lGgvWWwjk8tR5OUdJ5NWfEA4xpLz0Wl 642elJzMDlZtcz51t2wWwUY6OjQ= -----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-28T11:57:08Z" 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-28T11:57:58Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4356" uid: f62df6f0-e6c9-4c58-bb10-6504ce33980c - 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-28T11:57:11Z" 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":"3dba3569-ca00-41e7-b65c-a243c4c4734d"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T11:57:11Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 3dba3569-ca00-41e7-b65c-a243c4c4734d resourceVersion: "3290" uid: b395cb1d-cf63-4aa1-957f-1e498ca2c681 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIUVMaHSvikywwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTI0MDIxNDAe Fw0yNjA3MjgxMjAzMzNaFw0yODA5MjUxMjAzMzRaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyNDAyMTQwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCQ5Dhl1ZjWnbAZC8EN1fFgTtyukyCfzfaJ XTGqGP4abs2B908R7lk8TwC/c+mCJFT7vS4k+pIUxOzPO+1tMq7RwgMl+YtaxFIZ x53RbidwPZx5gWdgTBdDD2xg11GpZ0GI3l4B9Qh0+8E3xYiabPA0YxK58cNyq4bR D3j2v4/A875HS2mQu8u3oCYWwOtlcXG/yQ8v/1h3J1+kYPOeIdpNFUH31Y8oXYuv IY/t/l9p9WXES2EOOtqJBz6Mer+LUC8AYO79IWstCqh8Cn5vuwvJJ/ji4PUKo3// EQSgTtr4y86ZJamirD8EWnMJqXinjjyBHXs6Fon79FHR/7Fo2fTXAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSPsWIn bl/C4/YRH6IDKrTxwLCNeDAfBgNVHSMEGDAWgBSPsWInbl/C4/YRH6IDKrTxwLCN eDANBgkqhkiG9w0BAQsFAAOCAQEAbepxqzNge2CchLeSjL1lFiSv15/q/MGUq59R 37tZu9akOkwX73fEOYEl6VnZBH15YYOeKt705vGioJsrVba813/sLs69RlE7kCtT Y4kNz+2EdBEU97ZZA0RStNRp/DsDUXlpc/H/tQn7I5RyzzQFmwOYMVRBCSQx6hAh 2UNr7/ic9kDjCQRcafE3NN5kaMrFfjT3sJaXQAzVtrH/BYJ7VaQTXm28YDzoxaf/ UVsjBS1WXBsgTJ8ZguW5+NKjXHjQTZJbTbWJCdoLFfw+PG38PQ1xQ8+GVhj49Gf/ 4qmQOoTLXR+a+sX1iG5wTFF9c7tWQRF3jkQ4s1hUA1IaCP4Djw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-28T11:57:08Z" 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-28T11:57:08Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-28T12:03:50Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8160" uid: a0b15835-f21c-4dbd-ba0e-0f79a8969238 - 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-28T11:57:11Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"3dba3569-ca00-41e7-b65c-a243c4c4734d"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T11:57:11Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 3dba3569-ca00-41e7-b65c-a243c4c4734d resourceVersion: "3267" uid: 35970831-50af-4c15-9b77-ba44786bf79f kind: ConfigMapList metadata: resourceVersion: "23426"