--- 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-16T17:26:33Z" 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":"0f275ebe-8634-42d2-b401-92e8d045752c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T17:26:33Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 0f275ebe-8634-42d2-b401-92e8d045752c resourceVersion: "2842" uid: 538fd9bf-d730-45f9-9440-b3e9a20c230b - 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-16T17:26:33Z" 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-16T17:26:33Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2802" uid: 9e29e536-2993-49c8-8ad1-086876971d16 - 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-16T17:26:33Z" 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":"0f275ebe-8634-42d2-b401-92e8d045752c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T17:26:33Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 0f275ebe-8634-42d2-b401-92e8d045752c resourceVersion: "2796" uid: 0d94bc9f-cd8a-4078-bd1c-6ebe7855b33d - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIClLlSmDae+gwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNjE3MjEzOVoX DTM2MDcxMzE3MjEzOVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3MRnP9APUuX1 K4V9efmO10+nBiAM91IZzM176pumOXagaf5peAdriUATJjtEh4hm6fO2qPEkDpb8 04aF8F298RnHHTJ+4+xBDc+IBh81Xn1JI7rOiMZRggoYz8LNbzCy0WkZcWS064xo mBhG298BBxpbwHp7K9Jfpc4G0Ax7doeA/YoOKEORK1RSG6Nzfly/F16FgWp6kmqn 98ybVdhDB2XXw1hCQ1yvyHlB4n1SLhW7zU5JH2BQRG9y7Ge5qM55Y0d3UZZVL2nR ywSrfRld3rYCVW7kMmns/ZTG3RzvAYqBmPrCDjWSmfVfD2AKzeO9q5YsWgxaRYqy iTJEf1g+swIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAksSmCBGoccwW3Uc8pyiXh7qMDukkPweWqrllqUlfEHc3dP6i zHV3X0dk+rzcEpnOCeieVvwPYK+TOdBox0k6XTANBgkqhkiG9w0BAQsFAAOCAQEA 3FMxQ/NGEfWDkL84LqLBhKKLHWrAm5ptHqjTaVSdDuIDZ5Zn5H2XTtNr4NCG7tEs tJssRwgQiGtJNF5Pi9P33vR0tVHfPE2CcUnhcWE09LOURxd3lLJ2rdF0xjLsh8e9 3ZVMOn8EF/aCcejpoB6gF4nDwobKF3ru1xFGG5GtjGESmMVeeg1VOXNBhukXAlPv oqnQVXXqocpdfTzvbFMhTcrwjO++qtHT9ag2SS4IHD+9a/eZuKvm+1JywrYzNSxC JqFP5G+u4osr5bGJF3dpXLHdKrsaVyiJDEfOTGm36ODVIoB8YR0Yu+38jYm6Mhqo GnKnswJf24VVnc+dbl0Mxg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIcVsgm9Ss/GAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNjE3MjI1NFoX DTI3MDcxNjE3MjI1NFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALMSz5Gm1zVJ711InOCS1gGlnaW4DKV9oaMJQL0G9DUFNRUI8WcyQusTZdhq/gYZ uHClP0ul9kYTdzf3O7TdK///t+09VazhG2OLFz0y8xo8am9f5U4mRrMNoZEXXVYv P2XGzROQ5OZ7tznfCDfy+fnilMcRuYJZDNScCHd/wsW+v6zuP5ZQM3BjTsmmfs8D sryYNJ795UDP9oGIrMuNo5raMysxKSdyTnOIbnnLm9rurAILS/DHeJvBacqL4Xbz Q54jxQmnEcyug6uNSnrZDUXlIyOlvBDLbU38+dsLUlWMHPWN0sC2bYPOV+W+6C2t pmzTP9otN72fVbKH+AKrTbsCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA1n0wRsofyBQwn8u8Gb3T9vQALtSTxmfZg8vAR7d1gopfBMNMvS/+aFxT xIVFfrYflP6Tets01Fpg3nR5pP+84zBLBgNVHSMERDBCgECSxKYIEahxzBbdRzyn KJeHuowO6SQ/B5aquWWpSV8Qdzd0/qLMdXdfR2T6vNwSmc4J6J5W/A9gr5M50GjH STpdMEsGA1UdEQREMEKCQCouYXBwcy44ODUwNmJhZS03NDJhLTRkZTQtOTJiMy0w ZjQyZWM1MjBjMTQucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBABwDYNwztOZAqasVmi3zfqkMUKHnEdMzPhkWfYF2OfFMaOYMsmQ0Ic29RuUr +Gpw4XNd1Qn8alHixIN+mW02d0HLrQs8htE7EpHLlppAYgZyyz7R7e3H3l8yjPoc 2Ue07xQCWxz0HwNKMysgE7rSZvkzhSPfNSCPjKpDTPz+wrAqKDa1EoKJde/HeqSb 3SbxbEtHPfD7WlUDjoOXIsgWVXLsA2NFCyZezQSImeqZKx86ylcr6ttYgGP4MOv1 0WRMQ9AydBUyeWkFAybjzrxsWfsSGuYoYixUsGR1CDff1yYnScSDEjnP0Ba6AV61 o3gWsiOWYHi5tOc0b93PVZyMJ4A= -----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-16T17:26:47Z" 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-16T17:26:47Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4151" uid: 2baa49e4-7446-4dd8-9292-7181b84536a9 - 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-16T17:26:33Z" 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":"0f275ebe-8634-42d2-b401-92e8d045752c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T17:26:33Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 0f275ebe-8634-42d2-b401-92e8d045752c resourceVersion: "2932" uid: f765956c-8511-49af-8a5f-24309bf00d6a - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIWwONThQkoWEwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NDIyMzE0MjAe Fw0yNjA3MTYxNzMyMjJaFw0yODA5MTMxNzMyMjNaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODQyMjMxNDIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4o7Edg7Dwic9xKXTRZpnUsivVtax2FX1A +uljox44VCxr2VRzjjE+V5pCUf6dgvucEyoQA4BG0EfH1l3Ykpu2THld4YEDpxqt ZGB71yHWRTlIcTr0nVwFWQJn1jvk0k0/o5ijIYcDd8eRZ4ZnWr56FK5TJoLsN/jY pT1aPqaNRTNQ2rSZJRTbaUJfPn3KsdsOVWiX+PY3tU+OJoVqnrDSl4pzbryJwBZ4 2AVy8BnsOchzXHBsiNd8gNn5hYwjAQjSv1t18QcPHPuJtwbWp6ALEcihjLDmchTK 8jjHYl+QW8bN9n8CFl0PSP++ns+V7D8JSpRMLqITx1mrPzfQXbRtAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR0g45u X5nqXVGMRxQ1SLjlm6u2pTAfBgNVHSMEGDAWgBR0g45uX5nqXVGMRxQ1SLjlm6u2 pTANBgkqhkiG9w0BAQsFAAOCAQEAPDrxgAAMn6itGxMKR9NzLDYBxiElHvmT4hID c1FFDNTQ6urn+gdlobUe0WCs9mKcLUqj4MKfSyaEDGcvb9EmEroGZoJ7RAMvHkXa 0WxQYFrPTF5gNdV7sOc75OL8/MvGZApySZDlwc3sa4eic5EdFUoti3RbsOi7N0zz K0q2Z8+h6qTV1Oh6vDrjxT4KN1ro0PmkLCF3KXNyzjcGiVVdpz8eLJHFMfNjvFVG eCoMf4WLOs/We8i6csfsyWg8PDBc5v/Oq5motc9sCKnd5+krdO8WJCB7micZZ/4W I0gjTul5dkkoYJ/qyfQxq+cIVD9yZuptL+TMH1jn6qwtpKKgTA== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-16T17:26:46Z" 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-16T17:26:46Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-16T17:32:36Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8427" uid: 98402024-fd25-406b-8a66-16d4d4d22737 - 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-16T17:26:33Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"0f275ebe-8634-42d2-b401-92e8d045752c"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-16T17:26:33Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 0f275ebe-8634-42d2-b401-92e8d045752c resourceVersion: "2897" uid: cc81c606-3b86-4596-8fd4-9be1d05badee kind: ConfigMapList metadata: resourceVersion: "21807"