-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(library): Add Caddy helper running scripts
Add scripts to assist in running Caddy manualy (with Firecracker and QEMU) and with Kraft. This commit is to be part of the `catalog-for-maintainers` repository. Kraft Firecracker run doesn't work for me. Signed-off-by: Razvan Deaconescu <[email protected]>
- Loading branch information
Razvan Deaconescu
committed
Nov 17, 2023
1 parent
6f04ddc
commit da99861
Showing
8 changed files
with
307 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# Caddy 2.7 | ||
|
||
This directory contains the definition for building the `unikraft.org/caddy:2.7` image. | ||
|
||
## Build | ||
|
||
To build this image, first create the root filesystem and the `Kraftfile` from `Kraftfile.template`: | ||
|
||
```console | ||
make initrd | ||
``` | ||
|
||
Then build the images: | ||
|
||
```console | ||
kraft build --no-cache --arch x86_64 --plat fc | ||
kraft build --no-cache --arch x86_64 --plat qemu | ||
``` | ||
|
||
## Package | ||
|
||
```console | ||
kraft pkg --name index.unikraft.io/unikraft.org/caddy:2.7 --strategy overwrite --push | ||
``` | ||
|
||
## Run | ||
|
||
To run this image, [install Unikraft's companion command-line toolchain `kraft`](https://unikraft.org/docs/cli) and then you can run, for QEMU: | ||
|
||
```console | ||
sudo kraft net create -n 172.44.0.1/24 virbr0 | ||
sudo kraft run \ | ||
-W \ | ||
--memory 256M \ | ||
--log-level debug --log-type basic \ | ||
--network bridge:virbr0 \ | ||
--arch x86_64 --plat qemu \ | ||
.unikraft/build/2.7_qemu-x86_64 \ | ||
-a netdev.ipv4_addr=172.44.0.2 -a netdev.ipv4_gw_addr=172.44.0.1 -a netdev.ipv4_subnet_mask=255.255.255.0 \ | ||
-- $cmd | ||
``` | ||
|
||
For Firecracker (RD: this doesn't work for me): | ||
|
||
``` | ||
sudo kraft net create -n 172.44.0.1/24 virbr0 | ||
sudo kraft run \ | ||
--memory 256M \ | ||
--log-level debug --log-type basic \ | ||
--network bridge:virbr0 \ | ||
--arch x86_64 --plat fc \ | ||
.unikraft/build/2.7_fc-x86_64 \ | ||
-a netdev.ipv4_addr=172.44.0.2 -a netdev.ipv4_gw_addr=172.44.0.1 -a netdev.ipv4_subnet_mask=255.255.255.0 \ | ||
-- $cmd | ||
``` | ||
|
||
Once executed, it will open port `2015` on IP address `172.44.0.2` and wait for connections, and can be queried on: | ||
|
||
```console | ||
curl 172.44.0.2:2015 | ||
``` | ||
|
||
## See also | ||
|
||
- [How to run unikernels locally in Unikraft's Documentation](https://unikraft.org/docs/cli/running). |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{ | ||
"boot-source": { | ||
"kernel_image_path": ".unikraft/build/2.7_fc-x86_64", | ||
"boot_args": "kernel netdev.ipv4_addr=172.44.0.2 netdev.ipv4_gw_addr=172.44.0.1 netdev.ipv4_subnet_mask=255.255.255.0 vfs.fstab=[ \"initrd:/data:initrd:::\" ] -- /usr/local/bin/caddy run --config /data/Caddyfile", | ||
"initrd_path": "data.cpio" | ||
}, | ||
"drives": [], | ||
"machine-config": { | ||
"vcpu_count": 1, | ||
"mem_size_mib": 256, | ||
"smt": false, | ||
"track_dirty_pages": false | ||
}, | ||
"cpu-config": null, | ||
"balloon": null, | ||
"network-interfaces": [ | ||
{ | ||
"iface_id": "net1", | ||
"guest_mac": "06:00:ac:10:00:02", | ||
"host_dev_name": "tap0" | ||
} | ||
], | ||
"vsock": null, | ||
"logger": { | ||
"log_path": "/tmp/firecracker.log", | ||
"level": "Debug", | ||
"show_level": true, | ||
"show_log_origin": true | ||
}, | ||
"metrics": null, | ||
"mmds-config": null, | ||
"entropy": null | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
{ | ||
"boot-source": { | ||
"kernel_image_path": ".unikraft/build/2.7_fc-x86_64", | ||
"boot_args": "kernel netdev.ipv4_addr=172.44.0.2 netdev.ipv4_gw_addr=172.44.0.1 netdev.ipv4_subnet_mask=255.255.255.0 -- /usr/local/bin/caddy run --config /data/Caddyfile" | ||
}, | ||
"drives": [], | ||
"machine-config": { | ||
"vcpu_count": 1, | ||
"mem_size_mib": 256, | ||
"smt": false, | ||
"track_dirty_pages": false | ||
}, | ||
"cpu-config": null, | ||
"balloon": null, | ||
"network-interfaces": [ | ||
{ | ||
"iface_id": "net1", | ||
"guest_mac": "06:00:ac:10:00:02", | ||
"host_dev_name": "tap0" | ||
} | ||
], | ||
"vsock": null, | ||
"logger": { | ||
"log_path": "/tmp/firecracker.log", | ||
"level": "Debug", | ||
"show_level": true, | ||
"show_log_origin": true | ||
}, | ||
"metrics": null, | ||
"mmds-config": null, | ||
"entropy": null | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#!/bin/sh | ||
|
||
cmd="/usr/local/bin/caddy run --config /data/Caddyfile" | ||
rootfs="data/" | ||
|
||
# Clean up any previous instances. | ||
sudo pkill -f qemu-system | ||
sudo pkill -f firecracker | ||
sudo kraft stop --all | ||
sudo kraft rm --all | ||
|
||
# Create CPIO archive to be used as the initrd. | ||
old="$PWD" | ||
cd "$rootfs" | ||
find -depth -print | tac | bsdcpio -o --format newc > "$old"/data.cpio | ||
cd "$old" | ||
|
||
# Remove previously created network interfaces. | ||
sudo ip link set dev tap0 down 2> /dev/null | ||
sudo ip link del dev tap0 2> /dev/null | ||
sudo ip link set dev virbr0 down 2> /dev/null | ||
sudo ip link del dev virbr0 2> /dev/null | ||
|
||
# Create bridge interface for KraftKit networking. | ||
sudo kraft net create -n 172.44.0.1/24 virbr0 | ||
|
||
sudo kraft run \ | ||
--memory 256M \ | ||
--log-level debug --log-type basic \ | ||
--network bridge:virbr0 \ | ||
--arch x86_64 --plat fc \ | ||
.unikraft/build/2.7_fc-x86_64 \ | ||
-a netdev.ipv4_addr=172.44.0.2 -a netdev.ipv4_gw_addr=172.44.0.1 -a netdev.ipv4_subnet_mask=255.255.255.0 \ | ||
-- $cmd |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
#!/bin/sh | ||
|
||
cmd="/usr/local/bin/caddy run --config /data/Caddyfile" | ||
rootfs="data/" | ||
|
||
# Clean up any previous instances. | ||
sudo pkill -f qemu-system | ||
sudo pkill -f firecracker | ||
sudo kraft stop --all | ||
sudo kraft rm --all | ||
|
||
# Create CPIO archive to be used as the initrd. | ||
old="$PWD" | ||
cd "$rootfs" | ||
find -depth -print | tac | bsdcpio -o --format newc > "$old"/data.cpio | ||
cd "$old" | ||
|
||
# Remove previously created network interfaces. | ||
sudo ip link set dev tap0 down 2> /dev/null | ||
sudo ip link del dev tap0 2> /dev/null | ||
sudo ip link set dev virbr0 down 2> /dev/null | ||
sudo ip link del dev virbr0 2> /dev/null | ||
|
||
# Create bridge interface for KraftKit networking. | ||
sudo kraft net create -n 172.44.0.1/24 virbr0 | ||
|
||
sudo kraft run \ | ||
-W \ | ||
--memory 256M \ | ||
--log-level debug --log-type basic \ | ||
--network bridge:virbr0 \ | ||
--arch x86_64 --plat qemu \ | ||
.unikraft/build/2.7_qemu-x86_64 \ | ||
-a netdev.ipv4_addr=172.44.0.2 -a netdev.ipv4_gw_addr=172.44.0.1 -a netdev.ipv4_subnet_mask=255.255.255.0 \ | ||
-- $cmd |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#!/bin/sh | ||
|
||
config="fc.json" | ||
|
||
if test $# -eq 1; then | ||
config="$1" | ||
fi | ||
|
||
rootfs="data/" | ||
|
||
# Clean up any previous instances. | ||
sudo pkill -f qemu-system | ||
sudo pkill -f firecracker | ||
sudo kraft stop --all | ||
sudo kraft rm --all | ||
|
||
# Create CPIO archive to be used as the initrd. | ||
old="$PWD" | ||
cd "$rootfs" | ||
find -depth -print | tac | bsdcpio -o --format newc > "$old"/data.cpio | ||
cd "$old" | ||
|
||
# Remove previously created network interfaces. | ||
sudo ip link set dev tap0 down 2> /dev/null | ||
sudo ip link del dev tap0 2> /dev/null | ||
sudo ip link set dev virbr0 down 2> /dev/null | ||
sudo ip link del dev virbr0 2> /dev/null | ||
|
||
# Create tap interface for Firecracker networking. | ||
sudo ip tuntap add dev tap0 mode tap | ||
sudo ip address add 172.44.0.1/24 dev tap0 | ||
sudo ip link set dev tap0 up | ||
|
||
# Remove previously created files. | ||
sudo rm -f /tmp/firecracker.log | ||
> /tmp/firecracker.log | ||
sudo rm -f /tmp/firecracker.socket | ||
sudo firecracker-x86_64 \ | ||
--api-sock /tmp/firecracker.socket \ | ||
--config-file "$config" |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/bin/sh | ||
|
||
kernel=".unikraft/build/2.7_qemu-x86_64" | ||
cmd="/usr/local/bin/caddy run --config /data/Caddyfile" | ||
rootfs="data/" | ||
|
||
# Clean up any previous instances. | ||
sudo pkill -f qemu-system > /dev/null 2>&1 | ||
sudo pkill -f firecracker > /dev/null 2>&1 | ||
sudo kraft stop --all > /dev/null 2>&1 | ||
sudo kraft rm --all > /dev/null 2>&1 | ||
|
||
# Create CPIO archive to be used as the initrd. | ||
old="$PWD" | ||
cd "$rootfs" | ||
find -depth -print | tac | bsdcpio -o --format newc > "$old"/data.cpio | ||
cd "$old" | ||
|
||
# Remove previously created network interfaces. | ||
sudo ip link set dev tap0 down 2> /dev/null | ||
sudo ip link del dev tap0 2> /dev/null | ||
sudo ip link set dev virbr0 down 2> /dev/null | ||
sudo ip link del dev virbr0 2> /dev/null | ||
|
||
# Create bridge interface for QEMU networking. | ||
sudo ip link add dev virbr0 type bridge | ||
sudo ip address add 172.44.0.1/24 dev virbr0 | ||
sudo ip link set dev virbr0 up | ||
|
||
sudo qemu-system-x86_64 \ | ||
-enable-kvm \ | ||
-kernel "$kernel" \ | ||
-nographic \ | ||
-m 256M \ | ||
-netdev bridge,id=en0,br=virbr0 -device virtio-net-pci,netdev=en0 \ | ||
-append "netdev.ipv4_addr=172.44.0.2 netdev.ipv4_gw_addr=172.44.0.1 netdev.ipv4_subnet_mask=255.255.255.0 vfs.fstab=[ \"initrd:/data:initrd:::\" ] -- $cmd" \ | ||
-initrd ./data.cpio \ | ||
-cpu max |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
#!/bin/sh | ||
|
||
kernel=".unikraft/build/2.7_qemu-x86_64" | ||
cmd="/usr/local/bin/caddy run --config /data/Caddyfile" | ||
|
||
# Clean up any previous instances. | ||
sudo pkill -f qemu-system > /dev/null 2>&1 | ||
sudo pkill -f firecracker > /dev/null 2>&1 | ||
sudo kraft stop --all > /dev/null 2>&1 | ||
sudo kraft rm --all > /dev/null 2>&1 | ||
|
||
# Remove previously created network interfaces. | ||
sudo ip link set dev tap0 down 2> /dev/null | ||
sudo ip link del dev tap0 2> /dev/null | ||
sudo ip link set dev virbr0 down 2> /dev/null | ||
sudo ip link del dev virbr0 2> /dev/null | ||
|
||
# Create bridge interface for QEMU networking. | ||
sudo ip link add dev virbr0 type bridge | ||
sudo ip address add 172.44.0.1/24 dev virbr0 | ||
sudo ip link set dev virbr0 up | ||
|
||
sudo qemu-system-x86_64 \ | ||
-enable-kvm \ | ||
-kernel "$kernel" \ | ||
-nographic \ | ||
-m 256M \ | ||
-netdev bridge,id=en0,br=virbr0 -device virtio-net-pci,netdev=en0 \ | ||
-append "netdev.ipv4_addr=172.44.0.2 netdev.ipv4_gw_addr=172.44.0.1 netdev.ipv4_subnet_mask=255.255.255.0 -- $cmd" \ | ||
-cpu max |