--- 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-03T17:29:51Z" 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":"e7704134-04a0-4746-b615-6cd61d8ea7b0"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-03T17:29:51Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e7704134-04a0-4746-b615-6cd61d8ea7b0 resourceVersion: "3737" uid: 8ece4efa-ac48-49cf-98a0-bed309c8c09e - 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-03T17:29:51Z" 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-03T17:29:51Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "3734" uid: 80b435a6-ef3f-477d-b010-b1cfc9f0156a - 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-03T17:29:51Z" 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":"e7704134-04a0-4746-b615-6cd61d8ea7b0"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-03T17:29:51Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e7704134-04a0-4746-b615-6cd61d8ea7b0 resourceVersion: "3732" uid: 071c8cd9-1436-4976-88e8-347fc62b981e - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIRY0BN8tHQRgwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwMzE3MjU1N1oX DTM2MDYzMDE3MjU1N1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwiyc+oJbJxc/ mF9fI78HUhuSM/uyiXVjELbGnbvsy3B9Fta/iOgz6RkhKEwyWJZ7dvM/N77uQxBp BB0OaW09H5FjpdrCfo9yrKM3oFVT8bGG8m12MkFn3yp0hx0qXdIZZslasx5KThQ5 0lslY5bFR931fEpkFJfXSpdiKaxdKxG7jSnRqtwgXt8DVzZsh8m9DDUq2u8Y8Z6V BYRb30ToGOFTlG/uHNM04j7MrGLYyVomoIn4HU/qXEj/E89Bg6a2IQmvqlyy58lP Bm3ZjzZaWWwM8MYaS7hK8TvJFnLf3AoI8V5dnjEUhxEmrwAAzxSonCS1FF/MKT9I ejXrxtY13QIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAvltyIi2BzfMfJgC6Pfr4uqP/sJ/xZccp3riV8RkTit34xefG caQY0+C8jN7uneyd2xRTcd1kamwqg7CeX4Wv1zANBgkqhkiG9w0BAQsFAAOCAQEA fnzuXHX+2ByqzV+wSf/fzS/UZDihcLJDxVtbPq1UQwKS3R+9GRm/IHa3HPSGQQwh HZpDAaJJAjZBckt3lCbXNVEB7zPBXwd0qrkc+mOrvVyk6odzfqoVHKOF3egwAyL6 TMQn4Qtwx8C2h0q9qeDVxCWxGqeYlkpOABSbEwroEXV9kkfoO8gAUR+qaEdG5Mwc cVMbtOH7v3SBItaJHt76JakB+PwIpZDnG4H2bHTF44hxAEBCcbqawYHO0f5RB9Qp /AsoyZdN+xDbSoilKJj+iopLTM4Opsq4hTvAotGER8krPFIXglSx0ELvAwESliY5 K82YG/tbnmg4iaxiOX0jEQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIRylOsMl9360wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwMzE3MjYzMloX DTI3MDcwMzE3MjYzMlowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALPJLyOBGiIKMxHNZ9IHQfuDv6aNNbBXw4KpQVZDlBu2q9/icINVmnIKl5gG0jXB LNPc3WEMVsMXYIwBSmZjNrlkyud2G7faes8SCBazI7lN2DuABnk/tpyDdOCmT6s1 Pyf2RsFkDKoLgxet7OdWhUQ8ZGgpuaY1ThaZ1A2kcASVDcBDm/mlQeo/RfaTtTtk lapM6yAOfXhM/a3lhb7K4YZ/YcSRclU86OW6hmZ/9cOLY7yYrTsVcrIeVPhvmv4S 90v0T3j8qdBpj4bnRi7OJjw41VXwWJlR+apy37g6IzX2b0aO2kQrhN/3AvillsZp /FYVKFHzhEipQ6esiIAWS+ECAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAGO4moiTvx/iCGv04rzhJdXMdwbS4nY5osRoGIlu0lY90U70r4DZC2LiW Wo75O+RZGnvSDWKfGwsVjVuQfalbvzBLBgNVHSMERDBCgEC+W3IiLYHN8x8mALo9 +vi6o/+wn/FlxyneuJXxGROK3fjF58ZxpBjT4LyM3u6d7J3bFFNx3WRqbCqDsJ5f ha/XMEsGA1UdEQREMEKCQCouYXBwcy5iNGQ2MzliNi0xODA0LTQ4OTItYjdiYS03 YWI5YTMwOGFmMTUucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAJM5t7N5AG567FTwrykatHL4OpqksfAiE8CbD0VqhpusluzA1Fcn+qEtQPcC KQcTb20Z5IxPcojeYAnohmghZhjptLOPitb137CKoGMhpkWS6GnOn86ka6mx+r4v 71U3sZislqJvauWkosr7dQQGZk31MUak6o0JlKM2lpCIMeUO0fhIK1qOg7mPmCcP 7/6jYG9Lk6Jk/ZrZQoRYMqM3y9xEB6MDMDiD1Cjw9dxDsip5novWj9Gu9snF+apx EjjiN3rPBgKmXA+SnKWWjBpE7EcJazyRXkVIlZUeQORNm15tfsNitNQoFzT9pNZ/ z1zWuV1xoHe2uHs9P5YsqLVK2/c= -----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-03T17:29:55Z" 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-03T17:29:55Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3945" uid: be74e528-721c-49cb-8ff6-aa478bc235bf - 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-03T17:29:51Z" 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":"e7704134-04a0-4746-b615-6cd61d8ea7b0"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-03T17:29:51Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e7704134-04a0-4746-b615-6cd61d8ea7b0 resourceVersion: "3740" uid: 11b795d7-1da6-4d23-b4a8-ef1d80688ae1 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIISSVyCq0wACcwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4MzEwMDEzMTAe Fw0yNjA3MDMxNzM1MzBaFw0yODA4MzExNzM1MzFaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODMxMDAxMzEwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/pvoceRUmgQB12sZSg0DR1ToC1xkpsp4D 3Kq/hhmpPFQGQ3MkVzcD/mCNbFihrxIOcUcekrvk9d4oI5EYPDMMaZjQ/boe+F59 nXUFvLF3HwbiatLGJ8pKO5UgduT2cW23xlUZZMXGY0xijgi8Mh29dAls4YrKH+iN ZEvndVdvQJVyQSiF48BjDggTqxwgRucL2ZY0mxVcSYxPuqt/XhdhkUEDI8AECa0a v+y2F6g8eZ24Es2N3FghSBh8IsuPXqZyQRdfiZ5uwOC9TGHikKB5PWMIqUwYOAUA yGP8fYuTijHWKUH9KrssZXCVoKEBL5wn7ya01C1XF8j0eRwwToGJAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTTKiv8 VCS8SJXkaT95LjYrHieCVDAfBgNVHSMEGDAWgBTTKiv8VCS8SJXkaT95LjYrHieC VDANBgkqhkiG9w0BAQsFAAOCAQEAiZIn6Ns8w4msPnE3bV21N9WzthXcbEFtvRmN 5OEZe6/iEYqZu4ZwLJOf2olzTddFheMdtgfzn3fBE8HUAdR5SjmDpQ0wdcSO7JbJ FrDdklvi12E1h1J8wYSi3RI/EpJlrRXtX7mrYaln1BmtlEk/g5MnQ4F93HM8agwf Qjj6W7+MZdtaATLwAi0WylCy/x0gM2ruYDlEDQ6ONgXk95zkxj50GRL1K4FhLXHB AmrUMadken4fFCmCWYc+I7+Pvaav6koFhWdqqMw4ODEe00SX1xlhZpE1HFOEzWyr O8lzjf0BQj3aljyd1X3yN8wy6uFuP/1QeCvhmTuEtumihx/R2g== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-03T17:29:54Z" 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-03T17:29:54Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-03T17:35:43Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8228" uid: ba6c389c-bfd0-48fb-871a-eb4a722de72e - 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-03T17:29:51Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"e7704134-04a0-4746-b615-6cd61d8ea7b0"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-03T17:29:51Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: e7704134-04a0-4746-b615-6cd61d8ea7b0 resourceVersion: "3739" uid: dd103b74-c0e3-47c0-970d-56cdeb618690 kind: ConfigMapList metadata: resourceVersion: "11553"