Imageless Kubernetes is a new way to run Kubernetes backed by Flox environments rather than container images. This means that rather than managing image pipelines and constantly rebuilding containers, you now have lightweight Flox environments that build reproducibly, with centralized control via FloxHub. And since Flox environments give you the same set of dependencies no matter where they’re run, you can rest easy knowing that the tools you used during development and CI are the same as those running in a Kubernetes pod. Let’s take a closer look at what this buys you.Documentation Index
Fetch the complete documentation index at: https://flox-kanishk-copy-page-as-markdown.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Centralized management
Each pod specifies a command to run and the Flox environment to run inside of it. The syntax is slightly different to a typical pod spec, so the syntax will be explained shortly. For now, just know that you need to specify a Flox environment to run your command in. The environment you specify must be an environment that has been pushed to FloxHub because this is where the centralized management magic happens. Once the environment has been pushed to FloxHub, you get:- A list of the installed packages and their versions
- A list of the environment variables set by the environment
- The scripts that run on startup
- An audit trail of what changes were made to the environment and by whom
Syntax
A sample pod specification is shown below:flox/empty:1.0.0) that’s only a few bytes in size.
As explained above, this workaround is required by Kubernetes pod specification.
Workflow
Once you create a pod specification and deploy it, the pod will start up with the currently live generation of the environment. Now let’s say you want to add a package to the environment running in the pod. All you need to do is install the package to the environment, and redeploy the pod. No need to rebuild an image. Here’s what happens under the hood:- An operator runs
flox install -r myorg/myenv somepackage. - This creates a new generation of the local copy of the environment.
- The operator then runs
flox push -r myorg/myenvto sync the changes to FloxHub. - Next time the pod is deployed, it will pull the latest generation from FloxHub (which now contains
somepackage)
Trying it out
To quickly try out Imageless Kubernetes locally, see the examples, which useskind to create a local Kubernetes cluster.
Imageless Kubernetes is also currently available for:
- Amazon EKS
- Self-managed Kubernetes