kjx-headless
[WIP] deploy, trace and monitor a busybox/LFS based distro
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (3.8%) to scientific vocabulary
Repository
[WIP] deploy, trace and monitor a busybox/LFS based distro
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
kjx-headless // WIP
POC for a custom headless LFS distro setup, deploy and monitoring
Taking up from where eulab-poc left ;D
This proof-of-concept monorepo gathers concepts from several [1] constrained systems to create a *NIX Distro, Linux-based. Composed by Busybox/LFS, it applies CI/CD for infrastructure automation. Aimed to explore the performance of virtualized environments.
Check the Gitlab mirror for an example using Jenkins instead of Github Actions.
sh
.-"``"-.
/ _.-` (_) `-._
\ (_.----._) /
\ / \ /
`\ \____/ /`
`-.____.-` __ _
/ \ / /__ (_)_ __
/ \ / '_/ / /\ \ /
/_ | | _\ /_/\_\_/ //_\_\
| | | |___/ deomorxsy/kjx
|__|__| ----------------------------------------------
/_ | _\ Reboot (01.00.0, ${GIT_CONTAINERFILE_HASH})
----------------------------------------------
The entire boot flowchart, from kernel init scripts to k3s initialization:
kernel
|
1|
.--- /etc/runit/reboot ---. 14
,---| 2 |<--- (runit-init) <---- init 0|6
| '--- /etc/runit/stopit ---' |
| 13 |
'------------------------------------> 3|
.-----> runit
| |
| |
.---<---------<----+-------->---------.
| | | |
4| | 6| 10|
runit/1 | runit/2 runit/3
| | | |
5| | 7| 11|
start things | runsvdir sv
| | | |
| | 8| |
+---------------+ '--->---'| runsv /var/service/*
| Parent Process| | | |
+---------------+<------------' | |
| | 12|
|1. Fork libbpf | stop things
|2. Fork k3s process | |
| | |
|3. Send signal SIGUSR1 to libbpf | send SIGTERM
v v v
+--------------------+ +--------------------+ |
| Child: libbpf | | Child: k3s Process |---'
| Program | | Wait for SIGUSR2 |
+--------------------+ +--------------------+
^ ^
| 4. Wait for SIGUSR1 | 6. Wait for SIGUSR2
| (self-loop) | (self-loop)
v v
+--------------------+ +--------------------+
| Start Monitoring |------------>| Signal: Monitoring |
+--------------------+ | Started |
| +--------------------+
| |
| |
| 5. Send SIGUSR2 to k3s Process |
v v
+--------------------+ +--------------------+
| Monitoring Active | | Start k3s Process |
+--------------------+ +--------------------+
| ┌──────────────────────┘
| │
| ┌─────────────── ▼ ───────────────────┐
v │ ┌──────────────┐ │
+--------│-------│server process│------------+ │
| ▼ └──────────────┘ | │
| +----------+ | │
| |supervisor|──┐ +-------+ ◄───────┐ | │ ┌──────────────┐
| +----------+ │ |flannel|--------┐| | │ +------│client process│----+
| ▼ +-------+ || | │ | └──────────────┘ |
| +----+ +----------+ || | │ | +-------+ |
| |kine|◄───|API-server| ◄-┐ +----------+ || | │ | |flannel|──────┐ |
| +----+ +----------+ └-|kube-proxy|◄┘| | │ | +-------+ ▼ |
| ▲ ▲ ▲ +----------+ | | │ | ▲ +----------+|
| +----------+ │ │ │ | | │ | +------+ | |kube-proxy||
| |controller| | | | +-------+ | | │ | |tunnel| └─┐ +----------+|
| |manager |──┘ | └──────|kubelet|─────┘ | └───|proxy |◄┐ | |
| +----------+ +---------+ +-------+ | | +------+ | └─────┐ |
+---------------|scheduler|-----│------------+ | ▲ └────┐ | |
+---------+ │ | └───── +-------+ |
│ +-------------|kubelet|----+
+----------+ │ +-------+
|containerd| ◄───────┘ +----------+ │
+----------+ |containerd|◄───────┘
│ +----------+
│ +---+ │
└─► |Pod| │ +---+
+---+ └─► |Pod|
+---+
Unit and Integration tests use the go testing package with code coverage. Currently exploring fuzz tests. There is also a chore using bats-core. The adopted strategy is composed by spinning up a container, setting permissions with libcap and switching between test scopes for different containerized environments.
References
[1] LFS, Sabotage, Alpine, Busybox OS, ALFS, PILFS, Cross Linux from Scratch, Embedded Linux from Scratch, Dragora Linux, Alpine Linux and Void Linux.
- Alpine Wiki
- Sabotage && devsonacid
- Buildroot manual
- ALFS
- Cross Linux from Scratch
- Embedded Linux from Scratch
- Dragora Linux Handbook || archive
- VoidLinux docs
- Alpine User Handbook
- TinyEmu
- Hardened Gentoo
- Linux From Scratch on the Raspberry Pi
- runit-for-lfs
- containerd-rootless
- rootless containers initiative
- rhatdan's Podman in Action
- qemu-fuse-disk-export script
- youki tests!
- the cromwell runntime
- The firecracker scripts from kubefire
Owner
- Login: deomorxsy
- Kind: user
- Location: PE, Brasil
- Repositories: 2
- Profile: https://github.com/deomorxsy
Citation (CITATION.cff)
cff-version: 1.2.0
message: "Citation below."
authors:
- deomorxsy
title: "kjx-headless"
version: 2.0.4
identifiers:
- type: "other"
date-released: 2024-06-06
GitHub Events
Total
- Push event: 22
Last Year
- Push event: 22
Issues and Pull Requests
Last synced: 12 months ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v4 composite
- actions/upload-artifact v3 composite
- actions/checkout v4 composite
- actions/upload-artifact v3 composite
- alpine 3.20 build
- alpine 3.18 build
- busybox 1.36.1-musl build
- alpine 3.18 build
- debian 12.1 build
- debian-builder latest build
- dependencies latest build
- alpine 3.18 build
- debian bookworm build
- golang 1.22-bookworm build
- alpine 3.18 build
- busybox 1.36.1-musl build
- alpine 3.20 build
- golang 1.23-alpine3.20 build
- alpine 3.20 build
- golang 1.23-alpine3.20 build
- alpine 3.20 build
- elixir 1.17.3-otp-27-alpine build
- honey HEAD
- https://github.com/lac-dcc/honey-potion/ 83b35afc6cc6dd0282dddbddef74bbee95996f55
- actions/checkout v4 composite
- actions/upload-artifact v3 composite
- actions/checkout v4 composite
- actions/checkout v1 composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- actions/checkout v4 composite
- actions/labeler v4 composite
- actions/upload-artifact v4 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- alpine 3.20 build
- busybox 1.36.1-musl build
- alpine 3.20 build
- alpine 3.20 build
- alpine 3.20 build