--- 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-30T07:44:56Z" 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":"da6d8cc0-8e39-41dc-b301-345aacc6830b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-30T07:44:56Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: da6d8cc0-8e39-41dc-b301-345aacc6830b resourceVersion: "2570" uid: 29114120-5521-479a-91db-529d4eec4213 - 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-30T07:44:56Z" 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-30T07:44:56Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2542" uid: 02410454-9d2d-44a7-bf90-3dc925bc4930 - 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-30T07:44:56Z" 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":"da6d8cc0-8e39-41dc-b301-345aacc6830b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-30T07:44:56Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: da6d8cc0-8e39-41dc-b301-345aacc6830b resourceVersion: "2541" uid: b90d0eff-c00e-420c-a188-38ea59a5cdda - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIDWIIM16MA30wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMDA3NDIxM1oX DTM2MDcyNzA3NDIxM1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7wuZ0/ksbNS8 ltxI0bIwxNht8YfTCELpmgm9OsYBywsazYMHVWYFlosIWgIjD8kHkZ61hGSKoOSB /dLmoX06XZJr+mNe2HaQEGmwimgCM/27+P14cFjciABw4btRcLodRlXXEW+x2O3P SwEr6iHPC+nMRuEBIS3zm5YFizhpqC4OatdL5Oa7jr0eQ2TAEUGD8SoACpirvUNM sNenNZvFM8yLkMhGwA1G+UXrEVHWJvXxLiPUepgT1xMq04H7XLt59zG3BJr+//dD FRh/T/8AwDNtUduZgnmV5Z2cfl4dxhBlAUrBtCUsqow13knbAVGrIToUGiTonD3t j2wAinhpEwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAY0iiMVUSNOk016yxA4BFzQ+frseUXL4DcNz8TUh9YljtKmNt f3JBEJfR6Gy+wC0bIDQb18vUMJA4pDovtCxGhTANBgkqhkiG9w0BAQsFAAOCAQEA UYupwwB3uf2vcDuZ+vYk2bakY/rZg0gh/CzNEq7CwHJE79gEPwM+I7MrSbwjZYGL yIwAmEfb7oLsx9z7tkLvOvs2Y3wMlo4HCmI1wXdPOGS0ndf7QHejkbEc/KL0dtT0 Mnj43jSvW7iJj1uuEkyQLRDskvar6J4IxXG+kwANcPUk/rn1WeSIh9Ql8Bn3Eyrr QNC/DffzkT/ZcOazDo8ysNMYXtH7gmFySD7zj3+ZIt2nnt7yO0qGjmKLVQrF0DH1 Vnbj1UkaEHTYSfH7rh9vBtQqUtnhK5X6WRwcP0eZOTNp2GGshw8ri45qRIpc2z6c v4dVBaSS/Oe9IRcJhbOJNg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIYckH6CrWpvAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMDA3NDI1MloX DTI3MDczMDA3NDI1MlowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AJiPhGBdGInjiE+b7bePJzD+gOpNFjwgcNaHyD1ZA/CQ45upMkbVcoNVycLvvb6I V/Al3p3Mx1cvN/p2LZ9XPw2oNspc4ocJERF8E8k/0lZmE2X0/7TuSRJ6wd2ElmnF FPVZgbt9cZZI8oKdqz6HJRlMFkEg/WaNBP4S3ON0fR0A+hxQvuDfXTtLJk5IO6vC Q/OP7km9vj9zqEQilkz2VRlR/juOGWyzHJ5ANu8BOqp6+T75Hr5jvxDOTB7dE/by uhuwBYVW6eWOBJtaCF+vs3iUfYzQRZkrr2D8cV8gIIlkkNJEwY0iv0r/vblwbIQC U0HRu7HwjuehsBWWzfcPLK0CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAfh3GXp+rbeIHj4BJEPK6jyZn+PKKoDzXxD9OJp/xliyv3osjUCwR4Y/S e8kbCFLQbM53cMIxep0YysGUudzkWzBLBgNVHSMERDBCgEBjSKIxVRI06TTXrLED gEXND5+ux5RcvgNw3PxNSH1iWO0qY21/ckEQl9HobL7ALRsgNBvXy9QwkDikOi+0 LEaFMEsGA1UdEQREMEKCQCouYXBwcy44MzcxOTAzMC1lYWViLTQ1OWYtYjA2MS03 YTI2ZTYxMWE0NmEucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAKtXp74WpQ1nSEk2HLD3wJw5GHoc1e3lvOMbSc3XnncAjTsPoigJl56Jt5hH bDBKOlAuyJuh19JUbAAL/nAzKZ98X7tCCfz+yCSsQp5AQ3DEzevMemQrjxoDIICV rqd5+WGmhO8fy8KjMaAuJceOUGLnWeHadkSgnfywz3MKc1ZvTGajN088SGUvh9KZ gg5eAr8WglGibbu69VdsvdiDaOvE59z1sK/QgLcEetQzr3NV+G9cu9HtSll/SWoj rxdkXm8jlCPwVGlUZFFQ9u62ILWs1gs3vzFmDBCAEozAy0AaIcLkn7/5JOgPpQL/ F35QrSfe6FgZNuIL+1tcuq7ENng= -----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-30T07:44:53Z" 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-30T07:45:50Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4405" uid: 91019a0e-6240-49f0-a166-654dabbcf304 - 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-30T07:44:56Z" 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":"da6d8cc0-8e39-41dc-b301-345aacc6830b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-30T07:44:56Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: da6d8cc0-8e39-41dc-b301-345aacc6830b resourceVersion: "2590" uid: a64bd501-e0cd-4331-ac15-00074cd458c9 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIOBPCJ3eWKGIwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTM5Nzg5MjAe Fw0yNjA3MzAwNzUxMzJaFw0yODA5MjcwNzUxMzNaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUzOTc4OTIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDpQ+cIEvKpX+1Eivl7fCWprzjR9g5zA/Vi wLsooC1y0GJvBgrZ7vVHEkYefAdXDwm8mMk8k8pkPhBeNWTiS1duNMo/HHYkPFIx /a7vFFrittEV4SV68yzD+hI+6AhtGDgzx+LVIoSXCA9qAEYH5a1napjgp+aG9DRM BoGdtb9e5Op82AWo9IwCe6LpDoWmulrkcoG+6ZLXm9aUMbMK56p2F2tLWcIQwmrd qxbd8M0iP1p9+N9Qi2ef7XNUEbydKTMNeYAHKDocwoqAke6zPUX+H1Z5eyAbcXKh 8SBFLWx9DyHZ74TLqUuwULFLnJ3Uo45b+6PXyFMTViEHAI/PQaKfAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSrE+l/ rsaftRGDrQUCdolt/oz0XzAfBgNVHSMEGDAWgBSrE+l/rsaftRGDrQUCdolt/oz0 XzANBgkqhkiG9w0BAQsFAAOCAQEAcDw63QXZ9ZC0Dzz51VxyUS1NodGx5i4jedCy Vv9w7PWOd/C+9Yare2dxvzcmxGdBWsLCkGUzCw/tB6ilCXqn+mdmA1yin29BEclH uEexv5nSUoY6p8ugg3oLeXO9KZRo87nDQ6nanXnogb0OKgp8pFngKnt+zFhDjzKL F9W/E5Xw3i/xnAlSGAxtZ0VdHoVB8acxqykGVHKwe0rsnjleV5IGrB+SQlsWJRj+ 87AMDQiroht/hg6mcZJVqt25UvFOpHVM58iPsRITOg6aXb3b6zpHgUh6+ggfgFrE 4ZLWbrkyFeGBgEm2b0SCFQ9PB/+eDVJ4F2ADdYQZIDmT2DBKlA== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-30T07:44:53Z" 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-30T07:44:53Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-30T07:51:47Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8286" uid: 1665c050-ee42-4510-8b70-152fc93b6a1b - 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-30T07:44:56Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"da6d8cc0-8e39-41dc-b301-345aacc6830b"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-30T07:44:56Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: da6d8cc0-8e39-41dc-b301-345aacc6830b resourceVersion: "2580" uid: 313f0b83-467e-4a54-8852-cc076246769f kind: ConfigMapList metadata: resourceVersion: "11562"