--- 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-13T18:34:12Z" 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":"e15108c9-4e58-48b2-b6bf-b4ea82300ae8"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-13T18:34:12Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e15108c9-4e58-48b2-b6bf-b4ea82300ae8 resourceVersion: "2337" uid: 799b4384-adc1-4c8d-98ac-9e61cecb8055 - 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-13T18:34:12Z" 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-13T18:34:12Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2331" uid: 304a024a-59f6-4703-bc8a-6197191e0821 - 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-13T18:34:12Z" 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":"e15108c9-4e58-48b2-b6bf-b4ea82300ae8"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-13T18:34:12Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e15108c9-4e58-48b2-b6bf-b4ea82300ae8 resourceVersion: "2330" uid: 04e3a510-1828-4f8c-95c7-df61c36e0934 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIFbKnracqlkswDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxMzE4MzExNloX DTM2MDcxMDE4MzExNlowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4k9TtUky+fUD p0/9sKvcHhvKA1U0b7F4RuStl3TWtha2NkCHNn/u+P5hVFiuS61MOmjZzf4bYBxO 8ib9Nga/n48GqIom0ObvWN6aGLRgy0JrLnJ6HhHuD356LQrLOf0m9NWY+3lL6imG /DLU+PDQdUFHMSrhI+pUpT9i8I/+FzQSiNbEkOegPE5y/yy5HEv5aC2DWzclu3Xj qfBzAM7XSVXyZ07OHhah5016mPPOaMr8ZpvmSNhoy74osA4VXqVPOUiOuxXfAchg luKbO0CiQwjx+6ltXLzqXgZcojspDhKQVaYu5P60PLH2FnMQY3/RHINPZte7ipMy dUanjgPETwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRA5quzhDGonfeqLaSnxaT/c6AxgJobYqrVfMNxLYdSXhVxaDt2 ZpadRZ4GqvOJ/F81bJ0G9UCQq8Q1vxH7kJEv+jANBgkqhkiG9w0BAQsFAAOCAQEA jUU6U3TEqH/JA9npxF2bex1VQ80S1hem4FBVebeGsVBAiwo8lXzHiOfp9mod2vyA PwroN5BOmeunYcsrmL0yirOWN4ADqjGl9Hb/IV6Gkr/dWmvk8HNdfe1YcI+iW2VD NCNRea8yTen20FWwVrrbQpcBlJmZQJyA41s486/77mhQJbKKK8uvEEsx8VQntVdQ V8zSF0lIELevOuNswwSNuw+5YLeQ9sd6UPbvGnDQWYjiN+YYLzpyMfQN44T8q0dV hUxjqxTP28dUiIvAoN/f36D1m4JyHjCemNGrzqoUAvpcxJP4FYCOkW2moujYFBOg NEtQyCeeGI7wnBe3b/Fdrg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIPmxfxOoELmEwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxMzE4MzE1N1oX DTI3MDcxMzE4MzE1N1owMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMQKbQcHWQr+7d0j2aqacgS8/cpUeMup4C2qHkfSBJgRVZ6cTqqSBCrNUsD4APLM e3lgel7c638prcF0x2AGkSr+rTTa8HCU2wHugtPnKQf5CGJCUK/gl2CwF3D05xRf fW2iqoGpr/yE5JQXVBVxU+2cq79T//SwP1eSMVdE8NyBSrc2ii3kpKIw6q6W9r5B l5o3sl1j9WQtd2NbC4+8yrPBSC2nQRhigjDCPTmOQBMyqXbK8yUNuNilh8sr//Sz uLjF+PBEbhiRykprWBtFXjUEGPuYUFbizJ1YpEq4LaJ90xYzKcOKP9SCDjZsHkj/ Jk6cutBlkEYyVFIcuN65biECAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAFk7W7TzoH8EpTAsH/L5nyy5YI6tKOqG+lN/tsPLksbnbxHYpUxws1dnn KaukfjOtTSH67fAwFgweMzklJP/lajBLBgNVHSMERDBCgEDmq7OEMaid96otpKfF pP9zoDGAmhtiqtV8w3Eth1JeFXFoO3Zmlp1Fngaq84n8XzVsnQb1QJCrxDW/EfuQ kS/6MEsGA1UdEQREMEKCQCouYXBwcy5hMWNkZTlkOC01N2Q5LTQ3ZWItYjRjNC1h MGI0YzM3MDY1MzQucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBADL2B6ZQTSpIdF77yqjqGQ3mIuiD8GjosMO14BN8g71YeO12Jh0HXqWFEj80 SaAL7po0HyU4YFdR9eyjnsTFVAyre7V2wzrIR+/3YS5nG68Mb6lg4TCzLDD26PA+ WCO/jYQ7GDrLg3LCbzPObNHfLBLN+nIRUuqcVSeCXFb2Y7+Hw6xfeIlHJ7dii+YB YWJhnnr8Z1mWhTRB5Z3u8d2r+togQIDnTSCduboGVmKxbi8iLu0wTTWTIFI5VmhW JrOB2U9V2yPQZJGvUF8K3cjuWcNHx2WmIfttjcIaeGRV/ql64b9c8ZYO7Nq1IS9z URaBrEFHxlzF+PitzvBEkEZMx94= -----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-13T18:34:09Z" 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-13T18:34:39Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3389" uid: 6cc7cb8f-9237-4d49-a364-17f98957eeee - 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-13T18:34:12Z" 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":"e15108c9-4e58-48b2-b6bf-b4ea82300ae8"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-13T18:34:12Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e15108c9-4e58-48b2-b6bf-b4ea82300ae8 resourceVersion: "2342" uid: e6be9beb-fe05-4e91-b1bb-88a9ff87039b - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIG3pqAheYxacwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4Mzk2ODAyMjAe Fw0yNjA3MTMxODQwMjFaFw0yODA5MTAxODQwMjJaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODM5NjgwMjIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDThL6b3wRGQdDutUapYqHDEoLln1Loirt4 4/fRtPVSCi+cQI8kq6kV5p5Bbd0R9dkuFPxXK4t4M1948OqxqnQSbk7bFEdzkukX PHzVbXmmd6af+8+i86xczWrGnkKtJfWSQIjuXMHayg+PlN1Hahj7bhJz5ZDrkTlU svODDz4rAlSGkitSwqXBNyqc4DJ3CVpdPi9SJzuJX9cJmrXQtRSR2dDLazFavL0q MpinN4S262CvNi9oDZXaOQ9jwj0QdOlAu+4e5kEV48U1JltCoKEb/eBYW0B5eoDB jwCaE0dpCZqriLVlxkdPBUV9aG+uJUKczk9IT6hHUskys6B5UPbjAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQeTRYA ji2gqSFf/c2zNTVyEJjNhzAfBgNVHSMEGDAWgBQeTRYAji2gqSFf/c2zNTVyEJjN hzANBgkqhkiG9w0BAQsFAAOCAQEAqc1gaB5IHBaE17dPd94dHePQLhySa3aeEUj+ VtwOT5Agzq5a3ZxA93IBHhVPcojbAlfVuOpX6bND6roz/Ct1w8eiDX6+7txFUcLE 36+zF6AZBqcrbZyS/1KgKZ0SmYgqQt22uOU4dEJhRQ4t4KlRhs/x2zbUDS3B+QFW jTMsa/Wm4+RP8ANSbrW5yZIDWaIbCYFRJDo4uBYOe00BCK2bqPg3E5ikKUjRrC0I YE22l/KkOoiOKD88avgnrKPhwyCxX0Ir294UfQwK9g/cPe1DD/nxbGlBpVzc/inO 7Ma+40ZebvDxfoy+84gxQoh2NtjAd2I3NQZDBp2yZYJJD/t7tQ== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-13T18:34:09Z" 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-13T18:34:09Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-13T18:40:34Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "7956" uid: 98e58a53-e154-4ae2-921d-6585080193ac - 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-13T18:34:12Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"e15108c9-4e58-48b2-b6bf-b4ea82300ae8"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-13T18:34:12Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e15108c9-4e58-48b2-b6bf-b4ea82300ae8 resourceVersion: "2341" uid: 0626a7aa-6373-4633-9d2c-9d5e848d6176 kind: ConfigMapList metadata: resourceVersion: "13628"