docs: Add TUN device (#167)

This commit is contained in:
Kroese 2024-12-01 17:37:51 +01:00 committed by GitHub
parent 55db344c71
commit 5b3a1d3fc1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 45 additions and 36 deletions

View file

@ -6,6 +6,7 @@ services:
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso" BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
devices: devices:
- /dev/kvm - /dev/kvm
- /dev/net/tun
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
ports: ports:

View file

@ -1,3 +1,4 @@
---
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
@ -16,47 +17,53 @@ metadata:
labels: labels:
name: qemu name: qemu
spec: spec:
terminationGracePeriodSeconds: 120 # the Kubernetes default is 30 seconds and it may be not enough
containers: containers:
- name: qemu - name: qemu
image: qemux/qemu-arm image: qemux/qemu-arm
ports:
- containerPort: 8006
protocol: TCP
securityContext:
privileged: true
env: env:
- name: BOOT - name: BOOT
value: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso" value: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
- name: RAM_SIZE - name: RAM_SIZE
value: 1G value: "1G"
- name: CPU_CORES - name: CPU_CORES
value: "1" value: "1"
- name: DISK_SIZE - name: DISK_SIZE
value: "16G" value: "16G"
ports:
- containerPort: 8006
securityContext:
capabilities:
add:
- NET_ADMIN
privileged: true
volumeMounts: volumeMounts:
- mountPath: /storage - mountPath: /storage
name: storage name: storage
- mountPath: /dev/kvm - mountPath: /dev/kvm
name: dev-kvm name: dev-kvm
- mountPath: /dev/net/tun
name: dev-tun
terminationGracePeriodSeconds: 120
volumes: volumes:
- name: storage - name: storage
persistentVolumeClaim: persistentVolumeClaim:
claimName: qemu-pvc claimName: qemu-pvc
- name: dev-kvm - hostPath:
hostPath:
path: /dev/kvm path: /dev/kvm
name: dev-kvm
- hostPath:
path: /dev/net/tun
type: CharDevice
name: dev-tun
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: qemu name: qemu
spec: spec:
type: NodePort
selector:
name: qemu
ports: ports:
- name: tcp-8006 - name: tcp-8006
protocol: TCP
port: 8006 port: 8006
targetPort: 8006 selector:
name: qemu
type: NodePort

View file

@ -35,6 +35,7 @@ services:
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso" BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/aarch64/alpine-virt-3.19.1-aarch64.iso"
devices: devices:
- /dev/kvm - /dev/kvm
- /dev/net/tun
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
ports: ports:
@ -45,7 +46,7 @@ services:
Via Docker CLI: Via Docker CLI:
```bash ```bash
docker run -it --rm -e "BOOT=http://example.com/image.iso" -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN qemux/qemu-arm docker run -it --rm -e "BOOT=http://example.com/image.iso" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN qemux/qemu-arm
``` ```
Via Kubernetes: Via Kubernetes: