help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Managing container deployment


From: shcv
Subject: Managing container deployment
Date: Thu, 13 Feb 2020 18:37:25 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

Hello,

Has anyone done any work for using Guix to deploy container images to
multiple machines, somewhat like the `guix deploy` command, but for
deploying individual environments and applications?

Alternatively, has anyone done any work with running kubernetes on guix?

I'm about to build a tiny cluster for doing some experiments, and the
reproducibility aspect of Guix appeals, especially for scientific work.


As a second thread for discussion, if nothing like this has been done
yet, I could see extending the current Guix functionality to accomplish
something like docker-compose and docker-swarm:

1. A container specification extending manifests that includes a little
more detail about network configuration or resources.

2. A recursive spec related to the k8s "pod" or docker-compose.yml spec that 
composes
sets of containers, and defines the networking between them and their
relative deployment needs (dependencies, should they run on the same
machine, etc.)

3. A cluster spec, probably a list of machines from the current work on
Guix deployment, possibly with one of them singled out as 'master'.

4. Extend `guix deploy` to connect via ssh to each of the machines, set
up the environments as necessary, and launch them.


It should be possible to achieve deterministic cluster-wide container
deployments based on a scheduling function that could be included in the
composition spec. Unless all of the deployment is replicated on each
node one node should probably be the master with knowledge of the state
of the whole cluster, enabling both incremental deployments (like guix
install) and declarative deployments (like manifests), as well as a
deployment version of 'describe'.

Maybe some of this would require support from shepherd?

Adding the concepts of 'master' and 'cluster' could also provide the
same incremental and declarative features to the existing deploy
operations, as well as generalizations of the other commands to apply to
the whole cluster. It would probably also be good to make clusters
recursive, to manage more complex topologies.


I think it would be fun to build all that, but I probably won't be able
to for my current deadline...

–shcv



reply via email to

[Prev in Thread] Current Thread [Next in Thread]