mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 16:10:05 +01:00
fix(modules): fix customResources
This commit is contained in:
parent
3eb8bc0731
commit
d582830627
4 changed files with 56 additions and 20 deletions
|
|
@ -8,7 +8,7 @@ with import ./lib.nix { inherit pkgs; inherit (pkgs) lib; };
|
|||
let
|
||||
evalKubernetesModules = configuration: evalModules rec {
|
||||
modules = [
|
||||
(import ./kubernetes.nix {})
|
||||
./kubernetes.nix
|
||||
./modules.nix configuration
|
||||
];
|
||||
args = {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
{ customResourceDefinitions ? null }:
|
||||
|
||||
{ config, lib, k8s, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
|
@ -251,7 +249,7 @@ let
|
|||
|
||||
customResourceOptions = mapAttrs (groupName: crd:
|
||||
mkOption {
|
||||
description = "Custom resource for ${name}";
|
||||
description = "Custom resource for ${groupName}";
|
||||
type = types.attrsOf (types.submodule ({name, ...}: {
|
||||
options = {
|
||||
apiVersion = mkOption {
|
||||
|
|
@ -285,11 +283,7 @@ let
|
|||
}));
|
||||
default = {};
|
||||
}
|
||||
) (
|
||||
if customResourceDefinitions == null
|
||||
then config.kubernetes.resources.customResourceDefinitions
|
||||
else customResourceDefinitions
|
||||
);
|
||||
) config.kubernetes.resources.customResourceDefinitions;
|
||||
in {
|
||||
inherit swaggerDefinitions definitions exportedDefinitions kubernetesResourceOptions customResourceOptions;
|
||||
};
|
||||
|
|
|
|||
12
modules.nix
12
modules.nix
|
|
@ -54,10 +54,7 @@ let
|
|||
_module.args.name = module.name;
|
||||
_module.args.module = module;
|
||||
}
|
||||
(import ./kubernetes.nix {
|
||||
customResourceDefinitions =
|
||||
config.kubernetes.resources.customResourceDefinitions;
|
||||
})
|
||||
./kubernetes.nix
|
||||
./modules.nix
|
||||
(moduleDefinition.module)
|
||||
{
|
||||
|
|
@ -72,6 +69,11 @@ let
|
|||
mapAttrs' (name: resource: nameValuePair "${serviceName}-${name}" resource) resources
|
||||
) resources;
|
||||
|
||||
prefixGroupResources = resources: serviceName:
|
||||
mapAttrs' (groupName: resources:
|
||||
nameValuePair "${serviceName}-${groupName}" resources
|
||||
) resources;
|
||||
|
||||
defaultModuleConfigurationOptions = mapAttrs (name: moduleDefinition: mkOption {
|
||||
description = "Module default configuration for ${name} module";
|
||||
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
|
||||
|
|
@ -153,7 +155,7 @@ in {
|
|||
|
||||
kubernetes.customResources = mkMerge (
|
||||
mapAttrsToList (name: module:
|
||||
prefixResources (moduleToAttrs module.configuration.kubernetes.customResources) module.name
|
||||
prefixGroupResources (moduleToAttrs module.configuration.kubernetes.customResources) module.name
|
||||
) config.kubernetes.modules
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{lib, k8s, ...}:
|
||||
{lib, k8s, config, ...}:
|
||||
|
||||
with k8s;
|
||||
with lib;
|
||||
|
|
@ -40,11 +40,6 @@ with lib;
|
|||
metadata.name = mkForce "${name}-nginx";
|
||||
}
|
||||
];
|
||||
|
||||
kubernetes.customResources.cron.my-awesome-cron-object = mkMerge [
|
||||
(k8s.loadJSON ./cr.json)
|
||||
{metadata.name = name;}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -52,15 +47,60 @@ with lib;
|
|||
module = "nginx";
|
||||
configuration.password.name = "test2";
|
||||
configuration.password.key = "password";
|
||||
|
||||
configuration.kubernetes.resources.customResourceDefinitions.secret-claims = {
|
||||
kind = "CustomResourceDefinition";
|
||||
apiVersion = "apiextensions.k8s.io/v1beta1";
|
||||
metadata.name = "secretclaims.vaultproject.io";
|
||||
spec = {
|
||||
group = "vaultproject.io";
|
||||
version = "v1";
|
||||
scope = "Namespaced";
|
||||
names = {
|
||||
plural = "secretclaims";
|
||||
kind = "SecretClaim";
|
||||
shortNames = ["scl"];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
configuration.kubernetes.customResources.secret-claims.claim = {
|
||||
metadata.name = "test";
|
||||
};
|
||||
|
||||
};
|
||||
kubernetes.modules.app-v2 = {
|
||||
module = "nginx";
|
||||
configuration.port = 8080;
|
||||
|
||||
configuration.kubernetes.modules.subsubmodule = {
|
||||
module = "nginx";
|
||||
configuration.kubernetes.resources.customResourceDefinitions.secret-claims = {
|
||||
kind = "CustomResourceDefinition";
|
||||
apiVersion = "apiextensions.k8s.io/v1beta1";
|
||||
metadata.name = "secretclaims.vaultproject.io";
|
||||
spec = {
|
||||
group = "vaultproject.io";
|
||||
version = "v1";
|
||||
scope = "Namespaced";
|
||||
names = {
|
||||
plural = "secretclaims";
|
||||
kind = "SecretClaim";
|
||||
shortNames = ["scl"];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
configuration.kubernetes.customResources.secret-claims.claim = {
|
||||
metadata.name = "test";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
kubernetes.resources.services.nginx = loadJSON ./service.json;
|
||||
|
||||
kubernetes.defaultModuleConfiguration.all = {
|
||||
config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions;
|
||||
config.kubernetes.defaults.deployments.spec.replicas = 3;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue