Created
May 18, 2026 23:21
-
-
Save trozet/1726df4136e65cf3269174990e7c76a5 to your computer and use it in GitHub Desktop.
Testing DPU Sim with no overlay
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 1. Prereqs | |
| # need libvirt and libvirt-devel to build dpu-sim | |
| # . `make build` in dpu-sim | |
| # checkout https://github.com/trozet/ovn-kubernetes/tree/dpu-sim-no-overlay | |
| # export dir vars | |
| export OVN_KUBERNETES_PATH=~/go/src/github.com/ovn-org/ovn-kubernetes | |
| export DPU_SIM_PATH=~/go/src/github.com/ovn-kubernetes/dpu-simulator | |
| export KIND_EXPERIMENTAL_PROVIDER=docker | |
| # 2. Deploy KIND with DPU Sim | |
| pushd $DPU_SIM_PATH | |
| ./bin/dpu-sim --config config-kind-ovnk-offload.yaml --ovn-kubernetes-path "$OVN_KUBERNETES_PATH" --ovnk-mode values-only | |
| # output: | |
| #✓ Kind deployment complete! | |
| #Your DPU simulation environment is ready: | |
| # • Kind clusters are running | |
| # • CNI is deployed and ready | |
| #Useful commands: | |
| # kind get clusters # List all clusters | |
| # kubectl --kubeconfig kubeconfig/dpu-sim-host.kubeconfig get nodes | |
| # kubectl --kubeconfig kubeconfig/dpu-sim-dpu.kubeconfig get nodes | |
| #Kubeconfig directory: kubeconfig | |
| #For more information, see README.md | |
| #dpu-sim total time: 10m12.911s | |
| # 3. Install OVNK on host cluster | |
| ### DPU sim assumes podman provider it looks like | |
| ### must use umanaged bgp (managed builds peering with k8s node ips and not dpu ips) | |
| ### use nosnat for now until snat is fixed upstream | |
| pushd $OVN_KUBERNETES_PATH | |
| ./contrib/kind-helm.sh \ | |
| --deploy \ | |
| --cluster-name dpu-sim-host \ | |
| --kubeconfig "$DPU_SIM_PATH/kubeconfig/dpu-sim-host.kubeconfig" \ | |
| --dpu-mode host \ | |
| --network-segmentation-enable \ | |
| --multi-network-enable \ | |
| --route-advertisements-enable \ | |
| --no-overlay-enable \ | |
| --advertise-default-network \ | |
| --extra-values "$DPU_SIM_PATH/kubeconfig/helm-values/dpu-sim-host-ovn-kubernetes-dpu-host-values.yaml" | |
| popd | |
| #regenerate host values if needed (optional) | |
| ./bin/dpu-sim ovnk values --config config-kind-ovnk-offload.yaml --cluster dpu-sim-host | |
| #4. Generate DPU host access artifacts | |
| ./bin/dpu-sim ovnk host-access --config config-kind-ovnk-offload.yaml | |
| ./bin/dpu-sim ovnk values --config config-kind-ovnk-offload.yaml --cluster dpu-sim-dpu --require-host-credentials | |
| #5. Install OVN-Kubernetes and FRR-K8S on DPU cluster | |
| source "$DPU_SIM_PATH/kubeconfig/helm-values/dpu-sim-dpu-frr-k8s.env" | |
| pushd $OVN_KUBERNETES_PATH | |
| ./contrib/kind-helm.sh \ | |
| --deploy \ | |
| --cluster-name dpu-sim-dpu \ | |
| --kubeconfig "$DPU_SIM_PATH/kubeconfig/dpu-sim-dpu.kubeconfig" \ | |
| --dpu-mode dpu \ | |
| --multi-network-enable \ | |
| --network-segmentation-enable \ | |
| --route-advertisements-enable \ | |
| --no-overlay-enable \ | |
| --advertise-default-network \ | |
| --extra-values "$DPU_SIM_PATH/kubeconfig/helm-values/dpu-sim-dpu-ovn-kubernetes-dpu-values.yaml" \ | |
| --frr-k8s-host-kubeconfig "$FRR_K8S_HOST_KUBECONFIG" \ | |
| --frr-k8s-remote-kubeconfig "$FRR_K8S_REMOTE_KUBECONFIG" \ | |
| --frr-k8s-remote-node-map "$FRR_K8S_REMOTE_NODE_MAP" \ | |
| popd | |
| popd | |
| # Example files | |
| trozet@fedora:~$ cat ~/udn_namespace.yaml | |
| apiVersion: v1 | |
| kind: Namespace | |
| metadata: | |
| name: udn-test | |
| labels: | |
| k8s.ovn.org/primary-user-defined-network: "" | |
| k8s.ovn.org/user-defined-primary-network: "" | |
| trozet@fedora:~$ cat ~/cudn.yaml | |
| apiVersion: k8s.ovn.org/v1 | |
| kind: ClusterUserDefinedNetwork | |
| metadata: | |
| name: l3-primary | |
| labels: | |
| bgp: enabled | |
| annotations: | |
| k8s.v1.cni.cncf.io/resourceName: dpusim.io/vf | |
| spec: | |
| namespaceSelector: | |
| matchExpressions: | |
| - key: kubernetes.io/metadata.name | |
| operator: In | |
| values: | |
| - udn-test | |
| - udn-test2 | |
| #matchLabels: | |
| #kubernetes.io/metadata.name: udn-test | |
| network: | |
| topology: Layer3 | |
| layer3: | |
| role: Primary | |
| subnets: | |
| - cidr: 10.20.0.0/16 | |
| transport: NoOverlay | |
| noOverlay: | |
| outboundSNAT: "Disabled" | |
| routing: "Unmanaged" | |
| trozet@fedora:~$ cat ~/ra.yaml | |
| apiVersion: k8s.ovn.org/v1 | |
| kind: RouteAdvertisements | |
| metadata: | |
| name: trozet-cudn | |
| spec: | |
| nodeSelector: {} | |
| frrConfigurationSelector: {} | |
| networkSelectors: | |
| - networkSelectionType: ClusterUserDefinedNetworks | |
| clusterUserDefinedNetworkSelector: | |
| networkSelector: | |
| matchLabels: | |
| bgp: "enabled" | |
| advertisements: | |
| - "PodNetwork" | |
| trozet@fedora:~$ cat ~/basic_udn-dpu-sim.yaml | |
| --- | |
| apiVersion: v1 | |
| kind: Pod | |
| metadata: | |
| name: client | |
| namespace: udn-test | |
| labels: | |
| pod-name: client | |
| #role: webserver | |
| #app: spk-coredns | |
| #annotations: | |
| #k8s.v1.cni.cncf.io/networks: l3-secondary | |
| spec: | |
| #hostNetwork: true | |
| containers: | |
| - name: client | |
| image: arunvelsriram/utils | |
| #command: | |
| # - /sbin/init | |
| command: [ "/bin/bash", "-c", "--" ] | |
| args: [ "while true; do sleep 3000000; done;" ] | |
| imagePullPolicy: IfNotPresent | |
| ports: | |
| - name: dns-tcp | |
| containerPort: 53 | |
| protocol: TCP | |
| - name: dns-udp | |
| containerPort: 9999 | |
| protocol: UDP | |
| # securityContext: | |
| #sysctls: | |
| #- name: net.ipv6.route.max_size | |
| #value: 2048 | |
| # securityContext: | |
| # sysctls: | |
| # - name: net.ipv4.tcp_sack | |
| resources: | |
| requests: | |
| dpusim.io/vf: "2" | |
| limits: | |
| dpusim.io/vf: "2" | |
| trozet@fedora:~$ cat ~/basic2_udn-dpu-sim.yaml | |
| --- | |
| apiVersion: v1 | |
| kind: Pod | |
| metadata: | |
| namespace: udn-test | |
| name: server | |
| labels: | |
| # testid: svc-proxy-terminating-7ef38e00-7f11-45ed-b410-8a8d88f430a3 | |
| pod-name: server2 | |
| spec: | |
| #hostNetwork: true | |
| containers: | |
| - name: server | |
| image: python | |
| #command: | |
| # - /sbin/init | |
| command: [ "/bin/bash", "-c", "--" ] | |
| args: [ "while true; do sleep 3000000; done;" ] | |
| resources: | |
| requests: | |
| dpusim.io/vf: "2" | |
| limits: | |
| dpusim.io/vf: "2" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment