containerd-shim-spin icon indicating copy to clipboard operation
containerd-shim-spin copied to clipboard

Simple Python Spin apps are failing to start

Open kate-goldenring opened this issue 10 months ago • 7 comments

The shim appears to not support python applications.

Repro

spin new pyapp -t http-py
pip install requirements.txt
spin build
spin registry push ttl.sh/spin-py-foo:2h
spin kube scaffold -f ttl.sh/spin-py-foo:2h | k apply -f -
# Pods fail to start

Debugging

sudo ctr pull ttl.sh/spin-py-foo:2h 
sudo RUST_LOG=trace ctr run --rm --net-host --runtime io.containerd.spin.v2 ttl.sh/spin-py-foo:2h py-foo bogus-arg
# process exits

Containerd logs

Fails at failed to build spin trigger

Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.246053138Z" level=info msg="starting instance: py-foo"
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.246316099Z" level=info msg="calling start function"
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.246360197Z" level=info msg="setting up wasi"
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.247377987Z" level=info msg=" >>> configuring spin oci application 2"
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.247412943Z" level=info msg="<<< writing wasm artifact with length 41517920 config to cache, near "/.cache/registry/manifests""
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.308110493Z" level=info msg="writing spin oci config to "/spin.json""
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.3874617Z" level=info msg="instantiate_pre;"
Apr 14 17:26:38 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:26:38.701446536Z" level=info msg="error running start function: failed to build spin trigger"

And disabling precompilation surfaces better logs:

Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:42:19.800827224Z" level=error msg="run_wasi ERROR >>>  failed: failed to build spin trigger
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: Caused by:
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:     0: Failed to instantiate component 'mypy'
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:     1: unable to parse binary
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:     2: magic header not detected: bad magic number - expected=[
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x0,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x61,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x73,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x6d,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:        ] actual=[
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x7f,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x45,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x4c,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:            0x46,
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]:        ] (at offset 0x0)"
Apr 14 17:42:19 kagold-ThinkPad-X1-Carbon-6th containerd[304436]: time="2024-04-15T00:42:19.802484297Z" level=info msg="error running start function: failed to build spin trigger"

@dicej are we handling componentization in Spin differently for Python components in a way that we would need to port over to the shim?

kate-goldenring avatar Apr 15 '24 00:04 kate-goldenring