NetworkAttachmentDefinition
La NetworkAttachmentDefinition (NAD) è la CRD k8s.cni.cncf.io/v1 che descrive una rete secondaria. È namespaced: vive in un namespace e di norma i pod dello stesso namespace la usano.
NAD macvlan + whereabouts
Sezione intitolata “NAD macvlan + whereabouts”Esempio: interfaccia secondaria su una NIC fisica (ens192), con IPAM gestito da Whereabouts (IPAM cluster-wide, evita conflitti).
cat <<'EOF' | oc apply -f -apiVersion: k8s.cni.cncf.io/v1kind: NetworkAttachmentDefinitionmetadata: name: macvlan-storage namespace: tenant-xspec: config: | { "cniVersion": "0.3.1", "type": "macvlan", "master": "ens192", "mode": "bridge", "ipam": { "type": "whereabouts", "range": "192.168.50.0/24", "gateway": "192.168.50.1" } }EOFRichiederla da un pod
Sezione intitolata “Richiederla da un pod”Il pod chiede l’attach con l’annotation k8s.v1.cni.cncf.io/networks:
cat <<'EOF' | oc apply -f -apiVersion: v1kind: Podmetadata: name: app-multi-nic namespace: tenant-x annotations: k8s.v1.cni.cncf.io/networks: macvlan-storagespec: containers: - name: app image: registry.access.redhat.com/ubi9/ubi-minimal command: ["sleep", "infinity"]EOFVerifica le interfacce nel pod:
oc -n tenant-x exec app-multi-nic -- ip -br addr# eth0 -> pod network (default, OVN-K)# net1 -> 192.168.50.x (macvlan, rete secondaria)Sintassi estesa (NAD da un altro namespace, IP statico)
Sezione intitolata “Sintassi estesa (NAD da un altro namespace, IP statico)”metadata: annotations: k8s.v1.cni.cncf.io/networks: | [ { "name": "macvlan-storage", "namespace": "shared-net", "ips": ["192.168.50.42/24"] } ]Via Cluster Network Operator (alternativa dichiarativa)
Sezione intitolata “Via Cluster Network Operator (alternativa dichiarativa)”Puoi anche definire reti aggiuntive nel CNO, che genera la NAD per te:
apiVersion: operator.openshift.io/v1kind: Networkmetadata: name: clusterspec: additionalNetworks: - name: macvlan-storage namespace: tenant-x type: Raw rawCNIConfig: '{"cniVersion":"0.3.1","type":"macvlan","master":"ens192","mode":"bridge","ipam":{"type":"whereabouts","range":"192.168.50.0/24"}}'