Kubernetes management with Nix https://kubenix.org/
Find a file
2022-08-15 00:56:01 -04:00
.github/workflows only x86_64-linux 2022-04-02 14:41:57 -07:00
.vscode set vscode formatter to alejandra, format repo 2022-08-13 18:20:59 -04:00
docs set vscode formatter to alejandra, format repo 2022-08-13 18:20:59 -04:00
jobs fix nested job generators packages 2022-08-15 00:56:01 -04:00
lib statix fix 2022-04-02 13:43:57 -07:00
modules add missing kube version, move jobs to packages 2022-08-15 00:29:27 -04:00
pkgs init cli, add start of target docs 2022-08-12 09:44:00 -04:00
tests enable some tests 2022-04-02 16:12:17 -07:00
.envrc remove flake-compat and devshell inputs 2022-08-13 00:09:36 -04:00
.gitignore cleanup some misc files 2022-08-12 09:44:26 -04:00
CONTRIBUTING.md fix nested job generators packages 2022-08-15 00:56:01 -04:00
default.nix add missing kube version, move jobs to packages 2022-08-15 00:29:27 -04:00
flake.lock add missing kube version, move jobs to packages 2022-08-15 00:29:27 -04:00
flake.nix add missing kube version, move jobs to packages 2022-08-15 00:29:27 -04:00
LICENSE feat: add license 2019-03-07 23:30:20 +01:00
README.md fix nested job generators packages 2022-08-15 00:56:01 -04:00
treefmt.toml add treefmt 2022-04-02 15:40:44 -07:00
versions.nix add missing kube version, move jobs to packages 2022-08-15 00:29:27 -04:00

kubenix

Kubernetes resource management with Nix

nixos logo in kubernetes blue

WARN: this is a work in progress, expect breaking changes

Usage

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 ./docs/examples for more.

Attribution

This project was forked from https://github.com/GTrunSec/kubenix which was forked from https://github.com/xtruder/kubenix.

Logo is a mishmash of the Kubernetes wheel and the NixOs snowflake.