--- 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-09T22:49:04Z" 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":"11d18993-d612-4502-9882-1e7097ea72ea"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-09T22:49:04Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 11d18993-d612-4502-9882-1e7097ea72ea resourceVersion: "2314" uid: 462b369d-e2f1-480d-936f-46032b79d392 - 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-09T22:49:04Z" 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-09T22:49:04Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2309" uid: 9134500e-5bab-4e36-b04f-01ec60601649 - 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-09T22:49:04Z" 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":"11d18993-d612-4502-9882-1e7097ea72ea"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-09T22:49:04Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 11d18993-d612-4502-9882-1e7097ea72ea resourceVersion: "2307" uid: 3a4f36ba-8508-4610-836b-711aed2fad90 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIcJdpGqd7goAwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwOTIyNDYxOFoX DTM2MDcwNjIyNDYxOFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr18tdRUJyahP jxtiygPKgFLPRG/GG8XYO7pEtaTzDr+F9/88FTwAbymJP4wiWWjrqisdyFpBzzkX 9VNdeCNB3QrioP2RwuXpLkIQoYXJ2eXBieX8NarfHFDgGGI7xJYTeKcP6DD8Q6kK lyBX0bAq6epLYeUr3ugS26ooDvzHEPJgsq7f2gTlMWq7XixgWHnzcCzHqEg3sLLL haxi7XrKOY+7mcgrcZhJwVh+kAbP8nwn70xBir+BcE4FuwBsrqBX+akjgmtUlBXA HYRUC9ltZhfm8jAIY5BrfVos6tXHT/2Zi303HTmTK//0VnK9P2IuQ6sCCntthzs/ rEII45teCwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRApXTjKwYKIozqekzwyH5Hz6s+hfQ3TEJdZmUVzmtRA04t+6dl g+5vgnDSHySnEEG2gUZ2lpraRjhyvRFzOhfxkDANBgkqhkiG9w0BAQsFAAOCAQEA kxYvgN1x4fUPR6ZN3cflrdc5D4sC+Hn408ePa27i6vi/br44QRJnthYBzLq+EEe1 R2Bc4MEv+2d+LqYrAgUkX3QxKLURt6GpSofGvj0Lj61jWWl+1K5fLYfU/Cq9N746 RHkK9RLt8GGMluXutdvSsTnx1b8XDrGXOD0Q18NH+U730AuYLSoc3rHroacaUA+1 37OD0SyUha0CrHHYvs2ZtfTJ7SWnk7fTmRy9WVYHkvhvCMORQdJX1KJ4jVGLD6aF 2wMINomU4XRMk09SU5RGHsbPWSm8qgvByIm6mTrXnkA49tOM3SeJJWZkblXtA6Uq h1v+3rWY+TsXTTGyZyKJvw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIG7oAolfqjo4wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwOTIyNDcwNFoX DTI3MDcwOTIyNDcwNFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANZaz4VIOr7wFMBTnZKsopZfhLZlVmlvcG22hEM34nHPTpT9MTQtmgIgDLHZbkaJ Fb8Jr85WiO7r80dswBz9vkB71YvjE9cPp+sVk1awFdxGPeXqpTE2uAMGpc1U7WCh IT/3dcOi3aV3KOQ6vzrMRqBhJveHOXCURF2v6yospNQpKw8HM3Hq9evWpd1At938 nYEilzHMr4jKXNJT/8oF8/XJiD2SE9e2ar7W51T5mLyQo95U3iqDgEcS3Ph5/Fzm EoWDuETIn2WHhVPwERRHchX6kS7xnf7+Q9ORc3tRQuryvb6nGCzdyN0gbZQkY50r 7yPcgOc3L4oGOAI86Qs43s0CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAQLOSx1tE0MVDbgkbcSoX7UIfJ5P+R2SRowp/dy8Uhec4h91U26TlGbg1 eaBFBwTLNyVYIQ7I9KqubPNQcwCmrzBLBgNVHSMERDBCgECldOMrBgoijOp6TPDI fkfPqz6F9DdMQl1mZRXOa1EDTi37p2WD7m+CcNIfJKcQQbaBRnaWmtpGOHK9EXM6 F/GQMEsGA1UdEQREMEKCQCouYXBwcy4yOTRkOGU2Ni0xNGQ2LTQwMjQtYmZmZS1m NmI2OGJlZGZhMWUucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAIZNbBJgVjMYMWxowme+LwWqcvNyZXPrkDcqKbKpvKwxN+ekViJydkYE9sPq SpUsxy0DITdDx1QJVdJ/qYqDwvBi6tU1ndwqFIcVi5FPv/wdz+MXgxFl8FXmgbuc z0TYWXyuLf8ss1l16E4WYmf+xK/8WXeEJLdjjR/2Ku5TuKmVcZ8y7qBaUrYL6aMn o9UmbGF06ekBBVKF91y8rrIYn/ykP0ujFxSz/4UsZHT8xWe0SLesv+WrfYLpPcyB 8XRqugL+MUmscqEkpk3oLWJ8DJ63ldSimuJ9JD86JH0S7Pbayy9AUF50ITsC/QdR BjPZJRlKpJfU0bU07YnVvb+BS2U= -----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-09T22:49:01Z" 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-09T22:49:40Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "3080" uid: fc0a1fcd-6701-402a-8e49-ae7caa6e0dd2 - 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-09T22:49:05Z" 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":"11d18993-d612-4502-9882-1e7097ea72ea"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-09T22:49:05Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 11d18993-d612-4502-9882-1e7097ea72ea resourceVersion: "2321" uid: d01d2ce9-9f53-4705-9a12-2bea9996aa61 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIEsBOjx1BpQMwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4MzYzNzcxNzAe Fw0yNjA3MDkyMjU1MTZaFw0yODA5MDYyMjU1MTdaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODM2Mzc3MTcwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVdMtrt6VlZ5MMu38lhcWG+JXrMwJL7mAC pRIVorTtkKAI2ynF2ETCbBZICV1P12K3luYqi4y+3lC+RBVvOTvyd667mX8Se5aw WZJQlaFjnafjXcJBJkl4QMohZsMt77SFl4A1wzurL55Y3Vgf8BBvYM/sCfRNKzOI upxEKbe1fDj7RX1J8x3KmiONwaKsM8UIQi1g+X1qzZLsU5HEj6LkpjKefO5kMiPg p1K3cNu4Auqioxmb0N5noHslBsS/YlvVU62ijq7m0uk8BIQRr8AQZxZ/bt5rKTgw 712Y19Co11sLC1Lw0+t8e4bHtd+MzNH1OijgeYNVJ6ZmW+F5mTExAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTDgKNp 4M22XMcj0Agmx4uwJZyIsDAfBgNVHSMEGDAWgBTDgKNp4M22XMcj0Agmx4uwJZyI sDANBgkqhkiG9w0BAQsFAAOCAQEAyj9DwdOdQoBb5N3NN6xonjPR3vPuUZHHv387 UypRbaWC42OOcZuuLzWbkRZDyFdXsWf9/KvFD+x/nIArd6LHndxVkU3Syl+MZMPP 9eSRxgoyPjSqjnWDuvK4J0R4hdaIfT4WilcLgKYQmDuTs0YdIztZfl1vPwBNgAPO Bkh/3TOEgXE+jhjcjvEFV/tBO0C2FOyqh1Pq0igxltu1yUAKefW2qDy5gZqkDRST pQ4wzmgAEsQlDvcu86rHm84lxG3Lc0Ex0ljW0wajAdSa77iVIx81leaflOMIDXCl +N50utaIAKs6evuvdm2UROkgKIxdoA0NEnyBSfw5YOjNw/QOCw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-09T22:49:01Z" 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-09T22:49:01Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-09T22:55:32Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8125" uid: 3c10ef80-d2c4-47a8-9b7f-af2bbc5a8473 - 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-09T22:49:04Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"11d18993-d612-4502-9882-1e7097ea72ea"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-09T22:49:04Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 11d18993-d612-4502-9882-1e7097ea72ea resourceVersion: "2316" uid: 0ef78b5e-a8d9-45c8-8bd1-09d0668e8952 kind: ConfigMapList metadata: resourceVersion: "11403"