--- 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.23 creationTimestamp: "2026-07-08T01:32:35Z" 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":"e9a633b4-90d5-42af-861f-79caf5872ae1"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-08T01:32:35Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e9a633b4-90d5-42af-861f-79caf5872ae1 resourceVersion: "2301" uid: 230c53a6-8d2e-4e94-891d-dbe08d5f1ecd - 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.23 creationTimestamp: "2026-07-08T01:32:35Z" 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-08T01:32:35Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2296" uid: 88bda631-a6a8-46de-a9aa-3a791593872f - 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.23 creationTimestamp: "2026-07-08T01:32:35Z" 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":"e9a633b4-90d5-42af-861f-79caf5872ae1"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-08T01:32:35Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e9a633b4-90d5-42af-861f-79caf5872ae1 resourceVersion: "2295" uid: f1cf9a9b-00c3-4916-b3c4-37fea199a96d - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIFeqwS9KtJNMwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwODAxMzAxMFoX DTM2MDcwNTAxMzAxMFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCwOE3l2yqVc aTkhYxnm/8Z0z00400psPZkdVL0kxOVybrSO/ONRDG7rIbAvizLQHM2GfXRsjJK6 77crLmlOWx3CtQO5yqlw/qm1CpA4KE58vhN3i3hX+X7sgGOte+3dHWddRrAGVgmg HPoZAf1niJP5xA/WYjStUGG8xPbgDdzdb/vnje+lPTFNljwM+xwsahPAgRLjgqnf NA8zI/q3WtHDO2725iz5qzzYu48nfgR7zvJHTc6qYTJrDC7ZxustM2zruYrlPgVB 416/nAaMu1EbiTfoGuPrUa0e5//f8IChPMHx+qIPPldB82cdR+DEl8MfnVSkBwau TZd8E4/V3wIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAk3QymwhrSdb+tNP4GZX88KbzsYpysucK0n0+kCi6TGgFHoSR GiVu2P0tgWi3531MbYdrhXrx6xZi+YjDjnpgFTANBgkqhkiG9w0BAQsFAAOCAQEA EuT1YAe/ehoZhBXoBL6LS1NoClhbaI4858VUme8axAnQWG1HuYviw/3s2wdFBkUi AW42GjCQXLwdzwwe66qHAVQ7sAijMbqNYaQ5K4FmpmwwN1e98px9hBPVY8MAKo6e sNan9wWAi5x0IFlL8cZuiFGr93s47YqUmqTtBscFgPECbH3iWUcIa296ui/yPdEU g33iDIA0a11y2Uil09C4BEDf5WH4GL6Y2i27F8VUAQGEILolr4y7ya7Mlp4qIvFq rFlowOprdTL+8KWgPciH89EU4LJSLHPntrU330gmwTPuvoVj3q4aZqbxlyPSqU9+ ygDApcNkJ1POT4VfAY00cA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIfVcbsguT36QwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwODAxMzA0MVoX DTI3MDcwODAxMzA0MVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALcvdpWKTwguf8uyI4csGP0FpBehQ4pbNSj/MlaNnHKf9ow9sKbzQQh7HEV3thOc KI4lUImPj2XIeO1v+7oExQFPuqmtX7vaYCGTqwy0RdEJVj06AzfxeRtGXpaTqpVt bBCsxqCfbEpaAggSYUjGZXz5LfaRmj1GiZQZj+c04u83whyGwszh6mvKGlucc4Zz 7GFoCBpPEnDLh7P4g1t18e/CggUeMHnd5OuXmg0JOE1AlawJAWwCiWrH6m+d6AUF 4JHGtrJV4WlZij9CjtGucdWIz1HIn+1Dbva/y0jgke3kiBoLufWxLb2X9eZvY7+p GZpRJTxXl8UmsxYvExEAVdMCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA8lbRqyzF6oWUYCFA9Ld1QUEVNzonCaZA3jcU9pkfhL1dkSGQlNlTewIS w5jtM3OG4NzciaNVA/6/mBch9ZpLpDBLBgNVHSMERDBCgECTdDKbCGtJ1v600/gZ lfzwpvOxinKy5wrSfT6QKLpMaAUehJEaJW7Y/S2BaLfnfUxth2uFevHrFmL5iMOO emAVMEsGA1UdEQREMEKCQCouYXBwcy4zYjFhNWU4MC05OWIzLTQ2N2YtYmI2Mi1k ZWZmZTU1NTI3YmUucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAGo/IRHjAT1H2v8yO2zBpLoBCbY9DOiHMWVuEBN2nks6BAaXG036zifCCqCD CFhTQUz/jtYcfqdeXIwQ0lmPlgxlNN4xs09PR/lZ93swQEKlFUwbAkKkrrHym69w NwaW6fVGBkOnNY5cYuBgVhuL1rE68ZEaYLdkDUhyvnp7SO+SPrCp11ZktUpptNne OuxFIVvJTqkaTryCeqmlgQykg/eusMWWo5ils7kFVP3oyZ1VoB7IxeM22hyPlkN8 rucj2Mxn0P2Qnp15v9Fdepcy/hdwaZ/WD9MygOVX4ZNTqh9pvnx2fi7RTERXf9Aj GOVyajwJSVg1lwHA8ArdGLvpsMk= -----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-08T01:32:32Z" 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-08T01:32:59Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2741" uid: 7be015a3-0794-4adf-bd2b-592f904f61d9 - 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-08T01:32:36Z" 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":"e9a633b4-90d5-42af-861f-79caf5872ae1"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-08T01:32:36Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e9a633b4-90d5-42af-861f-79caf5872ae1 resourceVersion: "2321" uid: 6cf607c6-e2b2-4dc5-b147-566c32f16ea3 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIJs+5KtIu1DswDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4MzQ3NDczMDAe Fw0yNjA3MDgwMTM4NDlaFw0yODA5MDUwMTM4NTBaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODM0NzQ3MzAwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDal0ePDv8eZhdHjv5cajfMs6OeeHrh2hTM Uf1/Ie1TuhCOZvklsw6P6EZeBmLnCFBW3pqjIt9m6IYJ0nwG7OuWXERcSM6YPhbA LRMBRXajt35sHjU5XbYeCYwvqhbeGO9zzq1INEDgayLiLr7AnT/FcEie77I/J8ua Q7uARb7Qvzx0alycwayCrUdYdKvfyB5M7tsNHimmguA3SBdDg9xpb4eZLLLR9jQB X6Zwpo5jORYnrj9aL3fPP7fduz/LenC8lj/98bvhxFxnaXvTU1MdEg+HV+iZwmAm hSyxSyz1pFn/exnBfro8T2pLKFKeXDn/Kfw4Vk6qOxSjd7p631rhAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQB5fH+ jczjrUEgjI/5a0Eyz2V4FzAfBgNVHSMEGDAWgBQB5fH+jczjrUEgjI/5a0Eyz2V4 FzANBgkqhkiG9w0BAQsFAAOCAQEAzXn3KyHl3VYfWj6bwRWmMZjkUfxD0Eel/kQV 4X6K2boMTYUBxdWghFnSDcLhlVBhMcI6RmDaWphQnhuZ+8AUP827WzL5hxdRqh1O SVmXg6Bnfel1wxQ5tyuwJFQTZHgQoTpB1p3+gbF8/o700mjWI+lqJwvEV+NAQ2bK 0TeZ1fo5jKQHmP1A1g0+Q4muX4Y1PnTd/MOkhgwQ+7H9gnHRqnn3y5TyVpdrJK3y Sp3T6idWKyDOqgBrmtjXzw3iqz7M3grHZveCl12zY8s0wgkpJMD436Ez9YLXPQnR 8aeuXKm65gUnE9NYinTQT/f5vyvyCOaqF5s9p8hGMJHzqa4HJQ== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-08T01:32:32Z" 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-08T01:32:32Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-08T01:39:05Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "7955" uid: 57d0ef2c-3760-4140-8947-f7302ac4ebf3 - 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-08T01:32:36Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"e9a633b4-90d5-42af-861f-79caf5872ae1"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-08T01:32:36Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e9a633b4-90d5-42af-861f-79caf5872ae1 resourceVersion: "2317" uid: 1c3f18aa-0682-4388-939d-29df7504a2bc kind: ConfigMapList metadata: resourceVersion: "11235"