1+ @startuml
2+ participant orchestrator
3+ participant containerd
4+ participant "control plugin"
5+ participant "demux-snapshotter"
6+
7+ orchestrator -> "control plugin ": create VM $id
8+ create shim
9+ "control plugin" -> shim : Launch VM $id
10+ create Firecracker
11+ shim -> Firecracker : Launch
12+ shim -> Firecracker ++ : configure and boot
13+ create MMDS
14+ Firecracker -> MMDS : start
15+ create agent
16+ Firecracker -> agent : start
17+ create "remote-snapshotter"
18+ Firecracker -> "remote - snapshotter ": start
19+ "shim" <-> agent : connect
20+ "control plugin" -> orchestrator : VM running
21+
22+ orchestrator -> "control plugin ": Put registry credentials
23+ "control plugin" -> MMDS : Put registry credentials
24+
25+
26+ loop "for each container"
27+ orchestrator -> containerd : prepare snapshot
28+ containerd -> "demux - snapshotter ": prepare snapshot
29+ "demux-snapshotter" <-> "remote - snapshotter ": connect
30+ "demux-snapshotter" -> "remote - snapshotter ": prepare snapshot
31+ create "docker-credential-mmds"
32+ "remote-snapshotter" -> "docker - credential - mmds ": Get credentials
33+ "docker-credential-mmds" -> MMDS : Get credentials
34+ MMDS -> "docker - credential - mmds ": credentials
35+ "docker-credential-mmds" -> "remote - snapshotter ": credentials
36+
37+ create FUSE
38+ "remote-snapshotter" -> FUSE : spawn
39+ activate FUSE
40+ "remote-snapshotter" -> "demux - snapshotter ": snapshot $foo
41+ "demux-snapshotter" -> containerd : snapshot $foo
42+ containerd -> orchestrator : snapshot $foo
43+ orchestrator -> containerd : run container $bar with snapshot $foo
44+ containerd -> shim : run container $bar with snapshot $foo
45+ shim -> agent : run container $bar with snapshot $foo
46+ agent -> FUSE : mount snapshot $foo
47+ create "container process"
48+ agent -> "container process ": start process
49+ activate "container process"
50+ "container process" -> "FUSE ": access files
51+ FUSE <-> registry : download files
52+ FUSE -> "container process ": file content/metadata
53+ note left of "container process "
54+ After some
55+ time, container
56+ process exits
57+ end note
58+ return
59+ agent -> shim : container $bar exited
60+ shim -> containerd : container $bar exited
61+ containerd -> orchestrator : container $bar exited
62+ end
63+ orchestrator -> "control plugin ": stop VM $id
64+ "control plugin" -> Firecracker : stop
65+ deactivate Firecracker
66+ @enduml
0 commit comments