--- 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:49:51Z" 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":"f938ae41-cb36-4483-bf6e-631ecdf41524"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:49:51Z" name: cni-copy-resources namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: f938ae41-cb36-4483-bf6e-631ecdf41524 resourceVersion: "2362" uid: 4ce7efef-01ff-4d05-adb1-efde7fe4530a - 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:49:51Z" 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:49:51Z" name: cni-sysctl-allowlist namespace: openshift-multus resourceVersion: "2354" uid: e5209aab-9772-41e1-80a1-0944f6daa8a3 - 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:49:51Z" 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":"f938ae41-cb36-4483-bf6e-631ecdf41524"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:49:51Z" name: default-cni-sysctl-allowlist namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: f938ae41-cb36-4483-bf6e-631ecdf41524 resourceVersion: "2353" uid: ab863f5f-9439-4bed-b374-4fa6eca00d3a - apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIISg6JWA644HswDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODE0NDcxNVoX DTM2MDcyNTE0NDcxNVowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy b290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq+MZfvGDXWi/ uxyYJO2+A+GOO23biNM/TmDztWQZMsKpiLJeGxUHKZ7SFfvKrRKgET6+89RRP2Bc L+49o4w5D1PF+IaLpIDUu9MHCkdYHmPMN1tGBZ+yw6B9AfVbkR99xc9hXmCnCqwn ey2R0umH76WzYW0Ug+LRfr+1lZMs9SDpAki4uTav7dHD/12fqQ7aeRNqnysaoDng a68GGCzGjfGU6Q58pqteNApBZ0eIhLtSpt+q9BL6cB04C66hMzrOtDIpsdjM9pMW U8OSe0+6Ut9A/K3H6vHRDHV+ElsS25toRc+vYYLVY/J/NqbR6EMAtU8qhPxJIbhW cn4wT6W7NQIDAQABo24wbDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB /zBJBgNVHQ4EQgRAATqTJFPlTiajwdoeNucDPBOYlJ0Iyq6qbytedOnTyx0ykLzS H8z88RWOflESOAAUFCLpGMnKRWsXz0mc5UsiPTANBgkqhkiG9w0BAQsFAAOCAQEA RH3g+C77uOdaI19tvfTUtxNb2Xbjoahhw9NwcWVyvfg1lMsrhDSK595SN2T4WUz8 FTz2PxvMhMUm3Ua91+YKPeLOZJ676pgB87gGIApRWOUY6fq5ZXvHTXTgeFZuZG4J XvrUrX53ON/vNQV1ARuQQwVdJzqhwngg8GK6wHPlgBsUekIgpajj3oZkxTKHIEwO ryDUBx9ND4D5k8nUazIdKHTwIxfOA6Y1bGo4U3wON/8nmXvv0uCPNSamhMdcVD0p lv6WkbDncb7xTozWcy1S1pPmbIPlR7fVF0LFIuI3FsKtuf/odF7xALYLY/aDBy6V c+XvSDRGVYPRXiUNWNYknw== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIIMWN3VGrfoLYwDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE CxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTI2MDcyODE0NDc1NloX DTI3MDcyODE0NDc1NlowMDESMBAGA1UEChMJb3BlbnNoaWZ0MRowGAYDVQQDExFv cGVuc2hpZnQtaW5ncmVzczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AMp6To7kJvZQL+8n1mu9qsBcGO1f8dJJe/Dwpc3j61B3LPf8cLqyDJf98mrLVVCz jKEYJi44mTwr1Dw/PZrVfqAAPlMOECAToEGtYGKGyEkfsgp0rdn1mm/kDEMwro/T h29tH4O1M30izkQzlUS0r7TAqC64+OEek4RlTHtsM38PdWAJe02WwWpB1p7zibXT g6+en260a5+8ghudw3UxlnoWCJ8DME1RqKlr4wsNmARJ/eyjKwS3QXWUNOXlGcmy sxfK6MpVLdoV58lnTneNQjaPRs+aRQNJxeETDknlUJvDZKGNGVqnFLYm1Irl4RTZ oHmy3c5uIHS1H/cGY+TOoTcCAwEAAaOCASYwggEiMA4GA1UdDwEB/wQEAwIFoDAd BgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADBJBgNV HQ4EQgRACBct6Z2gfTgFH5mpuHr30pUam7dVlrzdEM2qwgSj67MIXOp282CGcp/6 bm0bM7z37GROERzXZSaIlIE149LKgzBLBgNVHSMERDBCgEABOpMkU+VOJqPB2h42 5wM8E5iUnQjKrqpvK1506dPLHTKQvNIfzPzxFY5+URI4ABQUIukYycpFaxfPSZzl SyI9MEsGA1UdEQREMEKCQCouYXBwcy4yYmQ4NjUyMS1kZDVhLTQ0MjctODVkOS0x ZTMwMmY4Njg4NTAucHJvZC5rb25mbHV4ZWFhcy5jb20wDQYJKoZIhvcNAQELBQAD ggEBAI1Y9iI2SBsfSMq0bYyxS4Q91GxcEr/GAf3VWoGS14YXApoQib+6B1bsDKGS 0FJ4zCO0thTl+oNmvdcbcsfnB/wAng/EEotAS61vzJtxaM//xuRIyuUZ1/yTu8AK Szwv6ylu2Zl8Q/1/lQPdl++8tenM4c7iN74xkJrpwxbMqyULHqT3pt8nmp/1jAKa bGZ5yDkpoJUp3YHpx3oD3owEucFoB91MEdGAbop3cNroI6us7aA6MxEAvzejF7u6 R5PFmUW9xtLAxEtCxn+N3cNMNyfuKWNF9UATb8/GSXKnq2fKmpjjww8t2XbX7Qm7 ffib5ywGujVWurZ8n2dKxEYRLh0= -----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:49:48Z" 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:50:53Z" name: kube-root-ca.crt namespace: openshift-multus resourceVersion: "4470" uid: c7a93c6c-fc15-4c17-a522-23494b1bdacd - 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:49:51Z" 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":"f938ae41-cb36-4483-bf6e-631ecdf41524"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:49:51Z" name: multus-daemon-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: f938ae41-cb36-4483-bf6e-631ecdf41524 resourceVersion: "2407" uid: ea29b121-6a69-4307-a1fb-f5dc6dfb0485 - apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- MIIDUTCCAjmgAwIBAgIIHXjAFMhMkZEwDQYJKoZIhvcNAQELBQAwNjE0MDIGA1UE Awwrb3BlbnNoaWZ0LXNlcnZpY2Utc2VydmluZy1zaWduZXJAMTc4NTI1MDU4NzAe Fw0yNjA3MjgxNDU2MjdaFw0yODA5MjUxNDU2MjhaMDYxNDAyBgNVBAMMK29wZW5z aGlmdC1zZXJ2aWNlLXNlcnZpbmctc2lnbmVyQDE3ODUyNTA1ODcwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8/PF82IS1R6nuvlbL+eT3IP8xoHNL0Yw6 0y39YPEJze9gkm9Chu4TVW8RTGibcfhxN5oio/cUc6HjXieik3W8Veql8ZigIXG9 6Cwizg8TH2pyZ8rDD6YGiUnVc949o4EY1MKam+GrKGsDkWI9ODfmBDDkRgtDCf9Q OhrQfz8VHYZ3Nxz3ggx6ai3AgX3XDUD65aYF0x3xL43vSEuFLZ5oTfN00hMuSx6/ yNLIqobqW2Zeq2MalZ9/0KFAvQ1alk77PtfCvh3LLIC5cx163AFSCYxZwzmp2Rzf Vnb1EOSbwcCxz/yI8vhw4VnaN5Oj+KCVZDZMBxOoo4K+td7Dyd9LAgMBAAGjYzBh MA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBT7lzwW uK6hoWXO39s561gwv7yn3DAfBgNVHSMEGDAWgBT7lzwWuK6hoWXO39s561gwv7yn 3DANBgkqhkiG9w0BAQsFAAOCAQEAQ0QPX4+oHYYB3UDnstE8YxC0PiaF3vKYFG7p LCD0bzMZP0JppGEctRcWx4k3QsCXOrNsaXnpIA2DjYMUStlI1UjKDubD1PovvyQE 4UhwF7YFjQlJaTMdiJaxi/GZrar7oO2woiOC6vXiRc6qF4Gr6gqncTGbtK9MX22U WKG5cd4tDY0sjasfwHMkZUH4vED1vB6GrAIw9ShSrCn1FOXFpWi9sBfNwk188Fwa k6fBha+9OeqrgTIAp5Y8RCLkiQ4zPTnojiDoqHbNlBTml+SCxhqn1fgriqbkFwnM PbNkUZ00WTlZueUbuFMAG3eO+yfHKRWtoyZe/4vdRc8oEL4qdw== -----END CERTIFICATE----- kind: ConfigMap metadata: annotations: service.beta.openshift.io/inject-cabundle: "true" creationTimestamp: "2026-07-28T14:49:48Z" 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:49:48Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:service-ca.crt: {} manager: service-ca-operator operation: Update time: "2026-07-28T14:56:42Z" name: openshift-service-ca.crt namespace: openshift-multus resourceVersion: "8271" uid: 9ec2d3f2-3a84-4a52-9a6b-dc33fa75febf - 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:49:51Z" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:data: f:whereabouts.conf: {} f:metadata: f:ownerReferences: k:{"uid":"f938ae41-cb36-4483-bf6e-631ecdf41524"}: {} manager: cluster-network-operator/operconfig operation: Apply time: "2026-07-28T14:49:51Z" name: whereabouts-flatfile-config namespace: openshift-multus ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: f938ae41-cb36-4483-bf6e-631ecdf41524 resourceVersion: "2367" uid: 1bc60d6e-9b60-4e30-844a-047bb0a34d2c kind: ConfigMapList metadata: resourceVersion: "13891"