Skip to content

Commit

Permalink
examples, macvtap, multus: add example for macvtap VMI
Browse files Browse the repository at this point in the history
Signed-off-by: Miguel Duarte Barroso <[email protected]>
  • Loading branch information
maiqueb committed Oct 22, 2020
1 parent 3891565 commit efa0cc5
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 1 deletion.
42 changes: 42 additions & 0 deletions examples/vmi-macvtap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstance
metadata:
labels:
special: vmi-macvtap
name: vmi-macvtap
spec:
domain:
devices:
disks:
- disk:
bus: virtio
name: containerdisk
- disk:
bus: virtio
name: cloudinitdisk
interfaces:
- macvtap: {}
name: macvtap
rng: {}
machine:
type: ""
resources:
requests:
memory: 1024M
networks:
- multus:
networkName: macvtapnetwork
name: macvtap
terminationGracePeriodSeconds: 0
volumes:
- containerDisk:
image: registry:5000/kubevirt/fedora-cloud-container-disk-demo:devel
name: containerdisk
- cloudInitNoCloud:
userData: |-
#!/bin/bash
echo "fedora" |passwd fedora --stdin
yum install -y nginx
systemctl enable --now nginx
name: cloudinitdisk
14 changes: 14 additions & 0 deletions tools/vms-generator/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ const (
VmiMultusMultipleNet = "vmi-multus-multiple-net"
VmiHostDisk = "vmi-host-disk"
VmiGPU = "vmi-gpu"
VmiMacvtap = "vmi-macvtap"
VmTemplateFedora = "vm-template-fedora"
VmTemplateRHEL7 = "vm-template-rhel7"
VmTemplateWindows = "vm-template-windows2012r2"
Expand Down Expand Up @@ -1002,3 +1003,16 @@ func GetVMIGPU() *v1.VirtualMachineInstance {
addNoCloudDiskWitUserData(&vmi.Spec, "#cloud-config\npassword: fedora\nchpasswd: { expire: False }")
return vmi
}

func GetVMIMacvtap() *v1.VirtualMachineInstance {
vmi := getBaseVMI(VmiMacvtap)
macvtapNetworkName := "macvtap"
vmi.Spec.Domain.Resources.Requests[k8sv1.ResourceMemory] = resource.MustParse("1024M")
vmi.Spec.Networks = []v1.Network{v1.Network{Name: macvtapNetworkName, NetworkSource: v1.NetworkSource{Multus: &v1.MultusNetwork{NetworkName: "macvtapnetwork"}}}}
initFedora(&vmi.Spec)
addNoCloudDiskWitUserData(&vmi.Spec, "#!/bin/bash\necho \"fedora\" |passwd fedora --stdin\nyum install -y nginx\nsystemctl enable --now nginx")

macvtap := &v1.InterfaceMacvtap{}
vmi.Spec.Domain.Devices.Interfaces = []v1.Interface{v1.Interface{Name: macvtapNetworkName, InterfaceBindingMethod: v1.InterfaceBindingMethod{Macvtap: macvtap}}}
return vmi
}
3 changes: 2 additions & 1 deletion tools/vms-generator/vms-generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func main() {
config, _, _, _ := testutils.NewFakeClusterConfig(&k8sv1.ConfigMap{
Data: map[string]string{
// Required to validate DataVolume usage
virtconfig.FeatureGatesKey: "DataVolumes,LiveMigration,SRIOV,GPU,HostDisk",
virtconfig.FeatureGatesKey: "DataVolumes,LiveMigration,SRIOV,GPU,HostDisk,Macvtap",
virtconfig.PermitSlirpInterface: "true",
virtconfig.PermitBridgeInterfaceOnPodNetwork: "true",
},
Expand Down Expand Up @@ -85,6 +85,7 @@ func main() {
utils.VmiMasquerade: utils.GetVMIMasquerade(),
utils.VmiHostDisk: utils.GetVMIHostDisk(),
utils.VmiGPU: utils.GetVMIGPU(),
utils.VmiMacvtap: utils.GetVMIMacvtap(),
}

var vmireplicasets = map[string]*v1.VirtualMachineInstanceReplicaSet{
Expand Down

0 comments on commit efa0cc5

Please sign in to comment.