--- 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-29T17:22:47Z" 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":"6f6e3286-567f-4c45-a89b-cc1a4bcf9277"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T17:22:47Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f6e3286-567f-4c45-a89b-cc1a4bcf9277 resourceVersion: "3014" uid: e21e6144-5ca9-46e9-9a6d-a25979bda397 - 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-29T17:22:47Z" 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-29T17:22:47Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2994" uid: 887d8762-7374-4dfe-9994-d11f853f4c29 - 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-29T17:22:47Z" 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":"6f6e3286-567f-4c45-a89b-cc1a4bcf9277"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T17:22:47Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f6e3286-567f-4c45-a89b-cc1a4bcf9277 resourceVersion: "2988" uid: 03f66fb2-c5f9-454d-96f0-0f4aaed96f38 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIKvhLFYPBAQswDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyOTE3MjAwOFoX DTM2MDcyNjE3MjAwOFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAstnWQZFOAW0S zmiiRV5cvnyHhvvGsGDux8J3mUeAy+yeRg1obrJ251i4hdvhZkyKkMOEW2t++zaN ctYUC6JRjaeig+SJD/fK4YtmURJVSxuaBdUbdTywBsWR47IWWuYxm/rub4DcB1M+ FEm66yJhbUUzaYoYDYJ+JlGXtGcSaLAhSbEpObCvrAziTmB0wwImenZUKyhut2JT ecAJKhPu4SRvD5ODU5xD63fGuFui7SL9xaN7Ry4vCXHApE3xttu7sMaguO/7GTUE 33wSXXICgcqMBNTlwOvolo+lOjOg3yhrHErtPxH7txwgBAKAOINObGr7HUCuCagb 4ZFkLTV2hwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRA1L1OmbeTKrABtQomKF0qdjfQQJPSE5ynHuO8QpVCqFMwflMM G7rsWSFzrc2bNsCuqnOC2B6ygFn9DB3eLwyu9DANBgkqhkiG9w0BAQsFAAOCAQEA LHqiCujsuyENs7ul1NwWE7dL9GRT9t9aEhMRHSSuyPnUHopveQWNh7NmKDrWQZzP 86w+u41BC/q2XLy2jrLCzZeIcMgY6YCAp6VDOQ/wjroqWBVc8o5leD4j45rwcHZk 0PF9OXi7ON99Adg2ssrXYTo6YzSXBBaXLVxCuGcxvdSZR1Dm0/irftfcykghLOxp tcEZttgRwqFJoeQSQE0eFCNU0jsG2ITrzBHrSP/q2xTCO0YYKdZ5PS/zL9tvFfyN 53tj5Yt4QDY+BTKdz7+w6LGplfUWlwigOiEpQiQS6QQ05TzNITSWmX9ZGxJKHq5c r5RC1rHGExHner+ELJXyIQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIISIJC0CSnjpswDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyOTE3MjA0MloX DTI3MDcyOTE3MjA0MlowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMUcTiZN2qd0c1AdFgj/PCdBb2UetN7rv7/tdCMaSTWO6UtWBxSSylXhgcBZelHz HjU2bunOwo8lVsaY6us0xEuOy5oWamQ8q8DcI1KHheoNXyhrBkYOV2NYiR+/4qIb C60IXivuwxQ4SsDfaxrZAooKYPLv6V8DAZ0cje6U3EwMWtZkm9UpMq7AJUMvBp77 WgWzZ8sQ0ETd8VGWtmDfybuuBJlHJOGfR0Xy5tQ82nbmbV6S4MgZ63uhygQFAhKy eESQQ0LRnRuZ2AwSZUdeEn5h063rX4AJqqHPIT8dm/0PB2gnUTeyRThYn3lCPTw2 LqDDtPXGo5aRsFZiDu01OS8CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAZNGGkHnwC7D/BStzs5fr+QS9LukbD0IYHmWsDcl2glugJXgwRmJzFhRy amk77MikiysTIjAWG1GialfU3kf3uDBLBgNVHSMERDBCgEDUvU6Zt5MqsAG1CiYo XSp2N9BAk9ITnKce47xClUKoUzB+UwwbuuxZIXOtzZs2wK6qc4LYHrKAWf0MHd4v DK70MEsGA1UdEQREMEKCQCouYXBwcy5kMjQxZjA4Yy1mZjM2LTQ0MDQtOTdlNS01 ZjhkMzFjM2IyYmQucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBABjVeLEzQTIctxp560FsLyJSqZKDl8uAiI7lJovYMnDkrsFFMGOog5Pdunaj iUzxsni8HhS3OaP8jF6/SUEsuT5nEecGbHd5HAtHy3pNkjne66dCSdH7Y3qp5DW6 4vfiQvl2NuJvBONQhBrFVPTV3DzDcP2nLxJVvdjhGlkATyqAr1Y4dKbJ3Kn510Fa dGbrC+k7vbmwj6ecR7krit9E1FlLoOJcm7HWPUU59aeTM6G02WaybH6HQP5bpWh0 /tBBTFkO2lKW8NwyW7Qzya2I3x+X8HxFuEX2qRoasSw0jK+7trzfDo0cgXzuf15b GQjr+S4gBR4UTU6D9owCaQe/PoI= -----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-29T17:23:05Z" 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-29T17:23:05Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4157" uid: d5308ebc-5ee8-4983-989b-0dd8b5d07517 - 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-29T17:22:47Z" 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":"6f6e3286-567f-4c45-a89b-cc1a4bcf9277"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T17:22:47Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f6e3286-567f-4c45-a89b-cc1a4bcf9277 resourceVersion: "3061" uid: 33bcb29d-0f1d-448f-a74b-b27c9793b3dc - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIU65MZ+vw0iIwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTM0NjEzNzAe Fw0yNjA3MjkxNzI4NTdaFw0yODA5MjYxNzI4NThaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUzNDYxMzcwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGr6NRUorldnZHAoTvw4UzATjtmw6JAa+c RbuYrE9m9KzIB1jbXzDxe/j07XuKVK/BZGMsoMYV24aXv1W9pzMiPAY8hIZOy0RY qE78WcG6zvQ15bSE6MhxdUE6o7501P8oZ9/WCGYHlv9yN+QevLaAG9KhyOXatdyO cDCQ/Do8Plyt5zdLWY2fP7Nynpk6AM+znnHkl9iGiouFF0RutTBc77ngavwiy73s DeFPhx5C7dfqmU4m2TfIwWaptEKodoiBuBtYoUuo2GDkRF5iKUxJu+6jt/dV5q71 /PdybFaowA06gIjsy68eYIRou5KBt7S3Mt1urMsVkBIye1TfebldAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSmoFV4 TuBtUIjap4ccOj+TATLajzAfBgNVHSMEGDAWgBSmoFV4TuBtUIjap4ccOj+TATLa jzANBgkqhkiG9w0BAQsFAAOCAQEASfkpU/Y+2Dw1gp+wZgonf4TOA3bHRMByG0eY d9OhwPgEvCmh0KXH6Pno0oQEFyGReetEzRGexUVOqohsBV4aP/u4skBNbur1rN3n 2M2u04j90zxqyTnwQs3sZOpyxdY9Jb0rmMAz7z9Mbu0ymu7ngpSWcBhbP4gGvRvZ Ju+aA64MukVhYPjfaaloYO3vsy8CoYFcEEjTxCZprLHAdYivCt4tJJgiqLcTp/7K NUc3u+mfQE3KxpCsPsy8yTlSjSQR4HngsTO9J5UvkQVE0As008ReSMXF4giypyIw 2i43v3YVaKbK4/hljKZo4HvuaaR/PGepTgoqQ/ss7ARLOfKCzw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-29T17:23:05Z" 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-29T17:23:05Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-29T17:29:09Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8061" uid: 438b0124-8a5e-4e36-b8a6-b02a9c2438bf - 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-29T17:22:47Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"6f6e3286-567f-4c45-a89b-cc1a4bcf9277"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-29T17:22:47Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 6f6e3286-567f-4c45-a89b-cc1a4bcf9277 resourceVersion: "3039" uid: ae0018ec-97b3-4ab5-9876-92170f7c3ffe kind: ConfigMapList metadata: resourceVersion: "11674"