--- 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.27 creationTimestamp: "2026-07-31T14:02:29Z" 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":"2dcf566c-25d8-42ba-9581-043f77d23537"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T14:02:29Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 2dcf566c-25d8-42ba-9581-043f77d23537 resourceVersion: "2316" uid: 5dc300d5-a117-4a24-8509-eaf280e1f203 - 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.27 creationTimestamp: "2026-07-31T14:02:29Z" 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-31T14:02:29Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2309" uid: ba46145d-84e8-473a-8651-e80a67ecaeaa - 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.27 creationTimestamp: "2026-07-31T14:02:29Z" 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":"2dcf566c-25d8-42ba-9581-043f77d23537"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T14:02:29Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 2dcf566c-25d8-42ba-9581-043f77d23537 resourceVersion: "2308" uid: 561eb2e7-d3d4-4463-826f-ea92d11f6da6 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIVdLvlbCYsC8wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMTEzNTgzM1oX DTM2MDcyODEzNTgzM1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzIXiMcudZ81x g1aDA+Xo6VP8R9xuLiwDcF6YMjLbOuAgY7rE0d+C5L/VKXGWT1oStGvXf+Yc5QoC VHlxJrz8OlnbxIltU4M4j9m3E7psoGXzUVQd8QrSrDlkPl9miuQ2O2p2CVbk1jQ7 4n8g+TBt0ZDxD9dqBhSXvT4d18T7v1naeYzCNQ58f145+2i4c9kAuUcqWFfrNip8 xWI29ddu0UxvIJh5wNTx+FvxO1aeHQZSrJg1UscHBGM0VTnyW6RHhOW4IP1fePX3 XBj5ov5KU2+tU2lZq1jXNJP/aFT00j0FPACWAVjzzgBP5ysSGPierqebxWJkc6TY XoGF24ue0wIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAZzkg2/ZQ1IuZOHwy9KWup8+b+KsDy47iu8oZRZq1Z0YX++kR F749h3pLvVInPE5BYTBTeE1ABK2P7KD1kcQfBjANBgkqhkiG9w0BAQsFAAOCAQEA QyT0bAUa802NfmdyTZxpGygXawBu3xzHV4cj2PVsJ37mDMGpv8oRM+yn7qcTaPCK h98RoAqIMWvXyx3ipJq83SL80yFfsTNYHRm8CnsiOZB6ivwK1qZz9n1L9Qrmjsnj e+5E99NSKePY0Ko5v2B621J9vA4Sd9SjsDfyD8k9gtq6GiLLQ8WRqQf0EWACe/R2 zcdp77g7EgSkh3+ROPzuitUC2eF9Lq0Iz2S2rVsgGRa+R0fYBTOiz6OOU9kyRD3t BG/ez8VT6nHVL6gt81HvpNKESTjG0/Nu3fzf3+fML/3TPGp9z0gDqPKDFigoOR31 HRTIXxShbt34N/X0Bj60ag== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIISXeKvwX7cwUwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMTEzNTkxNVoX DTI3MDczMTEzNTkxNVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AJ2LmHA2E1bp2uhqT7xSU5NLxoKUzO5RJCjIYR/Bg1X5aBZEaRarfpPTFStFVU8J 9/wPHAeDy34PnVIemfasfA7SjGe9KYOgzQFfiSIBHjy0IYscC4784fyr9/0DbFki dydifzXHfMFvRTnZm4QmuPxSqRGsVkk5jx3ZRqGq3kDEfTfVq4alPztOhnueDZsJ l/1HnEqyXrKO9r87Tm8/yNuVEreIRsMAI86MQ7jRWvgXeLrUpZPfTrb9KULD8N3G 7lnsgguDndpcmvFMwW4A8nYso1rXe1HA/wGs9FTYyekax1VYyRUcaIHkX6zWSR5/ juf+brREwdOuxRR1pYdj84ECAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA6VIi5rnCOJslyoy8AD7sXwCLvDlmUaHocGUSpEAEo6pIs8sZq1fjRaOI U/opTTIjFYHGjDhcGMDHD59DuTdnSzBLBgNVHSMERDBCgEBnOSDb9lDUi5k4fDL0 pa6nz5v4qwPLjuK7yhlFmrVnRhf76REXvj2Heku9Uic8TkFhMFN4TUAErY/soPWR xB8GMEsGA1UdEQREMEKCQCouYXBwcy5iMWQxNzBjNS0yNDk2LTQ1MDQtYmQzYy00 MTJmNDBlOTFhYmQucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAGZRJaRjkUZGdl7y7fyuC6gxXFRmx83mP0+bHIog7rJeSUWDTqd76UmZtKYi lNf8Yk4IhQrzzIUi2H7o22o28Tp0BT7fufyJQ+bjMjIyuXMIDN6Rmnz1XpzpphHV Z5/hH8udH1+Z17DDv0p3GmssupJYjyb7gQDBCZvENN7nTVCS+A/QCy0T3IGxSyEl d7niSWNXdj8dJ/S4ke4xStIf1CaE4/Tzf/nhyM1+6kwZwrvPUCXAqWGx5PCbhbtP byyPK9Oqi5PU01y4HCliEczpSIqMKOvJlA13K+R/KOGQHb8hDykkc0GfKhtHwjTU b8c8bnjvlY0dQnDfKpEFeGGESlc= -----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-31T14:02:42Z" 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-31T14:02:42Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2661" uid: fd0b8484-1712-444c-86c4-876afc0f57c4 - 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-31T14:02:30Z" 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":"2dcf566c-25d8-42ba-9581-043f77d23537"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T14:02:30Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 2dcf566c-25d8-42ba-9581-043f77d23537 resourceVersion: "2323" uid: 1af954a4-2bf1-4a09-90ca-0a6382831406 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIaj/wAmb/dDEwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTUwNjkwNTAe Fw0yNjA3MzExNDA4MjRaFw0yODA5MjgxNDA4MjVaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODU1MDY5MDUwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjAbW5/afUWNmwjKYLz5SQKpE8tdhYcgeW xVNuN3Hbx7k9fnr5av+j1kKE7pyc1nAlU9LUV+0Pkb7c4db3Kkgpg19XxT/z19DF ijEHQeyRV1jVpCoFzuRl6amRBgwJlCH3s77uu4AXw23Mt067VaTd+Dhi8T+cd7ox sW1TQ9AOMnPwMahc72vtLw1rpDpdrgalju59dFR1RvE3rQog6WQbdGWCNhTkB+HH h/SW747owpcPdOWX2a3D2j6Y6f5SHb95QA2BFUi6ytF7NMptWBVWTmiIj1TrM9hZ xS/bw4v0n6HidUFrv3Luu5OqGakw/BeUbPUJd2fduY4KyF3kCGXXAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQeygu9 UJjytT9KvCMAfYar9H6hjTAfBgNVHSMEGDAWgBQeygu9UJjytT9KvCMAfYar9H6h jTANBgkqhkiG9w0BAQsFAAOCAQEAd56m8H8n1ztXbUGkp9jKyscnpDmVbJD+wJyq sS6O7jz69xY0OIn0kOfHq8gVc0HzzlMplBphlljFgVa05SUG09+D5NYWZJ8ahJKe 8bdwKQ/sJ5FfLnSb3+/zLNcl2J3VS1lCxZ1M1LCGiDma6XloY3bhTj/vhxaUhp+t wsn9mTQJo+2c2lUhnXt0LYoKmnmez0H/9loxyI7UGkVpT2xATaZ0+GRDP9CpaHrz QG2Lewl4Ap4LHGea5af1+7NMz5TNbN6OUFuiJ69MzPpHz0hkZGhEVRyufp+cmbRb LYo/klqZrwCRBAUwbmGga/5XfeXi/+TJ2krzhsSG1LK6Shmg5w== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-31T14:02:42Z" 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-31T14:02:42Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-31T14:08:39Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8380" uid: 2a9156c8-2187-477b-8d0c-048b335d7cff - 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-31T14:02:29Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"2dcf566c-25d8-42ba-9581-043f77d23537"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T14:02:29Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 2dcf566c-25d8-42ba-9581-043f77d23537 resourceVersion: "2321" uid: a262c248-2bb5-401e-853a-746784c7e5f3 kind: ConfigMapList metadata: resourceVersion: "11888"