--- 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-28T14:46:52Z" 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":"9ad25e10-2f16-42cb-8cb6-73ddc7480d43"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:46:52Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9ad25e10-2f16-42cb-8cb6-73ddc7480d43 resourceVersion: "2907" uid: 6c74c8cf-62a7-40c9-b704-fcd26e3e5664 - 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-28T14:46:52Z" 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-28T14:46:52Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2847" uid: 7133254a-ba28-4284-9d11-fb51a1c24a3c - 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-28T14:46:52Z" 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":"9ad25e10-2f16-42cb-8cb6-73ddc7480d43"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:46:52Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9ad25e10-2f16-42cb-8cb6-73ddc7480d43 resourceVersion: "2829" uid: f8f2fccd-729c-4c9b-834d-497105caa769 - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIIRFCC5GoX9wwwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODE0NDQzMVoX DTM2MDcyNTE0NDQzMVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy1qllXYHS7Rg 4JtJR8PQnewG5jX2I7NO8gZ8I1MLXGmdtaDZdIcCmlalvuQkOcS8gSFj8WuM6HRz 48OW+RizwFfFT+peaaY+LBOatlFnpiKuZflyVefD65DfuxHSrPwzpR+TXksH4eR3 6QHoq46+Hv7ogFMsPNm555HJiHhz4+i5L1zzwE66kK2MKsz8zkufA/am0N+CsyNn HGD64MkYeueT75C/S4sr82vtAPW8dBsQgW5hpAUanMMV9sAdvfY50EoyVoC1y2d0 tA7Xh22uFxdU9dz3jKKEY/iSyPZS6jTA6h+bu9c+thHtJ9QNS3CsnKqWUa62LHUT m5ZVmsZztwIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAqVok6gFLSLgTRX0SEyFUL40SJ8Ns9QI1BpdSD7VoxlAguW7x ZKlWVCn1L3KkBk1frjrLsKHLIMgDuFEaTDy1cjANBgkqhkiG9w0BAQsFAAOCAQEA ZUZe9qyzYRR3qUMpWkKOSzU/852VxVG9OHlNHHGFMc3Fpm9yTKxA6lm3yPxS184K /hSFx6JRc7uzK0baq9hOVdAcBld75r7MJkD7Y+zEptjl28RkD7xFhG56Kg8z0hEd 7BL3xmzVdu6CB5c2NoFgury9C9sTD/pykDOJu9ypuBDFhl+Iwoqe0OWOUlrC0IIa JkAGwRysZaouuQ6Ldn5boCQ46EyZ8uQK72z/M8OkFwwxnozaR1zCCDIXHef2pzzl HH4m8nWM9dTDmelna7YteAzU2I2FMhTdn+qCO48ABMz+++Qi4N6c6A25fEpuHM7A kwxeBoN9C0SWJ/3u/IegBA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIILnVZDXy9qkkwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODE0NDQ1OVoX DTI3MDcyODE0NDQ1OVowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AJ3sdYeq2q2mObSIxR+HGopFlR1FNlRRayUVw63/QaqCQfGwBl7w8L8rXhXtQcqm 94u99QZvNg3GcreOHHnTno18Mc7efCZlUpyQjUiaGNgZPDVhNVMtXMFGfVSZEgC1 QWrkvp5D1vI4kIIb+WTTjmGzufPMlyFQlENVHhsex+2+HcmRWQLYIm9h1xUfBDdb jb0Jm/AY60gDzWPiSY90YYzz6H5MFxAN9V/7o6dcfsLPFzC+hSgQTce1zw/jEYdj O2cDekt73wQzo8ypd1UdTMbSkU8bgEcT44KUj3f6GWR+bBpO952ayxCiUeu8Ezcq XlcCk23s45qJljfayE0JMG8CAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRAUuTS+kLk376opG1NlW28rNC6VLQxkMOlm4jkm0AiwPUpECFBM8/fwv9Z GcVeO3NJH0PTZlj+b2avOno0ViAqyzBLBgNVHSMERDBCgECpWiTqAUtIuBNFfRIT IVQvjRInw2z1AjUGl1IPtWjGUCC5bvFkqVZUKfUvcqQGTV+uOsuwocsgyAO4URpM PLVyMEsGA1UdEQREMEKCQCouYXBwcy44OWQ0ZWU0NS04OTEyLTRiMGMtOTVjNS1l YTY0OTMxYjY2ZDAucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBABA5b1ShKR0aA6GpQ7SfwAppz+ypsCxofUvGwOQbNVcHI1Ih/gUkjpgim8ku KZhzxAxcbLRH2IUkKJ7gc4Gd1b0z3oAUKcrsphlLJB3N3ndlxhiZV2HnxllBC0gT vDkjyvdTya3mr4vqF6GmDGniDJuwpQPkJdoWBJe2kJNFQSdEaZoFsVnNqa4QwQcC 2QZo5YD0qi+vPhnKuvH7B8J1fslXMyPQi93q0KLcLndPDvzd05/hOAo0lAlK39HO bWVOgLoPXRgGKnU5SR7O6esnK56HMTab3vnSTVuUgPx4E8FsBXZo/DBIwuOjgGHz DnMTXFdxizo9O882ZAQm1XMg63E= -----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-28T14:46:49Z" 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-28T14:47:39Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4523" uid: fa544d1e-05dc-4305-ae63-a5e60a046a12 - 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-28T14:46:53Z" 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":"9ad25e10-2f16-42cb-8cb6-73ddc7480d43"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:46:53Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9ad25e10-2f16-42cb-8cb6-73ddc7480d43 resourceVersion: "2965" uid: 28864129-240c-408b-b9ea-e41fd2f3ed54 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIJlXQx66/URUwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTI1MDQxODAe Fw0yNjA3MjgxNDUzMzhaFw0yODA5MjUxNDUzMzlaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyNTA0MTgwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa/2vsXDWU1495lfK41F5rjYkvstYFzp5B ldqd/fmItkq16Rb6HXAzZ7pk8/akE515YttVIJ+rO6/BLWBpoUvFh1h2/FryBj7V wYvPh+Np4l/BFkSEh8yGKuk65BZYrL3Q5zdFPuJJK3LgW0ciSSnORR9r8dkxpd+l aypJyIYzCptdaM2O40ou2oQLlYrTXIhNnpwKKN3kDHmO6hmy2GCLeTY81RunQfMb zONG8nLsmMoiw68MnMKeUp1kxO7kIllIGF3zKA/94k/AexgzP4zQJn1dBoVDXUP4 ZBMGxIi4ISc2/CLt7EQjwnN8dFdMJIULPBVGmC4q5Uu17foCXtg/AgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRfa1SD x/OrsiFtaCMb2pARjfADtDAfBgNVHSMEGDAWgBRfa1SDx/OrsiFtaCMb2pARjfAD tDANBgkqhkiG9w0BAQsFAAOCAQEAOCVe9KWcppQn5x7Apos6YwIAVegcXtZqZCTX nfm5dZkonOXyEFSwvLPCwbwO5pG4qpJ0zHKTEHyXIli0sQXM3iyThG8/XOc5AAfN ZfPzYEzabwNP2L9ylu9RiqTMnSKD25ahMh2K/bMK+WmetCxvYf3xBgR5lB1mq2/J 5u4bcQdiWE1SYQR3HRYfEEvrLPlAqZauq7Vq6vYaUnkSa1AOuTkJp7BzcUGS1YZc Lwf/94rQfuFQUasiI4W53L+CedzyqPUe06Ws3Nvhe2y27gkXBMOgiz6/lYtNOH/g A9nyNH9DMMvwKKEMm6/DPzwL253a09n0ACVkNTshZTc8qOOGNA== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-28T14:46:49Z" 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-28T14:46:49Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-28T14:53:51Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8410" uid: b78192e7-e958-4d38-863f-ec47298562d4 - 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-28T14:46:53Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"9ad25e10-2f16-42cb-8cb6-73ddc7480d43"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:46:53Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 9ad25e10-2f16-42cb-8cb6-73ddc7480d43 resourceVersion: "2940" uid: f1a54112-0e2c-4d19-819d-8e649ccdec84 kind: ConfigMapList metadata: resourceVersion: "14953"