Project

General

Profile

Crowd cloud » History » Version 2

Evil Ham, 06/01/2019 06:47 PM

1 1 Evil Ham
h1. Crowd cloud / Kraut Computing (KC's)
2
3 2 Evil Ham
h2. Idea
4
5
Make something simple that "doesn't suck", which allows us to manage VMs at our will.
6
It should support basic concepts and therefore be as generic and portable as possible.
7 1 Evil Ham
8
h2. Use-cases
9
10
h3. Create a VM:
11
12
1. Pick an image
13
2. Pick network(s)
14
3. Pick machine type
15
[4. Pick machine type parameters]
16
[X. Add nic to VM / mod VM]
17
[Y. Upload images to be used for 1]
18
[Z. Destroy a VM]
19
20
Note: this actually includes most of the life-cycle of a VM.
21
22
h2. Components
23
24
Following components were identified and commented out, sorted out by subjective order of importance.
25
26
These components are thought as being some kind of key/value (JSON seems likely, a priori no NOSQL) with possibilities for opaque customer metadata.
27
28
* This key/value + metadata information should be usable for filtering / operations.
29
* It should be versioned.
30
31
h3. VM
32
Defined as an instance of different settings and multiplicities of the other components
33
34
h3. Machine types / Templates
35
36
General definition with fixed sets of settings and, in a future stage, parametrised options.
37
38
Examples of settings:
39
* CPU/RAM
40
* HW Type: arm64 / x86
41
* HW / VM
42
* ...
43
44
h3. Network(s)
45
46
Layer2-based, allow common use-cases like: static, dhcp, slaac, dhcpv6, custom gateway.
47
48
Outside connections: VXLAN
49
50
Note: it is quite important that the gateway can be set to another VM / something customised. That way, we can see firewalls and VPNs as special cases to be considered.
51
52
h3. Firewall / routing
53
54
Thought as: extra VM, that is potentially "invisible" to customers/users and that can:
55
* deal with basic sets of rules (e.g. allow TCP 80, 22 from $SUBNET, ...)
56
* ratelimit
57
* standard ACLs
58
* geek_mode: on --> "I know what I'm doing, gimme SSH"
59
60
Note: By treating this component as a special case of VMs, we simplify things and keep them simple.
61
62
h3. Storage
63
64
Thought as being out-of-scope to begin with since it can vary so much. We shouldn't rely on a specific implementation.
65
66
h3. Images
67
68
Basically a rw repository of prepared images. Uploads can be thought as being "raw" to begin with, and we can later add pre-processors that convert them as needed.
69
70
h3. Auth
71
72
Thought as "not being our problem".
73
*BUT*: we should have provisions for checkers as follows:
74
75
Use some HTTP Auth Header, which should be treated as opaque.
76
This value of the header, along with the details of the request, should offload Auth to an implementation.
77
That implementation should reply with the result of such request.
78
79
To facilitate adoption / testing, we should implement a few such Authenticators:
80
* httpasswd file
81
* ldap
82
* god-like tokens
83
* OTP
84
* limited-scope tokens
85
Note: by treating the header as something opaque, it can be e.g. base64(user:name) à la HTTP Basic Auth or a uuid or jwt or ...
86
87
h2. Things to consider
88
89
* The whole thing should aim to be a set of integrated tools that work well together and build on top of standard technologies as much as possible.
90
* Language of implementation should be consistent, but is open for discussion
91
* For the JSON metadata, Azure has some interesting tools / Schemas that are worth taking a look into.
92
* Take a look at ETCD, consul and the like.