--- 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-15T11:20: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":"85a6b354-3e3c-4f3f-92d7-4147661e675b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-15T11:20:33Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 85a6b354-3e3c-4f3f-92d7-4147661e675b resourceVersion: "2508" uid: c1a862dc-d00c-4305-81f2-f3bf0aaab834 - 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-15T11:20: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-15T11:20:33Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2506" uid: d5e68faf-6f02-4de0-92cd-fcffb28d6ea1 - 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-15T11:20: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":"85a6b354-3e3c-4f3f-92d7-4147661e675b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-15T11:20:33Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 85a6b354-3e3c-4f3f-92d7-4147661e675b resourceVersion: "2505" uid: 950ccc3c-27e4-45fb-8cd8-cb1c28a246b3 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIHbv3RVsYO2IwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNTExMTY1M1oX DTM2MDcxMjExMTY1M1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7feKbthUdPsF 5DdPskLhb05S6mXkKB/3qvGbN9VRoyNVCFLuWNiVyANBhjfCtCVtEMAo9DlIUEIz pBb2i9LyBaVhU8YCgQ9X2okVuah7zucVgfNKXxLLn3Uv3dcWfy2S8A4mrOjfAF5Q XySFIrwonOMmwkSSBXOJxUmzM136SIVW51XpxoLbkdxkox2oHu021So+MILER8yD 8+/uqKGo4E2H4TW/JbIrOBZV0zChjc3Fiftatb2ULwpyzInJdYkhSVTaGlHPd1w/ GsbCJZfrkZDblEocxd0zm+ly+OxiryO0Wl0jq977kEI8jMC8V2vVPzCwWUeEdrO0 SZvQNGZ/DQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAEMGBaLNQbh5l02RJ4xoDrHGGOaUmH4FR0rN/OUVWRh3WmHtP YHVhr3hWhI7cel88Vc9f3Ue7sQo751TYJ97FoDANBgkqhkiG9w0BAQsFAAOCAQEA Nkdojn0kC03CcvHOIu/dPk4zMgT1p42kfA0Ugjm4JhQXkQG765l4KqdN/1oNZMTm 9qgeQ8hxqbvdgKH9ab6NB6KuAbaNHYHNaMvjhk/HYEL6uObo25P4yfPN+a7NkaSW 4+xO8o+f+bLlCTalpKgMQWirSvaUh+6nL9ANDvL4aG5N3fBMU8S/3AqUjMNfKs2q DS7XGiU/ph/INg7ubZjdoq7JQVdxPJOxqBhGGSEb6D1Q31Uan832sSqQZmtJ8aG6 ljtpauPEdfEygvOZmHnXZAn/OnWrHIf1CVng1O9GiHMehbo1o6FUqpL8cuStg0vo zjHSuC2Nt2e7Gv3YEPWmzg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIID7jWn1jt9YgwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcxNTExMTc0MFoX DTI3MDcxNTExMTc0MFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN3trInDKgVzNxo6IWEf33m8EcusttqGTenD7ETrh+RVQ4yspUdVVgapGcdOqXUk aYlyzbBoYi75J/Mdnp4R6kSOZ2jVANfmeI8RLoApbDxFiG/9nMZNFKcrup72G8/K A8NNmPF9opX7W5914w6JQfuJc+Y7GcuqEu8YZCk6mNz//Um7Yhiiv0hDESM1Et3f cygm4AXzY0TPRxFPw9rV0whnN9KVKnjaLJJ+yYGsEzK+CjvhP2c30ktZhCGnHCbb s0QBl6bZMvernLHs4dXDkUWumo8Hmz0oBjeSH0eEUlQPnL7JxSINwrtM3fNsKQXQ 0duAlGNxis0gn7NRPNr/YxMCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAj6r1DhWmix475ZrgNaYd4JQHyAeN5Kx0CMvzM3sXTyyXNiy3v60FrKwz YHRsZhmnEGTbtMK+UEXNgwBzs0YY5TBLBgNVHSMERDBCgEAQwYFos1BuHmXTZEnj GgOscYY5pSYfgVHSs385RVZGHdaYe09gdWGveFaEjtx6XzxVz1/dR7uxCjvnVNgn 3sWgMEsGA1UdEQREMEKCQCouYXBwcy44ZDhkMWJhZC04ZmY0LTRkNDMtYjBkYS1i NTYzNWUyZmQzMzkucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAFBilAfzRihErpxy6inbG2/fVBEIy/QJ83da7T/EroIXeQZfZsRtRaEF66wf Z39IZoYUPn89o9fmuwRIxCHu48NMorlQyXVfX5MIEAfB52hOFnHiBD5253O8p6k/ UhTBmdPLzzK/+NaZihKHl/2r4kh99FjEFlaIhNTRvsPOCNXwuGXIGbzgOjx+qsww IA22ZvAD0hPRHN9HigXa2F+V5sPp5Mi8ObhSlylMk8cXr7/T7qhE8IrSVbXra9UJ 5tCqZmpXw/tzcjrKFwC0z+OOU/J4xmHUnzNtSpvryA5Oarlh+mw+RUvH+AjwHKEj YwQxkyVpk+Tx7epsW9sI4MwFt8E= -----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-15T11:20:37Z" 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-15T11:20:37Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2745" uid: b08700d9-a224-419a-8a4f-ba5a5bdbc941 - 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-15T11:20: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":"85a6b354-3e3c-4f3f-92d7-4147661e675b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-15T11:20:33Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 85a6b354-3e3c-4f3f-92d7-4147661e675b resourceVersion: "2512" uid: 61008939-5f27-4c6b-b693-d72990121811 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIV1OZIIieLOUwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NDExNDc2OTAe Fw0yNjA3MTUxMTI2MDlaFw0yODA5MTIxMTI2MTBaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODQxMTQ3NjkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVPuD3RmvVWPOy6Om+q3bHD/qOac00qSX6 H3arzoSMOYH65/DFaUz0egL+8k+XzrGTPEt9sRbbn/yc8Xt+pgNhOOzVemKTCzKY JvIbLZWaK/QqUhiseaHQSBbVqLL6LiVjLmldjnqeOPH20cNCbdfZoUamplict+p8 1Z6jTkkBC5Er9amZ8mXN9++jp71qWyv7OHIalKkbkQY47iB5JEOlUjp9PeAKVUZ/ 6x9LJIF1F7Omx61St3IvvG/5RSGZVTG0MFIQMYgxrbgJRenzsINdPZuUPjwSbAHu TBoO0HkJUAbWsUlqii3977ZkbnkKqE0D+Pc0kuqFHBKo+qLRBEG9AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSARKk5 F8emJVeeuc3OZ75GIMjKmzAfBgNVHSMEGDAWgBSARKk5F8emJVeeuc3OZ75GIMjK mzANBgkqhkiG9w0BAQsFAAOCAQEAXSiuJnAM+aFZDjOZfm4hhnfCI4ThQt8Z+EZH yocmNAM1oYaFqBdNZrP3hZ7vpxoIFcOK/mvI7WMXS0XLjuau53CC2BKulbJzWpNZ ox20AxA+OWcQ5PDrU9KO/oFNu6sBONGkTwtEq/cizWBeIzgn/JyFldiVsXZdT5j3 PcAeDD33W+5yETb6zrSSuiER/uLznxbQb4FADyHpshkQcL8NnToxfc9pae/tg2gn A9pxOE80b4TIosa6H3if69GQJ1B7wFVGCsrteiKkbsChiOOGTEc+zLEQ9xS/9rIn H0O2Y9wzXWnOA25LiZsED+JoIg3Enh4WfP8AanJpGEckEGeyKw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-15T11:20:36Z" 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-15T11:20:36Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-15T11:26:22Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8022" uid: 8bef5096-9244-4ece-9363-36c78c4477bb - 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-15T11:20:33Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"85a6b354-3e3c-4f3f-92d7-4147661e675b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-15T11:20:33Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 85a6b354-3e3c-4f3f-92d7-4147661e675b resourceVersion: "2510" uid: 31cd9965-ba32-4514-bdb1-a9cd5940607a kind: ConfigMapList metadata: resourceVersion: "16242"