--- 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-05T07:40:18Z" 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":"fd5d08d5-0ede-4685-9e2d-689ab58ce60a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-05T07:40:18Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: fd5d08d5-0ede-4685-9e2d-689ab58ce60a resourceVersion: "2260" uid: f9efa904-61b8-4fc8-ba0f-a8754aaeacdf - 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-05T07:40:18Z" 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-05T07:40:18Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2258" uid: f802941e-acef-44cf-b1e5-ce7278de97c5 - 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-05T07:40:18Z" 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":"fd5d08d5-0ede-4685-9e2d-689ab58ce60a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-05T07:40:18Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: fd5d08d5-0ede-4685-9e2d-689ab58ce60a resourceVersion: "2257" uid: fce9cd46-912b-4063-92f5-ca74e6727b68 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIaaEmR+1eVHowDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwNTA3MzgwOVoX DTM2MDcwMjA3MzgwOVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2R9Yg3rVB29e On6tFZIhsxmAyyATUx3IVaj9NjaHrzQ1j8pncwZ+pMOT5rkzxUUH6c65vIS7GwSK p8/pjOOYTA5SyFfeWxIpKwZavcPc4L0QInuh4AzdHoG1UUKd2uMl2nfvPXi0/YxK KK7AgonwZfHWx5peA8bn3wUl3agXcCfqelkgh9UzAlH9l14hs3To8QQS87S/ORdb de4cAPlMQuZFZ+0MIJHhKTZqWjnEsJkCN5arPlF8Yz9iyEWJdregIYNpnAMEmKoL wJricmBQK0EpUJo2R00MWxvViLI4YdfsotL3J7/Z2xqhfG/iZFgg0AmRL0wNaY4L ragJHAUzfQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRA53lCGjtEwBXGYDZM4bTULUAv0m5zjSwjB6sorOTFZ0s1q56I J6p5or1D9h9et6XEP3KJoZFuEbfkHA965T3GyzANBgkqhkiG9w0BAQsFAAOCAQEA 0Ce8dnBTcosWSSXGlsQ5XECDcD0zJI+nwXKr0m+wa6iD8Bp+sdGhpBKdkFlu3AOy 3ePA+YNXmVncyDYVclSM+NYvfo5VvJnHsRdfUXanwSS/oDgzZ8CkotSlPmKuZHgl y/9bceELNAqHBkl81XRa/FV+FpX8Z3f40D3rwbM/+RH71FhAV+MQVxajDReAHDeJ blLK+FZZjrV+Ndk65mfGgTB6CbUsR6sXqZVFnFLcyAEYdPxeO+uLrfM2lvhw/4R6 W9WX60X5uEZoA4zKpjChBtEd6BYaWsxuZeHsDxnErsPp4+D451XpTx3xE6OQsEve HZiuDYoM34OuRXUV3JNOcw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIa/00t3PdbjowDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcwNTA3MzgzOFoX DTI3MDcwNTA3MzgzOFowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AO7OUuucbph8cZlFia5I90DzkPbsKNtY7cjjndFcfxZDa1HLoGysoRyRMFWIw4yb M//OE0OjpjEh+3j+yx/rcysMjNaEK5Hb5R+9ERQSrEixdzaEXvLoo5YKnd8AdZzQ hcHUgLZN9L/EILpgDGpPMKx9cgDgkJpLj9vIrNkndpDHouQ1zzuR6VRiJ/U8McQs xwtyD8A9gISKamE4kZkTwsdb+uiZ4wXlcRIUW0Xdyn9ubIoxmqPJjaNfR9IYpHdg YlJFs7q280ijjTjm5pCzlImadkLeGI2kGpT4PhexdGpcWTh1jASfGtsookNHflHH QQNhriwKLgslkTGETZWdmOcCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAXB7OX+jV7w11AFRSJEuk+cE8F3TFShSv3lTrPzHoemtq1yPfGLrCOOJa l9FUC4K5L+TiLZTgh8gClc8hYI9a/jBLBgNVHSMERDBCgEDneUIaO0TAFcZgNkzh tNQtQC/SbnONLCMHqyis5MVnSzWrnognqnmivUP2H163pcQ/comhkW4Rt+QcD3rl PcbLMEsGA1UdEQREMEKCQCouYXBwcy5iNDZlZGQ1Yi1hZWZjLTQ0NTUtYjM3Ny00 MGUxNjRkMGM0ZDMucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAJn+J727cbmzcoYQca+xCQ2P5uwt4FqaP6+ITSY2Xey20yWNG9toYtRQR/QC BHr//e9CDyTSDb5ln0LcdVopR/3aKNAZcSlXMuqCKhXX69nEsHKE8lytXwufb5O+ 06XfSy6dbeByXeceD/tpkbYvYoqJa0YzcJ59N8zGMLYEVNQZBu4PElRN9g5Q0sMN XY0IZNm0Y3NnWrwBg88/A9zpvRoXaSBrrZQaZ/naZg3k80/iqjvOJqeWNVDFWW1p 9d21qbc2ygwToO597j728Xdfg9y0QGgf+jtGHixakVj232t6GiwrYK6oH3xUkzAK qn1XU4gbh82jrURRP2IKhumSG3g= -----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-05T07:40:29Z" 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-05T07:40:29Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "2528" uid: 213b06ad-fe8b-4d7e-bc1e-a0dbb34aa59d - 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-05T07:40:19Z" 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":"fd5d08d5-0ede-4685-9e2d-689ab58ce60a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-05T07:40:19Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: fd5d08d5-0ede-4685-9e2d-689ab58ce60a resourceVersion: "2263" uid: 85b84651-6aed-4157-b593-44e581390c32 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIGbGQzY4EW2wwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4MzIzNzgzNTAe Fw0yNjA3MDUwNzUwMzVaFw0yODA5MDIwNzUwMzZaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODMyMzc4MzUwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCw/f0ya4vEFbl0f2OyM4cfz1Y3kGoWaJ+t LS911OdB2d2waeAcqtStD/lhpNt3xAZ67UDe37m5Yl7B6eHjfjdJdg7yI3EpnQxT DzL6bwoIzvi8lnY0NrfnuWu0OSwTQaP9NU69c6StGfhM1sYYcqHfNlv8gBXZsl3l c9iOVGwW9Dli3D0IWN+BtpJSeyE4qfbDurh6ofagz10B+89dBH8AgymvbTI/gUm3 zvoU7PDReUz5RyDszcPLzXyI711dNVUovp7pJGM83rNUbcn2JS+zE/C2utPLbkjC AZpk7vxGsCeZD60SjEbVr1tEe21e9DoKVMz1WhlpksD4UgVh6BKRAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSeWzQY Rgmnb174mjvIopS3iKVWXDAfBgNVHSMEGDAWgBSeWzQYRgmnb174mjvIopS3iKVW XDANBgkqhkiG9w0BAQsFAAOCAQEAMhdUCXTuUrYA2MVozCDKee9pYe+k7bzSxfPx Ur+cTFO15Cm5mC22cQcYRguNJrf0GvvAVPo2pk1+rVWfW7ampo64T8U04YBRbPs6 sHTFhuXWR4nwieTiNqIyWTr2xqphoQN/FP60qbMaI0iH0aQ9q1sUmkS+DCPv1yPY oVY11gmWT0aF3lM2awd0JCW8OGbT/n7aVCpnMPsng1ukj8VVY1ndrAelowc8BkC5 lHOb83xwO54bJI+VhYUp5ed5hfY1oliR8SfV6481H3N+w5DZ1id2F9xTYHd0vcv9 /2qkpTDD/FWLZsJyKp3jhTarZSybjoQ70XuprYdzRKyDeP7eUQ== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-05T07:40:29Z" 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-05T07:40:29Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-05T07:50:48Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "9231" uid: 54b15d6d-e477-4356-a190-2dbc2586934a - 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-05T07:40:19Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"fd5d08d5-0ede-4685-9e2d-689ab58ce60a"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-05T07:40:19Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: fd5d08d5-0ede-4685-9e2d-689ab58ce60a resourceVersion: "2262" uid: 9fb6f913-02d6-4657-ba9a-e38009635401 kind: ConfigMapList metadata: resourceVersion: "12700"