--- 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.27 creationTimestamp: "2026-07-31T09:25:42Z" 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":"ff8f39f7-90c6-450f-ae0e-c4af4403b270"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:25:42Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: ff8f39f7-90c6-450f-ae0e-c4af4403b270 resourceVersion: "2587" uid: 6274db0b-c5e7-4857-a278-d65944e498c5 - 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.27 creationTimestamp: "2026-07-31T09:25:42Z" 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-31T09:25:42Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2580" uid: 1d7775a7-4950-4526-8ee1-d3909aab05a4 - 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.27 creationTimestamp: "2026-07-31T09:25:42Z" 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":"ff8f39f7-90c6-450f-ae0e-c4af4403b270"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:25:42Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: ff8f39f7-90c6-450f-ae0e-c4af4403b270 resourceVersion: "2579" uid: fc76f867-4ce2-409a-82c8-f1b50047a218 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIYgr+6nsyv58wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMTA5MjIzN1oX DTM2MDcyODA5MjIzN1owJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn7DpodGxA5mb x6PRiujL5ab/Tf4Z9FlrMCN1eCt3YT3SDP6olMPO7zbIYSQVz6aD+pvhcUGliI3h VF4MDt7RKwe6OMNyphrN3B7hhXn+A+meIKTfSRC3BjG5jWCR3/qPVUoXwjipxP6g U85HokBHjtkFtEitCL48OsBRmOWLRgVv/RU0Ja49v04kwxwObOYQzN1Sde6aA7Cn 3W1Vf2MrYeTyLnzcy01x0MWXef6hleGzcjHqXn9vOn81m8Nz3NawdjippL3MzJNx +T/b/jRko9WUfOcJGfFpk4+oIUZzMgOYVxW6LyAylUjM9Xt6OzqKK/cqTH5oPwhU Duc8UVbmeQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRA1G2Y2pM+52rZiA9zFedaPUHheqHU+7AxPQoQ9iLtG1mc8DAX mtdBIFQhfs3+nzzPkGyPSjRHjuYxybn/Gnfd3zANBgkqhkiG9w0BAQsFAAOCAQEA JCF8wua7gbYp0B2Y2Vn5YNao1QHgzcF7qufE3/zw+pjqqAgBD98rNhOc32rXtRRR eS4VTbg6ijE7GuVgLDXseWZ/LClYvKLRLmrrtfb6HXm4m/GzNtCvqLTkw1KfcShP HM9LJldmR5B58wH21q5vc7UZJ9l8yAUXSiflkCdMN0tKiSc9oJoc1cZ8R+cmHXHp V42BIcJcNtE50ETUby2gkz65KBBDnb4WGnEuvfwUHYygSU4KSoLuMgPPCrJwckSj IzL10RbAkCmZPe1ABydKYEMC9RSbmdqG/yk98C/zWTvbMI0L25J/Ro/fMkmPPeV7 /AHgSEet1H68hlAYkWtv0Q== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIK67YRphcgEgwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDczMTA5MjMxN1oX DTI3MDczMTA5MjMxN1owMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANaqOc/4GsCAKhHAvWiUnb1pnvQ2gWuua2cmDNgGTcFx8B83ZcxoJxgcvBEIAhuY kMcQFgoRxM/lH7HUEtJARPmw5Nlz2EP8auDm6NDwnIzYc/2+AXDXNGsaLXY/TmNw am1CgVl/l0Jn0Q8yV0iqZp8G4VlW7dVyAyRNknWJ7qW9DoTIUHIQBSV1NalGw/na LLHMUNc7Mtn5zCYBfVmvNHpJzt0rZHXEZdrUYp3H3HSTqlA6iyY3gu7Sa9w/KcMS n3wmqqPatflEC9OorX/24fxRmUHvZKFzAvatSZyRf9yHvIp531eWUVdJnz7RpUyF WbVznPxKAgAmDbFUimK7428CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRA/ZjdEu3dYjMnI1LilP2cCWGWB13v6zrR2sjlxEOF6MV90H2stM33JLqg qIg/pwyPm1oQI6mfDTBZnHUQdLh6ojBLBgNVHSMERDBCgEDUbZjakz7natmID3MV 51o9QeF6odT7sDE9ChD2Iu0bWZzwMBea10EgVCF+zf6fPM+QbI9KNEeO5jHJuf8a d93fMEsGA1UdEQREMEKCQCouYXBwcy5kNDA4NjM2Yi0zYTU3LTQwMWYtOTY5Zi1i ZDVhMGQyZmJlOTIucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBADsQ9gyEuU/5bmiaOL3ghQyXoaxND2XqTOKKxSyvnfT2u+SyLEvzJ2eBhg+h MlVyPD/4M2xMbYumU1FmGqEsObUdbEGuwvIC7Lv9NN4XXpjFImifxeBwAE1CEqhD vfsB1nVPKu/XNlyivRfVnqMYx7w3PeEMFZWF3meX7TO56si7Jo7Seu3PYWhgMGCe oA3LSBxZS6muY9DnXkrAnoUWwbvcZzNJGBJIejkBh57NqD+J0UnS1m+VW0IZG/7A UjHFbhH9bsaVzx4mGPKiWrjjLWRXMGiXGDdOM+N2vvJbonrajRtL0YLAs/MC6l21 qJ+NQCu4/QSnP3Ih73wkp1gZbdE= -----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-31T09:25:58Z" 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-31T09:25:58Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4004" uid: 60ef1c5e-41c8-48d0-9177-b8678878f7d5 - 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-31T09:25:43Z" 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":"ff8f39f7-90c6-450f-ae0e-c4af4403b270"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:25:43Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: ff8f39f7-90c6-450f-ae0e-c4af4403b270 resourceVersion: "2598" uid: 67a3e846-650a-4315-a0dc-0b5a73fa242e - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIQ4lyPQqWsa8wDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTQ5MDI5MjAe Fw0yNjA3MzEwOTMxMzJaFw0yODA5MjgwOTMxMzNaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODU0OTAyOTIwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfs9wEy68XkaERw5cm/dm0y2wprtUEm+7K j0nto4FxNkJVWraNsZlr7U1Z7SNvoC58cT2PUj4V319P9jJqWjWHL4b12yEsFzcn UpGC0ywWIyrgc+Tl8pVtSHGAEhQjmGH1n4aDiS9pSu+wtuoX9j4+8F6nB63/nW0Z q8X2UeYXBd920rU1gxWvcsOOEb1TopuCdwKlGm4/w6hkSvrTjgOKxtHQ8VgpvNDx PtHjsX6J9a6szEbsjI1vBXxR7j3QJm3mmBKxjoNRJKRDq8QIBBKA/0JFHpkda55c Qn6h7RPIgsEQS6Rq1r/YmsQl0xI0Oe3NPg7mA4XjUXSSLkO94sTJAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvzr7P TNFNYHZHLlYIxP4MHks+XjAfBgNVHSMEGDAWgBTvzr7PTNFNYHZHLlYIxP4MHks+ XjANBgkqhkiG9w0BAQsFAAOCAQEAq9mA/nyjNVe06fzKSe+/oGi3ISTt8JoyKZGP O7RpGuBKt8h/iGrmWRwRpze0zJnQnFYC583DDtXSO9TXjViFrIauXTmAOtGrCg/Q vBwt7/X+xL4ur4hkJAwaw5Z2qHDOAaLGeTSu62DH0I4cVLAsMAj0su+5WXtsgoqS yFdLBfCLoPgmEVeT2uW8UgrKrCHjTHDgpxyhOE65BpZjFdDG/WXg3ZegxTOBjokq 838AMFdxrT36Yb+EYamKnlp9tuNOXkfqU3ZTH18bc0mudgs79KgThZiYzKsGdM30 MUqL4xWsWI3IBOUrXruzvZhMf0FkyXdMOHG/FX4731eVmKh4Eg== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-31T09:25:58Z" 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-31T09:25:58Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-31T09:31:46Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8082" uid: abf557ab-4921-439c-9c0e-95be04848ca3 - 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-31T09:25:43Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"ff8f39f7-90c6-450f-ae0e-c4af4403b270"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-31T09:25:43Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: ff8f39f7-90c6-450f-ae0e-c4af4403b270 resourceVersion: "2593" uid: 0fc97eef-d89c-43dc-a37a-2bdaa5b6dd20 kind: ConfigMapList metadata: resourceVersion: "14209"