--- 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-06T19:17:29Z" 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":"d84bde99-24a2-4920-9053-2da5213b5884"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T19:17:29Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: d84bde99-24a2-4920-9053-2da5213b5884 resourceVersion: "3489" uid: 3b8e1322-aab4-4725-99f7-746001b1fe3b - 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-06T19:17: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-06T19:17:29Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "3484" uid: 9a7b6d5c-fcc4-4db3-bd6e-89ecbafceee2 - 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-06T19:17: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":"d84bde99-24a2-4920-9053-2da5213b5884"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T19:17:29Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: d84bde99-24a2-4920-9053-2da5213b5884 resourceVersion: "3483" uid: db2952dd-c981-4e42-a738-a4b40b5a6600 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIISHKyqRoc0wYwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwNjE5MTQzNFoX DTM2MDcwMzE5MTQzNFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw4y+x7HEUyjk xpE1YEFvfMszylgj7FK+abzmK6/8EBg47yTsOZRJz7tSMNkwq8VcLHN7JCzWfjHf I6iCapqW8smOGiSdOB8TQ4uYkXV8WtKRdGDbJzBpKILWdVL+1MDo2MtCAU9FEGH6 rvAS71t7Dax4dQCK5DqnclVXfyD/jkcPACoRZeuyxSqkjBoL5qGFi7bH1fu3jHpb Ys0ciDX79iHnmYUEIxgIybaUUNJ59WUOk8a24fuh/nbas+TF9fX2yWvWfzl8+rWH AqhIrkDLWSOHGj7lsARaWYzcyEoq//wy4lDx501WjgMOoTj3b9Gi/vWgOoViG0zr cn7QG6HD+wIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRA/ztEbb7dxG0WhNSJaeCfTHdjOF8Ww4EyYKLDkrRNcc9kOau6 MDfQiFcBMtKwm7Tq2Ak67GlqpUCZqKEYcRZCozANBgkqhkiG9w0BAQsFAAOCAQEA O82Xi6lItYbksAC6wUUnlDSIKIPCDIiAEmbFz8r8HfNmu6a0RJDTSu9WFSxB3Vu8 xBt0tdxzpEAuLXh7+GJfvDgnqP5GkHXk916nLKOmrSJmsSIlNiO0NyW3y/iR5rqO 9617Gv8zCaDpbk1iQ3Puug3aEumfkbd5K/GLBrHkzxEyrtiHaqrRhGpfuLVTCJPq VLbQ/6wFQjLc45+kI0pPGqRKnFFiPRUNi62zG50ac3cAbgBl9fN3lw9TDCVVnNUL hdlE1RaR1arnN3m4D+cY2wAOPVqNsLjFokTnCMGB17ZrI+sgdj28WDS76dQLYRMe ztdpGnASViO52C2+67LVuQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIG5lN4lHIpWswDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwNjE5MTUwM1oX DTI3MDcwNjE5MTUwM1owMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALL+b4nTa8DcS76rIJ3VIl+l3qCvEu48J6DlRHcEc5Mb9kbPJsH4qlIkGKAJEE0b YUI6LSXGGBCVmwGPQL8VxmIJxgoHNpMSfMvpL6Orp7mXt1zTRumTtCpqU1uexcc8 XP9CPaCRm93DuF4s0nIAn3O674l7KeNI8xcdLmErnY4JuWSBJcj6IsJQltiBJoxF zrpKHZqhGzgWR0FYNUy6XJQRGQdejO7eKHpqC0RJqAEAcd+1eyy5HmQiqMgB2TXk 5qq3jdmGvQZbxycUivmCyCQeThAkaAen/rcIxw4pXBJfpDSUt6KJOaDynD6MQqV4 tI4Tnk9Rmy5fDHYz7xGcHMsCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRALhdgcIZiP0psp+pqK6Pb3EretPsvtBVPY80LmB4esCLAKaARijtsLBLY /OqJ274SQKU8EvQWYAtmLme4BiDR1jBLBgNVHSMERDBCgED/O0Rtvt3EbRaE1Ilp 4J9Md2M4XxbDgTJgosOStE1xz2Q5q7owN9CIVwEy0rCbtOrYCTrsaWqlQJmooRhx FkKjMEsGA1UdEQREMEKCQCouYXBwcy5mMzJiZWFmYi04YTQ5LTQwZTQtODhiNi05 OWYzMDJjYTdmMWMucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAKdOeiCWZO+caGto82lAJlHgZzvDlyq6zwAGEVNXL6I/+nt50XaLL0tAEwCT VGOaZhwU9qyPJMbbmGyzq/10Km3RoBKZmI8rFamTJhabSjrCLLgaLFjhbEEXtmUb n3kwl/7CqyNGRE0mR8E5Sl4IaT1JZUG5xpfWE/GngZJuAP7zlCIAC8M4/sHokz4P hKFPHTGgTsy/29JFtnHgvK6KfkvPJB7A7gs4AXTTfkrO3MzJVdoYFvPLrM4OJYkj wC4hXPdhw2jnU942vJpGXTLhAKd9hTu6DlM1VCEu5o2tedJD06PaSNpMuM29Bo89 To0B9Yt0Fw77xXWj1FjX38gPIx4= -----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-06T19:17:26Z" 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-06T19:18:37Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4541" uid: e049d67e-7fae-471c-9314-82d1d88acabe - 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-06T19:17:29Z" 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":"d84bde99-24a2-4920-9053-2da5213b5884"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T19:17:29Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: d84bde99-24a2-4920-9053-2da5213b5884 resourceVersion: "3494" uid: 4ce2f0b6-3c6d-4133-8ad0-a986bbcee27d - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIaZhc4xZp1jIwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4MzM2NTg1MTAe Fw0yNjA3MDYxOTI0MTBaFw0yODA5MDMxOTI0MTFaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODMzNjU4NTEwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHhgdRSGhK0b/83pdRoHWO9Hs10vnIIIad idvdkwX0X2b0TmBuQnuLwT6JwtmoeZ5gaWjFU6Mc4YQkt+JFiwidzkx8kt9rzMaY 4YMgmbxZkjSz9WGUEYNE1uvBM5UnRwmPHC/jcJ5Om+hcWtloZkTarXFIUzSgM0X2 s6SA3rbI9Azxxtzy64oTGaBGbDRDsKihYyC/XfbDj7uNcu56Nu6fSqUPwsIvP/Mp hGOn+H+69GCeShSIMaw2Grs/ubDZBhrCGMtNUhKGq9LVIH8QtfyMsBZjepq1inrL aoCacN16CiusOvno18dlqfrkKu7RG6JMryF6omBQf68uLHPOmHEhAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTOj6T8 HaOo01KjAHlpCWf6Z8/esjAfBgNVHSMEGDAWgBTOj6T8HaOo01KjAHlpCWf6Z8/e sjANBgkqhkiG9w0BAQsFAAOCAQEAjrzDhuyIJiuUi8t8g88ZilK91bFBDSFyBUYL nxbNhw1SQnbusKk03BIQOhaITefG9Mktms8sTtRCvztp6Y16HRQdSEsGIcRCMu4X uP80JabGFYvAXLeXpxR4uuTjiaVuv3cXW0sn6YYGXUTCeZTue7XDNBQwVvt2C3Vd 2ktuBkrozJG5wdUv6cyvOI4F1bAPQwllUNhFDLBwlYVngzyts0FXxC3lCfEk6qV+ W6QRzD8F1kTbOzesL4sKWVpN/u5s6g4sijeohaWV/burmF35GRq/XRQ/csZrGs8y 0vdoq3eNejwjR6cjVhgtIawd3DwDdULYG8EZwVjW1LqAHdmjhA== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-06T19:17:26Z" 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-06T19:17:26Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-06T19:24:23Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8460" uid: 1326760b-881b-4411-b37d-52bc1146d874 - 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-06T19:17:29Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"d84bde99-24a2-4920-9053-2da5213b5884"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-06T19:17:29Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: d84bde99-24a2-4920-9053-2da5213b5884 resourceVersion: "3492" uid: 1b7fc93d-ebd8-4492-b434-1cf109b7add6 kind: ConfigMapList metadata: resourceVersion: "13886"