Skip to content

Commit 3fa60a4

Browse files
committed
docs(logo): Add MLSysOps logo
Signed-off-by: Anastassios Nanos <ananos@nubificus.co.uk>
1 parent 940ce16 commit 3fa60a4

File tree

8 files changed

+54
-223
lines changed

8 files changed

+54
-223
lines changed

.github/linters/wordlist.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,3 +487,13 @@ crictl
487487
codebase
488488
fullstop
489489
subdirectory
490+
TBC
491+
distros
492+
Foivos
493+
Loaiza
494+
Panagiotis
495+
Pournaropoulos
496+
alexanpatr
497+
marcolo
498+
panosmaurikos
499+

docs/design/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ the design choices and limitations.
88
## Application description and deployment
99

1010

11+
TBC

docs/developer-guide/contribute.md

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ title: "Contributing"
44
description: "Contributing guidelines"
55
---
66

7-
Urunc is an open-source project licenced under the [Apache License 2.0](https://github.com/mlsysops-eu/mlsysops-framework/blob/main/LICENSE).
7+
The MLSysOps framework is an open-source project licensed under the [Apache
8+
License
9+
2.0](https://github.com/mlsysops-eu/mlsysops-framework/blob/main/LICENSE).
810
We welcome anyone who would be interested in contributing to `MLSysOps framework`.
911
As a first step, please take a look at the following document.
1012
The current document provides a high level overview of `MLSysOps framework`'s code structure, along with a few guidelines regarding contributions to the project.
@@ -21,15 +23,9 @@ The current document provides a high level overview of `MLSysOps framework`'s co
2123

2224
## Code organization
2325

24-
Urunc is written in Go and we structure the code and other files as follows:
26+
The MLSysOps framework is structured as follows:
2527

26-
- `/`: The root directory contains the Makefile to build `MLSysOps framework`, along with other non-code files, such as the licence, readme and more.
27-
- `/docs`: This directory contains all the documentation related to `MLSysOps framework`, such as the installation guide, timestamping and more.
28-
- `/cmd`: This directory contains handlers for the various command line options of `MLSysOps framework` and the implementation of containerd-shim.
29-
- `/internal/metrics`: This directory contains the implementation of the metrics logger, which is used for the internal measuring of `MLSysOps framework`'s setup steps.
30-
- `/pkg`: This directory contains the majority of the code for `MLSysOps framework`. In particular, the subdirectory `/pkg/network/` contains network related code as expected, while the `/pkg/unikontainers/` subdirectory contains the main logic of `MLSysOps framework`, along with the VMM/unikernel related logic.
31-
32-
Therefore, we expect any new documentation related files to be placed under `/docs` and any changes or new files in code to be either in the `/cmd/` or `/pkg/` directory.
28+
TBC
3329

3430
## How to contribute
3531

@@ -59,8 +55,8 @@ In that context, when opening a new issue regarding a bug, we kindly ask you to:
5955

6056
1. A short description of the bug.
6157
2. The respective logs both from the output and containerd.
62-
3. Urunc's version (either the commit's hash or the version).
63-
4. The CPU architecture, VMM and the Unikernel framework used.
58+
3. Framework's version manifest (either the commit hash or the version manifest file).
59+
4. The execution environment (CPU architecture, VMM etc.).
6460
5. Any particular steps to reproduce the issue.
6561
- Keep an eye on the issue for possible questions from the maintainers.
6662

@@ -71,10 +67,10 @@ An explanation of the issue
7167
7268
## System info
7369
74-
- Urunc version:
70+
- Version:
7571
- Arch:
7672
- VMM:
77-
- Unikernel:
73+
- ...
7874
7975
## Steps to reproduce
8076
A list of steps that can reproduce the issue.
@@ -117,7 +113,7 @@ In particular, we perform the following workflows tests:
117113
- Linting of the commit message. Please check the [git commit message style](#git-commit-messages) below for more info.
118114
- Spell check, since `MLSysOps framework` repository contains its documentation too.
119115
- License check
120-
- Code linting for Go.
116+
- Code linting.
121117
- Building artifacts for amd64 and aarch64.
122118
- Unit tests
123119
- End-to-end tests
@@ -126,7 +122,7 @@ For a better control over the tests and workflows that run in a PR, we define
126122
three labels which can be used:
127123

128124
- `ok-to-test`: Runs a full CI workflow, meaning all lint tests (commit
129-
message, spellcheck, license), Go's linting, building for x86 and aarch64,
125+
message, spellcheck, license), Code linting, building for x86 and aarch64,
130126
unit tests and at last end-to-end tests.
131127
- `skip-build`: Skips the building workflows along with unit and end-to end tests
132128
running all the linting tests. This is useful when
@@ -160,23 +156,32 @@ Please follow the below guidelines for your commit messages:
160156
- *style*: Changes that do not affect the meaning of the code (white-space,
161157
formatting, missing semi-colons, etc)
162158
- *refactor*: A code change that neither fixes a bug nor adds a feature
163-
- *perf*: A code change that improves performance
159+
- *`perf`*: A code change that improves performance
164160
- *test*: Adding missing tests
165161
- *build*: Changes that affect the build system or external dependencies
166-
(example scopes: gulp, broccoli, npm)
162+
(example scopes: gulp, broccoli, `npm`)
167163
- *ci*: Changes to our CI configuration files and scripts (example scopes:
168-
Travis, Circle, BrowserStack, SauceLabs)
164+
`Travis`, `Circle`, `BrowserStack`, `SauceLabs`)
169165
- *chore*: Other changes that don't modify src or test files
170166
- *revert*: Reverts a previous commit
171167
- In case the PR is associated with an issue, please refer to it, using the git trailer `Fixes: #Nr_issue`
172168
- Always sign-off your commit message
173169

174-
### Golang code styde
170+
Since the MLSysOps framework comprises code written in various programming
171+
languages we use the following styles for each:
172+
173+
### Golang code style
175174

176-
We follow gofmt's rules on formatting GO code. Therefore, we ask all
175+
We follow `gofmt`'s rules on formatting GO code. Therefore, we ask all
177176
contributors to do the same. Go provides the `gofmt` tool, which can be used
178177
for formatting your code.
179178

179+
### Python
180+
TBC
181+
182+
### C
183+
TBC
184+
180185
## Contact
181186

182187
Feel free to contact any of the

docs/developer-guide/development.md

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,11 @@ title: Setup a Dev environment
44
Most of the steps are covered in the [installation](../../installation) document.
55
Please refer to it for:
66

7-
- installing a recent version of Go (> 1.20)
8-
- installing `containerd` and `runc`
9-
- setting up the devmapper snapshotter
10-
- installing `nerdctl` and the `CNI` plugins
11-
- installing the relevant hypervisors
12-
13-
In addition to the above, we strongly suggest to install
14-
[crictl](https://github.com/kubernetes-sigs/cri-tools/tree/master).
15-
16-
```bash
17-
$ VERSION="v1.30.0" # check latest version in /releases page
18-
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
19-
$ sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
20-
$ rm -f crictl-$VERSION-linux-amd64.tar.gz
21-
```
22-
23-
Since default endpoints for `crictl` are now deprecated, we need to set them up:
24-
25-
```
26-
$ sudo tee -a /etc/crictl.yaml > /dev/null <<'EOT'
27-
runtime-endpoint: unix:///run/containerd/containerd.sock
28-
image-endpoint: unix:///run/containerd/containerd.sock
29-
timeout: 20
30-
EOT
31-
```
7+
TBC
328

339
The next step is to clone and build the `MLSysOps framework`:
3410

3511
```bash
36-
$ git clone https://github.com/mlsysops-eu/mlsysops-framework
37-
$ cd mlsysops-framework
12+
git clone https://github.com/mlsysops-eu/mlsysops-framework
13+
cd mlsysops-framework
3814
```
39-
40-
At last, please validate that the dev environment has been set correctly
41-
by running the:
42-
43-
- unit tests: `make unittest` and
44-
45-
- end-to-end tests: `sudo make e2etest`
46-
47-
> Note: When running `make` commands that will use go (i.e. build,
48-
> unitest, e2etest) you might need to specify the path to the go binary
49-
with `sudo GO=$(which go) make`.

docs/developer-guide/maintainers.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@ description: "Maintainers of the `MLSysOps framework`"
99
| Name | GitHub Username | Email | Responsibility |
1010
| ---------- | --------------- | ------- | --------------------------------- |
1111
| Anastassios Nanos | [@ananos](https://github.com/ananos) | ananos@nubificus.co.uk | Core Maintainer |
12-
| Alexandros Patras | [@alexpatras](https://github.com/alexpatras) | patras@uth.gr | Core Maintainer |
12+
| Panagiotis Mavrikos | [@panosmaurikos](https://github.com/panosmaurikos) | pmavrikos@nubificus.co.uk | Core Maintainer |
13+
| Alexandros Patras | [@alexanpatr](https://github.com/alexanpatr) | patras@uth.gr | Core Maintainer |
14+
| Foivos Pournaropoulos | [@Foivos-Pournaropoulos](https://github.com/Foivos-Pournaropoulos) | spournar@uth.gr | Core Maintainer |
15+
| Marco Loaiza | [@marcolo-30](https://github.com/marcolo-30) | | Core Maintainer |
1316
| ... | | | |

docs/img/mlsysops-logo.png

40.8 KB
Loading

docs/installation.md

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,21 @@ and all required components for executing all supported scenarios.
44
We assume a vanilla ubuntu 22.04 environment, although the `MLSysOps framework`
55
is able to run on a number of distros.
66

7-
We will be installing and setting up:
7+
We will be installing and setting up each component individually:
88

9-
- git, wget, bc, make, build-essential
10-
- [runc](https://github.com/opencontainers/runc)
11-
- [containerd](https://github.com/containerd/containerd/)
12-
- [nerdctl](https://github.com/containerd/nerdctl)
13-
- [devmapper](https://docs.docker.com/storage/storagedriver/device-mapper-driver/)
14-
- [Go 1.24.1](https://go.dev/doc/install)
15-
- [qemu](https://www.qemu.org/)
16-
- [firecracker](https://github.com/firecracker-microvm/firecracker)
17-
- [k3s](https://k3s.sh)
18-
- [karmada](https://karmada.io)
9+
### Core Framework
10+
TBC
1911

20-
Let's go.
12+
### Plugins
13+
TBC
2114

22-
> Note: Be aware that some instructions might override existing tools and services.
15+
### Mechanisms
16+
TBC
2317

2418
## Install required dependencies
19+
TBC
20+
21+
> Note: Be aware that some instructions might override existing tools and services.
2522
2623
The following packages are required to complete the installation. Depending
2724
on your specific needs, some of them may not be necessary in your use case.

docs/quickstart.md

Lines changed: 1 addition & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -4,154 +4,4 @@ for more detailed installation instructions, or the
44
[design](../design#architecture) document for more details regarding
55
`MLSysOps`'s architecture.
66

7-
8-
## Using Docker
9-
10-
The easiest and fastest way to try out the `MLSysOps framework` would be with
11-
`docker` Before doing so, please make sure that the host system satisfies the
12-
following dependencies:
13-
14-
- [Docker](https://docs.docker.com/engine/install/ubuntu/)
15-
- [Qemu](https://www.qemu.org/)
16-
17-
### Install Docker
18-
19-
At first we need [docker](https://docs.docker.com/engine/install/ubuntu/).
20-
21-
```bash
22-
$ curl -fsSL https://get.docker.com -o get-docker.sh
23-
$ sudo sh get-docker.sh
24-
$ rm get-docker.sh
25-
$ sudo groupadd docker # The group might already exist
26-
$ sudo usermod -aG docker $USER
27-
```
28-
29-
> Note: Please logout and log back in from the shell, in order to be able to use
30-
> docker without sudo
31-
32-
#### Install Qemu
33-
34-
Let's make sure that [Qemu](https://www.qemu.org/download/) is installed:
35-
36-
```bash
37-
$ sudo apt install -y qemu-system
38-
```
39-
40-
## Using containerd and nerdctl
41-
42-
### Install a high-level container runtime
43-
44-
First step is to install [containerd](https://github.com/containerd/containerd) and
45-
setup basic functionality (the `CNI` plugins and a snapshotter).
46-
47-
If a tool is already installed, skip to the next step.
48-
49-
#### Install and configure containerd
50-
51-
We will install [containerd](https://github.com/containerd/containerd) from the
52-
package manager:
53-
54-
```bash
55-
$ sudo apt install containerd
56-
```
57-
58-
In this way we will also install `runc`, but not the necessary CNI plugins.
59-
However, before proceeding to CNI plugins, we will generate the default
60-
configuration for [containerd](https://github.com/containerd/containerd).
61-
62-
```bash
63-
$ sudo mkdir -p /etc/containerd/
64-
$ sudo mv /etc/containerd/config.toml /etc/containerd/config.toml.bak # There might be no configuration
65-
$ sudo containerd config default | sudo tee /etc/containerd/config.toml
66-
$ sudo systemctl restart containerd
67-
```
68-
69-
#### Install CNI plugins
70-
71-
```bash
72-
$ CNI_VERSION=$(curl -L -s -o /dev/null -w '%{url_effective}' "https://github.com/containernetworking/plugins/releases/latest" | grep -oP "v\d+\.\d+\.\d+" | sed 's/v//')
73-
$ wget -q https://github.com/containernetworking/plugins/releases/download/v$CNI_VERSION/cni-plugins-linux-$(dpkg --print-architecture)-v$CNI_VERSION.tgz
74-
$ sudo mkdir -p /opt/cni/bin
75-
$ sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-$(dpkg --print-architecture)-v$CNI_VERSION.tgz
76-
$ rm -f cni-plugins-linux-$(dpkg --print-architecture)-v$CNI_VERSION.tgz
77-
```
78-
79-
#### Setup thinpool devmapper
80-
81-
In order to make use of directly passing the container's snapshot as block
82-
device in the container, we will need to setup the devmapper snapshotter. We can
83-
do that by first creating a thinpool, using the respective
84-
[scripts in `urunc`'s repo](https://github.com/nubificus/urunc/tree/main/script)
85-
86-
```bash
87-
$ wget -q https://raw.githubusercontent.com/nubificus/urunc/refs/heads/main/script/dm_create.sh
88-
$ wget -q https://raw.githubusercontent.com/nubificus/urunc/refs/heads/main/script/dm_reload.sh
89-
$ sudo mkdir -p /usr/local/bin/scripts
90-
$ sudo mv dm_create.sh /usr/local/bin/scripts/dm_create.sh
91-
$ sudo mv dm_reload.sh /usr/local/bin/scripts/dm_reload.sh
92-
$ sudo chmod 755 /usr/local/bin/scripts/dm_create.sh
93-
$ sudo chmod 755 /usr/local/bin/scripts/dm_reload.sh
94-
$ sudo /usr/local/bin/scripts/dm_create.sh
95-
```
96-
97-
> Note: The above instructions will create the thinpool, but in case of reboot,
98-
> you will need to reload it running the `dm_reload.sh` script. Otherwise
99-
> check the [installation guide for creating a service](../installation#create-a-service-for-thinpool-reloading).
100-
101-
At last, we need to modify
102-
[containerd](https://github.com/containerd/containerd/tree/main) configuration
103-
for the new demapper snapshotter:
104-
105-
- In containerd v2.x:
106-
107-
```bash
108-
$ sudo sed -i "/\[plugins\.'io\.containerd\.snapshotter\.v1\.devmapper'\]/,/^$/d" /etc/containerd/config.toml
109-
$ sudo tee -a /etc/containerd/config.toml > /dev/null <<'EOT'
110-
111-
# Customizations for devmapper
112-
113-
[plugins.'io.containerd.snapshotter.v1.devmapper']
114-
pool_name = "containerd-pool"
115-
root_path = "/var/lib/containerd/io.containerd.snapshotter.v1.devmapper"
116-
base_image_size = "10GB"
117-
discard_blocks = true
118-
fs_type = "ext2"
119-
EOT
120-
$ sudo systemctl restart containerd
121-
```
122-
123-
- In containerd v1.x:
124-
125-
```bash
126-
$ sudo sed -i '/\[plugins\."io\.containerd\.snapshotter\.v1\.devmapper"\]/,/^$/d' /etc/containerd/config.toml
127-
$ sudo tee -a /etc/containerd/config.toml > /dev/null <<'EOT'
128-
129-
# Customizations for devmapper
130-
131-
[plugins."io.containerd.snapshotter.v1.devmapper"]
132-
pool_name = "containerd-pool"
133-
root_path = "/var/lib/containerd/io.containerd.snapshotter.v1.devmapper"
134-
base_image_size = "10GB"
135-
discard_blocks = true
136-
fs_type = "ext2"
137-
EOT
138-
$ sudo systemctl restart containerd
139-
```
140-
141-
Let's verify that the new snapshotter is properly configured:
142-
143-
```bash
144-
$ sudo ctr plugin ls | grep devmapper
145-
io.containerd.snapshotter.v1 devmapper linux/amd64 ok
146-
```
147-
148-
### Install nerdctl
149-
150-
After installing [containerd](https://github.com/containerd/containerd) a nifty tool like [nerdctl](https://github.com/containerd/nerdctl/) is useful to get a realistic experience.
151-
152-
```bash
153-
$ NERDCTL_VERSION=$(curl -L -s -o /dev/null -w '%{url_effective}' "https://github.com/containerd/nerdctl/releases/latest" | grep -oP "v\d+\.\d+\.\d+" | sed 's/v//')
154-
$ wget -q https://github.com/containerd/nerdctl/releases/download/v$NERDCTL_VERSION/nerdctl-$NERDCTL_VERSION-linux-$(dpkg --print-architecture).tar.gz
155-
$ sudo tar Cxzvf /usr/local/bin nerdctl-$NERDCTL_VERSION-linux-$(dpkg --print-architecture).tar.gz
156-
$ rm -f nerdctl-$NERDCTL_VERSION-linux-$(dpkg --print-architecture).tar.gz
157-
```
7+
``

0 commit comments

Comments
 (0)