--- 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-27T09:21:21Z" 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":"756794d9-443a-4e99-92f1-df806631ddcd"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-27T09:21:21Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 756794d9-443a-4e99-92f1-df806631ddcd resourceVersion: "2393" uid: 0f2ad25d-b509-45ef-af61-782e092fac1c - 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-27T09:21:20Z" 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-27T09:21:20Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2388" uid: 5971faee-a6a8-4d46-aaf0-b6440345f078 - 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-27T09:21:20Z" 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":"756794d9-443a-4e99-92f1-df806631ddcd"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-27T09:21:20Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 756794d9-443a-4e99-92f1-df806631ddcd resourceVersion: "2387" uid: 3cc949a1-0743-4895-a683-4bd32319e24c - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIII26zTHk31CkwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyNzA5MTYzMFoX DTM2MDcyNDA5MTYzMFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz926QRLRjDkF BJsjvpDOUljq4NXCjYXehhFxRpeXKEeHyuUQOt1wFEBXJvipIwREGlLKJRA+lsj9 BOVMJa5jFSZB8R8NOCxf+HE3geGG4WDbjydYWowTA3qz+C2qQQEXqtULDfVtSebT blVi/2IFMYuuGuIsGBaR/vYGKmmjGYB2rjM6B4kkN/chnrZ5y/9t6l1o6oNvP6Gn GMM9svbamnz2Tq+BBICE0AdP7fawJsySbojr7tebjK33zk9Id6jGs0oM3yGXVfq0 yw+e6kydjEDd6HKuugc/X2nPcm8HdeD6+neZLpRKGLy5YhQS8067shVQnAzoGuOW upG/GQAHzQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRARpYlCSFKNEv/tpYU9wWNcQjI7RDdE/azKXbFXEwaBkHe4F/P ixEQsB9A0l1P0IXeOovKW5xjnGQC2lWnvPC0pjANBgkqhkiG9w0BAQsFAAOCAQEA uGSmFeYDX2Dg1rDhvqKEFO9PoHm/KChtqWAGiwGF8gamHJRIqbJaGJ4hJ3Ifzw9t +HxHOnqs5l9/OtpEWzQDDlI3xlUjKebIN6Czm3BE5mkluUweyTbKK+x+W1dTbj+Y BA6pCyS3IFzEqRPCDfi8xB+M5iAvT/V+rPUhRDrE7s2gqj0c35vQ23BEtAmuyewS J6PIMYyXD+ZqrkOcL9GGoxpbs/A4BmD2dl9ZQloH9SZXpGgPKkAPpZg9W9H2MgRw OzDrR4EVmnaPaRPvZVauGDCawvkcrvjyAWRl6RW/SQ7VU8lhL18y6+ahyZVXwEpg jSiYoZW+mJMN01mkxqNL3A== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIYNrXk5SvF6AwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyNzA5MTcyMFoX DTI3MDcyNzA5MTcyMFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AKrQECuHaL1WLJCV9S4D1nToaluxpN4TQqI0jKa6G1p1pylarQvrNW9uPPZUPbeJ PwxVfaKAkg1PcsBu02unjYxVb2rJYKgTbZ9UjViDwBu2Xgloo2EnzWFM/HWaJED5 gR2UzcnKJxrXxxMJyx4am2lQJHXBi+JegHJYGSUVz9KY5rniRBfP/jzkZSxk+a0R qIQBKkFkVUFqfoWs2BWy81er8BFb1ZAzmMK9XzZF+ddu2iSwx04oQE9v5Wv5BX+J 6UhLXCz7N01MY0bBsA3mUWlKEBJCnZh8y2miGkYN71GKpot7qRCmGTj2kDSKIoEx e+znAyd0wqpFE3Dkmikz47UCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAqVy45pnpdYOj0di/LcIQWxoct5YmkoUNUGJPGH6P+zxbPJNIwLS024h7 A7qBKaaQFOEWPwixTkxx0ZoCtTIJlTBLBgNVHSMERDBCgEBGliUJIUo0S/+2lhT3 BY1xCMjtEN0T9rMpdsVcTBoGQd7gX8+LERCwH0DSXU/Qhd46i8pbnGOcZALaVae8 8LSmMEsGA1UdEQREMEKCQCouYXBwcy4zODZhYWZhMC04Y2FiLTRkZTItYWZhZS0y MzViNDI4NTIyM2YucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAFVGKGQD/NLMkS+0VB/NqfsZMvCxaNnL0vWPM5LfP522V4ewF0yA57KH19wO wXlTLCYTL8dyCzcSXBe2CNDodLY14aKnUL6wqclhcPD78K9MyAWimMROMGeY2PcZ bBML5Ja+FOwAVawa1woIlvlpIpg+6uVZa2FUCptESYNl0PQIYLtBG9eP5fZB37QW Ib1j8KNWscOxcqZN63CKX5rWW9+jg6K2CWYKRZaxQPOkjH5Gb6PVNzMi5tdljMKX Bgs49aR/F27WHypUnED3dzOUTNS70H6cHsUIT/59RLdwfJCIxF+/8cDW1zf8gcl5 JZ/PJQzUOUBEAe07j/UMWWia3qk= -----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-27T09:21: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-27T09:21:29Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2708" uid: 0023083e-e94f-4eba-a90d-3d36da687b13 - 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-27T09:21:21Z" 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":"756794d9-443a-4e99-92f1-df806631ddcd"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-27T09:21:21Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 756794d9-443a-4e99-92f1-df806631ddcd resourceVersion: "2404" uid: 17d2e6b0-a764-46d8-8e20-14e1315b0e38 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIZzm2z3cefxEwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTE0NDQyMzAe Fw0yNjA3MjcwOTI3MDJaFw0yODA5MjQwOTI3MDNaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUxNDQ0MjMwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDY5PtbtA0w9a7ZS3fbdOPO52QXIVZgbxwR +o4WLo/DF/9YhTNwTgvBP7qca+Rft0m72TqdwC6apVDuLxOMmhsxLbfM3DYiDi9f wBPp56pKwOiLDSV9bceeAPQ6jiTmM0W/Gyd1qQQUC9aMjqaPyZXl9NU/wRQWm9Km HIavbK5s9/Hx9TibTDKmOks/kH29k+95xMCq6xbz4jl5xTx9ikefi+TVClIEW3lI 0tdJNBuV9PgAM+r15H5Mx8t8umVWCZIDWESwRQBD299dGnScF4n8VXNgA8UNZ3l5 aND65XtiiQhyrpPdBi0j5sElF4lu7qft3hhAsvbLWQhDxBVajTi7AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRfoJZr 9UxhgdE+HfHWSE4Mnb93ADAfBgNVHSMEGDAWgBRfoJZr9UxhgdE+HfHWSE4Mnb93 ADANBgkqhkiG9w0BAQsFAAOCAQEANhUTsriv3RE8SoMRYvAFeWMKeGLitwIv/z/y af2fci/gyI2HA6BBJMZzvbjSUvYaWu0Ve+zd9KA1NplHN1iSj0mCUZbHrGgb8Ujc 1DJ/aW4OWzEIHOMCC0PlFOW5GcxycmhTBK9dQ0fJFQZp71ltMFn2FbAkLhqx435Q Uvd3e+J7YxxvPTNyZklpqNQklji2rsHy+9U+EmKvCvgsZE21H1ASNVg8wDMyJ7sg iFzsp3578JtFoS/FGactLfTzYgBloVMO/WtmqSPlEmmYXAx4LTKBucGXqlezJ+AQ OJMEa9O2aSIU5h7v1e3wEfvFYVavYzaiIQOKs63vVjo6p6Wadw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-27T09:21: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-27T09:21:29Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-27T09:27:16Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "7732" uid: e5cd5371-1fb7-47f8-83b1-7fc7ef197df9 - 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-27T09:21:21Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"756794d9-443a-4e99-92f1-df806631ddcd"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-27T09:21:21Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 756794d9-443a-4e99-92f1-df806631ddcd resourceVersion: "2399" uid: 6de9d319-3466-48a1-9a03-cf7f93c14bb9 kind: ConfigMapList metadata: resourceVersion: "13184"