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