--- 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-29T08:16:30Z" 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":"1ab75d0a-e494-4438-ba55-db29f3385d91"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T08:16:30Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1ab75d0a-e494-4438-ba55-db29f3385d91 resourceVersion: "2696" uid: cb9a0b36-cfad-4556-962a-a198687eb874 - 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-29T08:16: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-29T08:16:29Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2640" uid: 5f2df47d-f000-473e-8487-f8b69c372cf3 - 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-29T08:16: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":"1ab75d0a-e494-4438-ba55-db29f3385d91"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T08:16:29Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1ab75d0a-e494-4438-ba55-db29f3385d91 resourceVersion: "2635" uid: 42a566ca-60fe-4ab8-bc7e-bbd7f4730aa3 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIEZo2lcgkMVUwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyOTA4MTMwNFoX DTM2MDcyNjA4MTMwNFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAscHf1sfm7tSv eQl9eQh7j4WNt8gK4LfSUTZXgaEp62XJVyFknE50x5uFA14P3di7KzZxZrF3ni1G U6mXd2T8sWGE/0vqLmZizrs0idIPGpcU+wVtDrUp2Us1TkWIEeqF/xuVyCZ2EBUn wbQXvCBXvaeNCi8p6me0Ra1JLAThELN6e/bAsjzuRjdfJ9xCPhRuXev/u6809E+B iKb5IdVNDdY8pYQIxdHcpv/F1MKerxPhIt714MF2+jtZ/oPuHZAt6Gi/MRNXCtfj mwoCv6RFFixh7gvx4kD0wNr1jL6Am+FtaZDcDzDjIcNj+t6S+5ECTS+a0jjefArn jRTRiy6IMQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAhVsnCceABwexfETWwJxZ5UcjSJmcyTcq62O1J5e1R45YlFLE Ekz7aMWr5eVQu4X79C0JI5/YnxF6//kJIlcoKzANBgkqhkiG9w0BAQsFAAOCAQEA Ka9H9V9DRCOl5/kaRH4mz9BlO6V1mt0ONXiF16LZxXcn78xfYNWsZr2Pu1ua2oge dhzCnCaogO/H6Kn3PJgc+ShH9FperdTkePvcjK34MOAEC67Caj+VO8zUhUK2Ri3B TtjW/f35d4XCagf1WkqrjvoqLNg9u32BVAsMYzqU8xpBWAR+BU3Qz1odnKtc4yAn rtHUoaQ/Y3ndSoN6/YKcgrcIHZ+iX2YL52vaqNd8muLOUjTpgz9gGtUI374yZK6b ommBIbS+k/fpgeAzXxjRq0imsJ+i0S1HwR1Xwv5qtH9b6MIDy9aK/2haWuPYbmZ8 cUzkJMZuliC47xsyww6+fA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIFesKvOgLwtQwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyOTA4MTQwM1oX DTI3MDcyOTA4MTQwM1owMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMCINOqHFYenRFuXv7mKgI6mk/sHNrPjusL8gQoqzDAcPHnrs3hnoMlz2J5y3P7m uRH3o0AFGwi1Eho0r3sVl7nluG2elwk6nc3Cylk8ZFVIjBbg42oBYKLGnEjhtipR +82jb7U/GeSMRawivMVKcaz9T+d8Lb9/DWhjBKCW+ACFbjRr8Q7f/2FLY9fiGov4 Md81TrLkNNtZydFdQF/8aS3QsTZ/K2fgk2QpaLvdcNd+6BhvooojvQ2+XO0YHIw3 wGDGU1JpnzNrbQ0XVk+Yc6TAebvICNPVhkb4Zkx6b7vnCUFSuY/fhgwsGFsiqkOi 0q/ZQDYZ198/I/wTy5E9CIECAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAYCEQqtoW3LcJQtbynGeJJK7f/yPHti2tJG4urjGJ5rA1t0P5otZiakwN C/gHui5+oBDB0i4ShwY5O2g6u/FxazBLBgNVHSMERDBCgECFWycJx4AHB7F8RNbA nFnlRyNImZzJNyrrY7Unl7VHjliUUsQSTPtoxavl5VC7hfv0LQkjn9ifEXr/+Qki VygrMEsGA1UdEQREMEKCQCouYXBwcy43OTE2NWM0Yi1kMGI3LTQ3YTItODFkMC1i ZWU0NGRmNmEzODAucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAK5rfyn2F9wWZxtyJ6JG00WpIQYmsf4K2I5VS50WBAkzW76gvAVLNmZ5z6u+ V+tCavAQLA9Z/mOyc/elHLvukA6KjTkFEJVnOxpNjMVck9wZ6lk0cNyO0WTZ2UYD o/GMH575w0ZWhw1Fuj68E26F9cT+/oRvpNxDT/MIxk9dDIfv1EhbQQFrsxIdgnZv ZYdI6bwKJmEZl7Vdb5eigKyKsdiiG11O6VnYdsRdHelyKSkXKPAAhTVZVCsOpPsJ urgbzJF9aLGJdgcznn4DXrNisofpwT7T6KugU4iI/dlkVThdNMmqKh7vB1cjg4jD x8P58h1WUQ3dnArbW7f6sIqwp3M= -----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-29T08:16:40Z" 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-29T08:16:40Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3885" uid: 1a17a687-b3ea-4e82-bcff-cfdffeabe1aa - 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-29T08:16:30Z" 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":"1ab75d0a-e494-4438-ba55-db29f3385d91"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T08:16:30Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1ab75d0a-e494-4438-ba55-db29f3385d91 resourceVersion: "2747" uid: c0fb3355-779a-4e33-811c-87389036ea7b - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIICqLDhhBKpHYwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTMxMzMzMzAe Fw0yNjA3MjkwODIyMTJaFw0yODA5MjYwODIyMTNaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUzMTMzMzMwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCr2Kko9aWXjBDwragTp3oOSM5XBCCbsh7A JoSZCTSS6coLDOVIu/U6SEZcRejtU8kmwOWzhR0Wv70hDWAc8MHECes0L2nCFkHd pmmHF8CwB8+9CG9cAGlN5XEbDM9lOqHqgIyhbMeiozfUdOI7mMCHBn6hLiLRpjY3 zs1CJjpG1xo4kyE54Wj/wvgTM4UHcl2q0FO6NurDjWPNjGwM3zMNZw7vM2kpLzGf xT2FKpmioByYQFK653/9e31e6ijm9fzHR6WwnO6z2zGP6tUJhUcqwQ0SKPul/nqe DIy3rrU/xW4yltri33im4bJ0YGSCtSPtD5bt1FnAJZsY5kfkaHVHAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQQ8Gur Bo/g/5oIbxXbY3yA2rGMVTAfBgNVHSMEGDAWgBQQ8GurBo/g/5oIbxXbY3yA2rGM VTANBgkqhkiG9w0BAQsFAAOCAQEAZMqrUwc1NhXm74Y1B82hKW0cTUrb9pprl6dX sMMye/BzyCuYawTAqTr9sIQhmz0l/USjTl/NE+Rv6/8SmUOjTRLzEf7y9aF5iJs7 xl2tZ1e7piK92SywAHZw++NlTt+QwWHgS67SstMn6CKDFONf1CJyWAKcXPvJ9OGb LTWcB1krmLnwYR5xreGLbnnIOD6BEjF1HVFYXsOpdidTzo5gpayo5UFZssoxd+Xj orgZoOs70F2o7qORS42XFa2dd5vGe4N9yvqXqT85+jO64kQ/erdmSoep22fiOIwp CzOqtfNC1iimpzebnFTbBPBsQ9L0MePNgRGxgA7/hUR1Y5YJOQ== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-29T08:16:40Z" 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-29T08:16:40Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-29T08:22:27Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "7942" uid: 7ff4b55c-f94e-4b19-853c-791dc6ded5b6 - 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-29T08:16:30Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"1ab75d0a-e494-4438-ba55-db29f3385d91"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T08:16:30Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 1ab75d0a-e494-4438-ba55-db29f3385d91 resourceVersion: "2721" uid: fbd62b5a-e80f-4bb5-a5ac-7174b29b1dd3 kind: ConfigMapList metadata: resourceVersion: "22429"