Kubernetes management with Nix
WARN: this is a work in progress, expect breaking changes
A minimal example flake (build with nix build
):
{
inputs.kubenix.url = "github:hall/kubenix";
outputs = {self, kubenix, ... }@inputs: let
system = "x86_64-linux";
in {
packages.${system}.default = (kubenix.evalModules.${system} {
module = { kubenix, ... }: {
imports = with kubenix.modules; [k8s];
kubernetes.resources.pods.example.spec.containers.nginx.image = "nginx";
};
}).config.kubernetes.result;
};
}
Or, if you're not using flakes, a default.nix
file (build with nix-build
):
{ kubenix ? import (builtins.fetchGit {
url = "https://github.com/hall/kubenix.git";
rev = "aa734afc9cf7a5146a7a9d93fd534e81572c8122";
}) }:
(kubenix.evalModules.x86_64-linux {
module = {kubenix, ... }: {
imports = with kubenix.modules; [k8s];
kubernetes.resources.pods.example.spec.containers.nginx.image = "nginx";
};
}).config.kubernetes.result
Either way the JSON manifests will be written to ./result
.
See the examples for more.
NOTE: this is a WIP CLI which currently reads the
k8s
package on a local flake
Render all resources with
nix run github:hall/kubenix -- render
HINT: use
--help
for more commands
The following table gives a general overview of currently supported/planned functionality.
kubectl | kustomize | helm | helmfile | |
---|---|---|---|---|
render | x | x1 | ||
diff | x | x | ||
apply2 | x | x |
This project was forked from GTrunSec, which was forked from xtruder, with commits incorporated from blaggacao.
Logo is a mishmash of the Kubernetes wheel and the NixOs snowflake.