--- 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-24T13:30: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":"1e69857d-71d3-4486-a1dd-28a5df1fc7a6"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-24T13:30:29Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1e69857d-71d3-4486-a1dd-28a5df1fc7a6 resourceVersion: "2335" uid: 9c449b84-df0e-49df-90bb-b879739e02fc - 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-24T13:30: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-24T13:30:29Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2329" uid: 43a9aecd-8726-4b85-9db0-82a2cada2bab - 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-24T13:30: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":"1e69857d-71d3-4486-a1dd-28a5df1fc7a6"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-24T13:30:29Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1e69857d-71d3-4486-a1dd-28a5df1fc7a6 resourceVersion: "2328" uid: 6e7004fb-b6f4-4215-8c80-28976c45c168 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIINg+eoEzTKYowDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyNDEzMjcxMloX DTM2MDcyMTEzMjcxMlowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxjOmssCtelXl PtlZf3dnD7LZND/L4h9SaxCLtzoJC9ywlz38j5gJIPrQYxYF3ee9MfsLwS2bXThL s5UwmZgUZrotkQKmlPnkD/zcLYv/IugQt6PVHZEUI6jMzvwOQECEU4ByEPBaUozq SW7I7Ux2lIftcyI9WBExvhDnC+dd5PlQLsUYZePyyCna2009Pdq+F7E6VJ0YVC1s KE90DDkEupYfh+GyKxArCRZ4oGFM/M9HuuMqUy75B9uTtW8QHCs8OQlOVv/nCTN6 BJmGVt+rwax0ptVcZwvgZbUH4qPZ+W86OyokVdatMIHPBfLBkylYHBmEhrcwosQY 0a+fH3GViQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAobD1wf7doA5tOO86LARPnIgtYgy+dciqmolV8BYYWzPBWdAw 3fFbZFjXLTqCO2590QpsCgH1HoeFajzhEqaUczANBgkqhkiG9w0BAQsFAAOCAQEA bv+XMXGjA6BRa5VzGe261i1EGi9lHpDG6YNeE3ffwLH/OzMC0jl7XdTp5GwFk6bU wO6O6XEE/P+5Rg2UN4RiYWE0H9q3ZEiFKCoLZLuuEdUjJMUph2eNlKyz7eR3jRX0 N+Xc8MulY3v4HH2FRp3hVEjYLlT8hPls37IW45AgW2TM+KvSaTsgxzoPLmzqmzHd uzpE1Fu6151BAXBbRBCVa9G9LNOji/qnViKW6n321ejldK3oQDdG2LJ2pUysm6Mv 24VxRZuBwe0hA4P+gq9YqiKVxeWK9LFOx0jMsvZtuBCOcqDGyMjJZQyMzdhjhf8x CGSfwFamMUBXUrF6oDI2qg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIf97eFARaM+QwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyNDEzMjc1OFoX DTI3MDcyNDEzMjc1OFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AKWs5lKufrQENxFZH0UWY4zWe9qOmXV6JU6xZAdPRsddTFHFCS8GFvW81i5oZp+2 KRtx689fcIVs2EMOgrdCx8YnUPZU+t9yF30kIL+XWMBg5nBzbELPSON+CVocRav0 BJJbXtDG5KQsAHbFSUiVyJsWMeWu74Wl9PEKWyLJ9xfSIwpsKecBm9qRIug4fCru /OKK31HDCqDWBLAqrCME47iz3oMhf8VPNzcum09ZYmrNggYrrN3lZpiwd/auRxh8 /ZVt+7i692H8Y8eriWuqT3aA1RyVlPU/ikhsn10QPgYNc//YvmMfI1V3w7ghwnzb ne1AkmON+1yur6+VaxnLgVUCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAsKuhPShqOFCKSCVrqa339feyq5LDU3IHm5S7/Vd77B21Uf/TDt+NAquk Mje2CR4eTmZvgEfBzNLfUEzURlOIDzBLBgNVHSMERDBCgEChsPXB/t2gDm047zos BE+ciC1iDL51yKqaiVXwFhhbM8FZ0DDd8VtkWNctOoI7bn3RCmwKAfUeh4VqPOES ppRzMEsGA1UdEQREMEKCQCouYXBwcy5mMTFiZjg0ZS1mZmIzLTRiZGEtOGEwYS00 NTYyYTdjYmM4YjgucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAIWZYrcsW7TLwT5CGkRJeixvcO47AVZP3WEuibi9QmZyHusuWVKcGrT9EMVG MxO7wXpEm741FJVC7Mgug2PkcpSvu0e9TzAJsQcy1KgYdN5Sf+MyEvBUSLWis/Cp 4wG0L+4zZDxf20kuZikpNQxFKTNHuIAi1e4MoQocYBbDlT5q3gKkROo6ubAIYjLe IYEUNPBQsQ3Nv1hajMoFa6+8WXkVRc14jMevmZgtLia7gp9ufY1bd389hrcIOCZb E9Svem5hozajiryArMvtsO1GkMilwP+M9pbaWecFRu/xbjWb8VJjGzcIAGjXyytk ahS1QGyxTUt+cOS25dUG30HGX8k= -----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-24T13:30:26Z" 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-24T13:31:03Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4297" uid: afdaf616-7a20-4a30-b6bc-9d38512bfa0c - 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-24T13:30:29Z" 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":"1e69857d-71d3-4486-a1dd-28a5df1fc7a6"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-24T13:30:29Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1e69857d-71d3-4486-a1dd-28a5df1fc7a6 resourceVersion: "2339" uid: fff38e41-ee2f-4515-b21f-a59c587f1b11 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIPw7yKA0mQIswDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NDkwMDE5NjAe Fw0yNjA3MjQxMzM2MzVaFw0yODA5MjExMzM2MzZaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODQ5MDAxOTYwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDP625SWQoCUivRcoEn4hSejdYERvcfNGRx m8obHsm0ccWZMohcT9eBSBBIzngPVE9s2uaLPN+szKwdHbciAL1r8zfi3/ay3zLE +iR6V5NLExy+h1m77A8F1Gb36CrN7x4aOpMwsO6AzQhxSTRDqRNIk9vVQTKgs512 MifZhEzNijuCA6YIVKym/8XgdFyAMHL15Ft5tA6/oQ+qI5t8dW2yGv/3LT+LaqqY aegKLpBpCUQyYqOlA1cRvP6BbZnggxPOWUK3G0nMbAwWu3fBnrH3JJexaelzi2e2 SSqaVYqNZxHkNuZGGJoFaG5ODvkGZSNc/lFyzFLHrLnaj5S4A277AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBShzCMn c/gKo0N8ZvHuCJtM28hU5jAfBgNVHSMEGDAWgBShzCMnc/gKo0N8ZvHuCJtM28hU 5jANBgkqhkiG9w0BAQsFAAOCAQEAciLGf6k+tYI/2O7kb6qMqNhZ3FTPXL8COOYd rXNB7grvE+czWl6HjGs8izUMArrwRH8huykMqxdyfNl4/ooMlVwQd1kR0//NgkwJ O+1e2Ac/DqsY/uSodiBznCLgbIkoG49ZapOL/h2H86tjHqCs+CdJNDx9pVeVshxP uTjmfA+Lmu4ydJi92GVakUv8QzBXWUqYzbIxrZ6QzenmU1lU2iepgJYpydgVoXYI FmcDDVkzCBxKGF6nS+3TjbGf+/8D/4qOfJ8X7M+isNb5n5MxlilcRnpnNXP9pRma BD19WWbJ6r+ovek+TX24ejp5WE75nVrWyTQLudq69TSXmTW5Jw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-24T13:30:26Z" 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-24T13:30:26Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-24T13:36:50Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "7975" uid: 819cdd84-f41b-4adf-be9f-0a3cbc1fa145 - 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-24T13:30:29Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"1e69857d-71d3-4486-a1dd-28a5df1fc7a6"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-24T13:30:29Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1e69857d-71d3-4486-a1dd-28a5df1fc7a6 resourceVersion: "2337" uid: 9cf1acd6-2378-425c-aa86-4e838be3ad41 kind: ConfigMapList metadata: resourceVersion: "15160"