--- 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.22 creationTimestamp: "2026-07-02T08:20:12Z" 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":"83668070-9f1f-4cab-9202-e34b9580d5da"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-02T08:20:12Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 83668070-9f1f-4cab-9202-e34b9580d5da resourceVersion: "2632" uid: 63220161-7b48-43d4-a723-1e192bdaff23 - 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.22 creationTimestamp: "2026-07-02T08:20:12Z" 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-02T08:20:12Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2626" uid: b2764e1f-cebf-4648-9861-1c89f01480b4 - 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.22 creationTimestamp: "2026-07-02T08:20:12Z" 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":"83668070-9f1f-4cab-9202-e34b9580d5da"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-02T08:20:12Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 83668070-9f1f-4cab-9202-e34b9580d5da resourceVersion: "2625" uid: f7f712ea-0ef8-43e9-bd06-6bd781f6be20 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIeVSg8CShR1EwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwMjA4MTYzMloX DTM2MDYyOTA4MTYzMlowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2jfmUvi++b2A HCEioLhc1keAK3DdcDNU08O23iOZs/MO2BJD29/Xd+0LcGLpKv+nlSR2m0YVOX6e FU3K1IyV4wVSu2o+W0QMqEIhMYXZXUOzCcp/KuB0eTIKMgQmV+cu3OfqV7cT8QDo RUly4BofqtRGbw+d2gaPGZtHXTfleUHM9MVqRqGhuVpvf/m+eL5c9HE5X9TmMM6E 3XnHIVpmCzyG5yh6OlWOyD/R6GB44QZ9ILU5eR+77fqiCejm+g5AG0/3yY0PSQom ctCagdKJoc9iKeC8nQ63aZ7WwebiQw1QaAw+5uDZ6CWjE24XxAOaBUhf+1Fa55n+ DRtLhwaBhQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAEGNX9ZjGbEK3AoyszpRLn7orn0cDp70+zmBRfGd8X2gGDC5Y ceFllTtfF0JV/kAiQfywvgwE+IGAxadcuvLoAjANBgkqhkiG9w0BAQsFAAOCAQEA tXTeWzm7inNLKsKPvLvXdp6/iAGkUlmEAzBtumFNpuLk2K0/HH6ZT3NwK6xVIE9w afyMOVeYU2miSOMJ0oy7mVjCWiiZZHIjIX5fZTWV96DhTBtIou8xCMYZzygnti7k VmPNlqn3VjIWhB2kqqF6e9qXgtls1e2XiL8wVznV1wZFFeb+mwpfHLeQuqL85Wzm iLiXZE4jv/sMqtKPaAemCYJXjUaOWG4r4XaMoNk3Ka3IOfptBL29BHzoXb5KZkkH Hi4rySvVq4xEeV1TaraKm1Mu45rBfMP944PyNtcrqwQGjgG4om95qBroIX5SgW9Y 9+W5H+WhZauojAecf+aLHw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIBR8v8AVyPOUwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwMjA4MTcxOVoX DTI3MDcwMjA4MTcxOVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AOxU7izi+RmYuJBmdxF7QYjI4mv0q84eyW5OqisfXlls/NAvER/53Q7Se5Nw1tMq SGA0ajGqmMW81u1VbRb511zV5L0l2XdNX9zxwdL/1yLXLZSOVJb6m0AyoI/L9FqS 41zEW6cm3OcoXVKTGOLimmFqx69ij9fpUzKAQyeqj0OFkP1mJ2Mpsx7hJ0RbilEn TDi+lgjNRdir80PLpEdmtZuZWgSUCKhs3ed9VEhWFtRnOYezDTtctWnM8diyVhN8 hAlJM6jNxZLxHM3aI8wZQV/gPu79EdC0ssf/80qVDtf5iddjBMuCgNzo8wGgK9kr qAvEXGEhVDOCmxTPULHsAdUCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAiQtLJuIVKJZe6SkV1HgLJ4gqoKA9j2uDK0n6O2Ayd6gBpSJSWu4AzTk8 G3qOuRZnYmJ6SKft67Cdk1M75p8PETBLBgNVHSMERDBCgEAQY1f1mMZsQrcCjKzO lEufuiufRwOnvT7OYFF8Z3xfaAYMLlhx4WWVO18XQlX+QCJB/LC+DAT4gYDFp1y6 8ugCMEsGA1UdEQREMEKCQCouYXBwcy5hZjQxYjgyNC1lYjMxLTQ2OTctOWM0Ny1l N2IzMWJhMGIyMDIucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAGS3QYnToRH6qpldzGshH8DGr1zwaN1gaSymwimdDBLw/WKvzr4zTJjPFYui xsNNfLDZdTrvz93yq4BBoa5Xdo5QFrd8qz6xmHAAHig6EZX9HGM69qrtqsSK7wnl Sgq8VhH7hGs/cNpO4M9FmUkZrJGEJvGOXSeQT7WbsLhaiV9na8Tyw3R0065apCEi SCkLRutXxtJ+zvAga3r6IZ0Mqsm3dA16TVpZjOkAlEr5gA8J/jUJSGj4FawM137M hTs5dZLxpFUITaRGOfj4fMawefI/kJh5RSChhlMmHZ7sEltDQAo1Ghh7uBVwmaci RC6KNG/V3vV7JjjntiMJ6CDSlzQ= -----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-02T08:20:18Z" 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-02T08:20:18Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2958" uid: fb378361-6c11-4737-b5bd-ecd7a1576179 - 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-02T08:20:12Z" 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":"83668070-9f1f-4cab-9202-e34b9580d5da"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-02T08:20:12Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 83668070-9f1f-4cab-9202-e34b9580d5da resourceVersion: "2636" uid: 445b3aff-6a1c-4635-a345-647d3c1c110a - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIfYa4mhA5VIowDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4Mjk4MDc1MTAe Fw0yNjA3MDIwODI1NTFaFw0yODA4MzAwODI1NTJaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODI5ODA3NTEwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa+gQ9yOVV0YwESvLxii5lySiMH/23B48d bCUxSSzFA36TRvUvo72E2ZlieF+Mf72r1KQwBus48X2jJLIdE383N13J9d2wdE1M clCESc9WE9qqM8ofWkNO0rZQfjD2Wn/zMrQRqpnedNGZdYEmvHBVFBjKgUtMnTQb sWdt/H0GpianWcUFScZv9mYmhC/33hMCYcEJWr1PgNjaGgpTlL6sSKjE8Onn9pbA Mn3jajLplDToFii4qrynhRgm588qTuO0Pkp+0xu8iTyu75omtjxSN/zBt5nVE8pg 679wZSIIrcmlfpciO1zpodX0cFNFvwBf+yg4f1KoPqArJGp8CCz5AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQGOxMW a0jiO9UP8yDJIpAmcJ/QeTAfBgNVHSMEGDAWgBQGOxMWa0jiO9UP8yDJIpAmcJ/Q eTANBgkqhkiG9w0BAQsFAAOCAQEAZPhegHpAY8n8oxJm4y9X5RlAANVpRXD9kpGP Kwy7S99AR9d1R1UCedZVtbBpYroadr/lTcnGDCfUFZcrlutTOKD1sCSlZW8xLOPo JGg1Dyrdp8Ge1e7mUJbw5WqKHcc9+OCC9mH62co4+uFj0j3yc4NqIjMIszqbfUYF P7vqBi7O3jwyH96TMgJGu4iZs6Uo63io3ElFmxoDGJFQQQi8bAuaZPWfBtNDQdSO 0lNGmmhkek08vqUDBZWTUBb4UV7ah9uheD4haWpxdC1QpV+P0domm0KMjyYsBkAD uY7KlkXg0IXxx5BphPS1FPV0S+dB1Xqf4ZUtQaY06B3i99PRVg== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-02T08:20:17Z" 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-02T08:20:17Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-02T08:26:06Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8070" uid: 673bf7d9-d3b5-4555-8575-d7e6d12bf8a7 - 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-02T08:20:12Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"83668070-9f1f-4cab-9202-e34b9580d5da"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-02T08:20:12Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 83668070-9f1f-4cab-9202-e34b9580d5da resourceVersion: "2635" uid: 7e505544-f030-4a2f-b6cf-89243152066b kind: ConfigMapList metadata: resourceVersion: "11204"