feat: implement k8s-submodules

This commit is contained in:
Jaka Hudoklin 2019-02-25 17:14:48 +01:00
parent 0abf88e0d5
commit ecf531aeb4
No known key found for this signature in database
GPG key ID: 6A08896BFD32BD95
3 changed files with 115 additions and 0 deletions

52
k8s/submodule.nix Normal file
View file

@ -0,0 +1,52 @@
{ config, lib, kubenix, ... }:
with lib;
let
globalConfig = config;
in {
imports = [ kubenix.submodules ];
options = {
kubernetes.propagateDefaults = mkOption {
description = "Whehter to propagate child defaults to submodules";
type = types.bool;
default = true;
};
submodules.instances = mkOption {
type = types.attrsOf (types.submodule ({config, ...}: {
options = {
namespace = mkOption {
description = "Default kubernetes namespace";
type = types.str;
default = "default";
};
};
config.config = {
kubernetes.api.defaults.all.metadata.namespace =
mkDefault config.namespace;
};
}));
};
};
config = {
submodules.defaults = mkMerge [{
imports = [ kubenix.k8s ];
kubernetes.version = mkDefault config.kubernetes.version;
kubernetes.api.defaults =
mkIf config.kubernetes.propagateDefaults config.kubernetes.api.defaults;
} ({config, ...}: {
kubernetes.api.defaults.all.metadata.labels = {
"kubenix/module-name" = config.submodule.name;
"kubenix/module-version" = config.submodule.version;
};
})];
kubernetes.objects = mkMerge (mapAttrsToList (_: submodule:
submodule.config.kubernetes.objects
) config.submodules.instances);
};
}