NLnetLabs / krillmanager

Layered infrastructure as code for running Krill as a highly available scalable service with integration points for monitoring and log analysis.
BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

Speed up the krillmanager command #51

Open ximon18 opened 4 years ago

ximon18 commented 4 years ago

Currently as many components of Krill Manager are implemented as Docker containers as possible so that the only components on the host are host related or pre-requisites, e.g. Docker itself cannot be in a Docker container, and GlusterFS needs awareness of the host network environment to be setup and must be setup before Docker attempts to use it.

However, having the krillmanager command (which is basically just one script) inside a Docker container adds command execution delay, which becomes very significant on AWS and Azure because (can be 10's of seconds):

This large (>500 MiB) Docker image size leads to a long slow download on AWS and Azure (not on DO) and also increased container creation time. As the Docker and Gluster drivers must already exist on the host, installing the krillmanager script to the host instead of inside a Docker image would hugely boost the apparent responsiveness of the krillmanager command and make commands like krillc as responsive as its native Rust based counterpart.

Some things would have to be adapted:

Instead of just extracting the current Bash scripts from the Docker image, an alternate solution (and one more aligned with the development of Krill itself) could be to rewrite the manager and wrapper functionality as a Rust application published to crates.io, and check for updates to the published crate.