--- 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-31T09:53:32Z" 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":"96b0cece-a73f-462f-905c-413a6fb81445"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:53:32Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 96b0cece-a73f-462f-905c-413a6fb81445 resourceVersion: "2349" uid: 37254da9-80b6-484a-8f1d-2e6d4a84d371 - 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-31T09:53:32Z" 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-31T09:53:32Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2330" uid: cdedd998-611d-4e89-b1b9-8907f8e6f569 - 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-31T09:53:32Z" 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":"96b0cece-a73f-462f-905c-413a6fb81445"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:53:32Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 96b0cece-a73f-462f-905c-413a6fb81445 resourceVersion: "2329" uid: 13ac0b10-fc9e-4230-8b96-1989acf849db - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIYJre/MbxmkAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMTA5NTA0MVoX DTM2MDcyODA5NTA0MVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx5Sjf1DEOZwq nDllrMBPV+iYLQQ5QEMQHj7tLILxdcr1aG9vHXvOmUAhY3BswWll47ndXZYWbcAY 6IdNabMfBjXvMw2nFodD1LkN3cSABrw3+6pmLvf6UwxqX3dU3CPEQP0Ztv/1jEg1 eUDSKMkz3qEfEncMTNRQLf8TZnhjvge07rML2LM6GnhnshYvnDq5/jSXisBHabnH aN7VXKcoqcTt9/sA8tesU46iWNVF7jeV9JAwK6o717IjqpKl8/IqOCtwgM4HoGwW lsAlD5tqLVVB35fjFbKu0ve1LKPoT7c031GfsQiBGmjuIErDXZUhkcS8mqaqYy8M HgMe/9/XzQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAgt2dfd6t2Du9GM2Ws1hA33vtAUS/EhOxjrk7xUVYsatspEX1 PWfO1L2d309SHpBTCqIjoyDzvkKDN98YzUdlNTANBgkqhkiG9w0BAQsFAAOCAQEA xzcrmT+Mq0JsmBlbPxHHKy4GbHRJzYw/4/rKRme6gHFGcXuWGuzxps5L6u7FlP3R WsIzDfGu56s0w+sOegeap+UuUwM3GWNSW3d66lvF0aeScWK6T6P/yOuKTLqofH6p fu72Cnwxtk0tliZB4tfyw4FLHP/vlbUi7J6uhVebdjaY0RxYCcb2NfS2EHsiJkbL fZ4dwNr1IcZval9uTh1f2/72nG+3jxwDx1U52aTBq45+h7ZM13GSXi3znINsZKzI hemtbp1T5IwjeK/Uc7mCjQaCgQeXEyRE9fOh/HV2ovldQxF0vw9S+bJJspIdE9Ks 78mlGtDYK5zowI5tyepAEw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIITHYwqgufUCMwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMTA5NTEyNVoX DTI3MDczMTA5NTEyNVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AM8qM5w6p1AW689Ov1aLdGtptagqpXAgX4ZagMyqdLRDRpJfe4S30T9OgDD4qva4 qeolltwgyNVz41crDnkAyqnZT0KcX4MBRrH5Vq0j8lYchMdAz2ozAFMir3y2UIkb Ot2KjhNY9DX7FWp+J+Om7mYHpx1LikyLyvMGEHeGZMemd8cstRn8ur/193UHYiIJ 0Y2B5N0N4/UtOSab/06URmSPej/vor4jJmHDmMDyoZAGZQ6sh6qQtt8jsvVWrjF7 rYGepzkjegUJCAbUjg8mTp5vm6OCLIMJrE8YolpZS+HuDtYvskV3kLujuCsF0YIh 36xcYiIE9sOxMbLnrLWj7LcCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA6s2bN12GsKdYADXBtzeMhPPB1tetxcPMk3ynZ/dirbymu8k+NCGNumqd aYcF6h6kDdmfkjNthyCQTFo3y5xGLTBLBgNVHSMERDBCgECC3Z193q3YO70YzZaz WEDfe+0BRL8SE7GOuTvFRVixq2ykRfU9Z87UvZ3fT1IekFMKoiOjIPO+QoM33xjN R2U1MEsGA1UdEQREMEKCQCouYXBwcy4xNmY2NzVkZi02NzI4LTRjODMtYjI1Yi0z ZmRlNjQwNWVkZTUucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAC3WQncgpHdMdphfXoV6DyWrf/KdVYSm5rbMmCaF4otqACuL9CwgE3gHyHHk dLv/StLIaPeZW9SrIH5RyZ9PTDNO14CDpo0xSj+ZKgb9M9RrZSi2kV+Ie4bHsxRH CXuDQ1LsKs2nAblaTbr8KH9jiik7IKR/0/+o/w9lKKZ5C3aq/p7My1i1Ge8fpz2F RncH8miUlctAgZNya3COmgps5UlaYmUV4pLpXGsL0quczcpNVV9NLQgGKLNpQYOZ nk98/rtqRnad2Qwpsu1GqORS+V/AZK67rI9MwO2LQA8v2ulbn++JnxpWGVJi0cRO zfmT/QsRiHEfUZtdp1ML6OSvBe0= -----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-31T09:53:29Z" 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-31T09:54:21Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4398" uid: 423873c7-83f5-486e-88a1-2adcd7df56cc - 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-31T09:53:32Z" 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":"96b0cece-a73f-462f-905c-413a6fb81445"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:53:32Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 96b0cece-a73f-462f-905c-413a6fb81445 resourceVersion: "2357" uid: 5403b047-d816-4cc2-9bee-f223e8f9ceda - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIUk1o5A3vbB4wDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTQ5MTk5NTAe Fw0yNjA3MzEwOTU5NTVaFw0yODA5MjgwOTU5NTZaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODU0OTE5OTUwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNwf/LftIf0otM4Y/Bc3P/FcwPhE1Lcum5 sPUug59eVB3MZVnJ1eJ9ndlj1H70CgzzXiIyUopYjUFKWgpc5pr79v0G0dAaF62L tquIuXyoTySNDyNHgLPAW2M419Cwb6PHo6AfoK2fPTqmaJc61QBd93SVT/kOzOni nuq2z3eyBI92bqdS6YJN9NGM18xRH9GcrriIh1ypnVhUu1SKJLX7lP9G0RittN4N WFk3T49C77Nd0RuyMktSxr6fJCTUDuDfs+yLZcZqERNZ/bMYglft8iccxSmiLMZH bADTaebwBU0773aFMm6R+AhDzVJDVeMKhpgrcRyiI/3D4gtDp0e5AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRpIjyJ s1+8Ctswg/glapybZ77kjzAfBgNVHSMEGDAWgBRpIjyJs1+8Ctswg/glapybZ77k jzANBgkqhkiG9w0BAQsFAAOCAQEAyJ0eKk1q7T8vtFMIC90nIq0uopWEB8ARbdyQ XJZaSIcJf488tg8G04P5gCseE0yUco4KbCsr0n4qViYdAeJJkY4BC9qHR4JjAXaM 0x1kOlBFv2tVIVqaUOwtcCcGVkprXI69a+SVa8Y0+oVAw5Qce8iIV8/0bGHEBLkX 2IGr0j9+ZzNHzfbRgbBPRCOQcjMhSRq7PgEOQhfQST3xoWPOT3QSpD2AphKAsJV0 NXAwFBoEKVKmJGEIyuUsX6aHtjM3eP7Jt6o+ll30qHg4fTwb4MUzWLTMYQo/PAVP AUGOITh0JilVXrP65f008ku8EA7wrgO7osbzuxGKAJrkMbx9ig== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-31T09:53:29Z" 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-31T09:53:29Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-31T10:00:09Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8425" uid: ac8f32e2-c41d-4a4d-98ee-85ccfa8a2ee2 - 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-31T09:53:32Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"96b0cece-a73f-462f-905c-413a6fb81445"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:53:32Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 96b0cece-a73f-462f-905c-413a6fb81445 resourceVersion: "2354" uid: df0c58aa-1898-4277-acf0-a2d53c80a686 kind: ConfigMapList metadata: resourceVersion: "14640"