Runbook: UDN Layer3
Procedura per creare un namespace segregato con una UDN primaria Layer3 su OpenShift 4.18 (cluster IPI vSphere). Idempotente dove possibile, con verifiche a ogni passo.
Prerequisiti
Sezione intitolata “Prerequisiti”- OpenShift 4.18+ con OVN-Kubernetes (default).
ocautenticato come utente con permessi su namespace e CRDk8s.ovn.org.
oc version | grep -i serveroc get network.config/cluster -o jsonpath='{.spec.networkType}{"\n"}' # atteso: OVNKubernetes1. Scegli il CIDR e verifica la non-collisione
Sezione intitolata “1. Scegli il CIDR e verifica la non-collisione”oc get network.config/cluster -o jsonpath='{"pod: "}{.spec.clusterNetwork[0].cidr}{"\nservice: "}{.spec.serviceNetwork[0]}{"\n"}'oc get nodes -o jsonpath='{range .items[*]}{.status.addresses[?(@.type=="InternalIP")].address}{"\n"}{end}'# evita anche: 100.64.0.0/16 100.88.0.0/16 169.254.0.0/17CIDR scelto per l’esempio: 10.200.0.0/16 con hostSubnet: 24.
2. Crea il namespace con la label (al momento della creazione)
Sezione intitolata “2. Crea il namespace con la label (al momento della creazione)”cat <<'EOF' | oc apply -f -apiVersion: v1kind: Namespacemetadata: name: tenant-segregato labels: k8s.ovn.org/primary-user-defined-network: ""EOF3. Applica la UDN primaria Layer3
Sezione intitolata “3. Applica la UDN primaria Layer3”cat <<'EOF' | oc apply -f -apiVersion: k8s.ovn.org/v1kind: UserDefinedNetworkmetadata: name: primary-net namespace: tenant-segregatospec: topology: Layer3 layer3: role: Primary subnets: - cidr: 10.200.0.0/16 hostSubnet: 24EOFVerifica che la UDN sia pronta:
oc -n tenant-segregato get userdefinednetwork primary-net -o jsonpath='{.status.conditions[?(@.type=="NetworkReady")].status}{"\n"}'# atteso: True4. Deploya un pod di prova
Sezione intitolata “4. Deploya un pod di prova”cat <<'EOF' | oc apply -f -apiVersion: apps/v1kind: Deploymentmetadata: name: probe namespace: tenant-segregatospec: replicas: 2 selector: { matchLabels: { app: probe } } template: metadata: { labels: { app: probe } } spec: containers: - name: probe image: registry.access.redhat.com/ubi9/ubi-minimal command: ["sleep", "infinity"]EOF5. Verifica l’IP sulla UDN
Sezione intitolata “5. Verifica l’IP sulla UDN”oc -n tenant-segregato get pods -o wideoc -n tenant-segregato exec deploy/probe -- ip -br addr show eth0# atteso: eth0 con IP nel range 10.200.x.0/24 (la fetta del nodo), NON 10.128.x.xSe eth0 è in 10.200.x.x, la rete primaria del namespace è la UDN: segregazione attiva.
Rollback
Sezione intitolata “Rollback”oc delete ns tenant-segregato(Elimina namespace, UDN e pod in un colpo solo.)
Passo successivo: verificare l’isolamento verso un altro namespace.