mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 16:10:05 +01:00
feat(kubernetes): apply defaults to custom resources
This commit is contained in:
parent
208a80f036
commit
317123d5d8
2 changed files with 19 additions and 12 deletions
|
|
@ -249,10 +249,10 @@ let
|
||||||
default = {};
|
default = {};
|
||||||
}) exportedDefinitions;
|
}) exportedDefinitions;
|
||||||
|
|
||||||
customResourceOptions = mapAttrs (name: crd:
|
customResourceOptions = mapAttrs (groupName: crd:
|
||||||
mkOption {
|
mkOption {
|
||||||
description = "Custom resource for ${name}";
|
description = "Custom resource for ${name}";
|
||||||
type = types.attrsOf (types.submodule ({name, config, ...}: {
|
type = types.attrsOf (types.submodule ({name, ...}: {
|
||||||
options = {
|
options = {
|
||||||
apiVersion = mkOption {
|
apiVersion = mkOption {
|
||||||
description = "API version of custom resource";
|
description = "API version of custom resource";
|
||||||
|
|
@ -278,6 +278,10 @@ let
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
} // extraOptions;
|
} // extraOptions;
|
||||||
|
config = mkMerge (
|
||||||
|
config.kubernetes.defaults.${groupName} ++
|
||||||
|
config.kubernetes.defaults.all
|
||||||
|
);
|
||||||
}));
|
}));
|
||||||
default = {};
|
default = {};
|
||||||
}
|
}
|
||||||
|
|
@ -297,20 +301,25 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
versionOptions = {
|
versionOptions = {
|
||||||
"1.7" = (versionDefinitions."1.7").kubernetesResourceOptions // {
|
"1.7" = versionDefinitions."1.7" // {
|
||||||
# kubernetes 1.7 supports crd, but does not have swagger definitions for some reason
|
kubernetesResourceOptions = versionDefinitions."1.7".kubernetesResourceOptions // {
|
||||||
customResourceDefinitions =
|
# kubernetes 1.7 supports crd, but does not have swagger definitions for some reason
|
||||||
versionDefinitions."1.8".kubernetesResourceOptions.customResourceDefinitions;
|
customResourceDefinitions =
|
||||||
|
versionDefinitions."1.8".kubernetesResourceOptions.customResourceDefinitions;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
"1.8" = (versionDefinitions."1.8").kubernetesResourceOptions;
|
"1.8" = versionDefinitions."1.8";
|
||||||
"1.9" = (versionDefinitions."1.9").kubernetesResourceOptions;
|
"1.9" = versionDefinitions."1.9";
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultOptions = mapAttrs (name: value: mkOption {
|
defaultOptions = mapAttrs (name: value: mkOption {
|
||||||
description = "Kubernetes defaults for ${name} resources";
|
description = "Kubernetes defaults for ${name} resources";
|
||||||
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
|
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
|
||||||
default = [];
|
default = [];
|
||||||
}) versionOptions.${config.kubernetes.version};
|
}) (
|
||||||
|
(versionOptions.${config.kubernetes.version}.kubernetesResourceOptions) //
|
||||||
|
(versionOptions.${config.kubernetes.version}.customResourceOptions)
|
||||||
|
);
|
||||||
in {
|
in {
|
||||||
options.kubernetes.version = mkOption {
|
options.kubernetes.version = mkOption {
|
||||||
description = "Kubernetes version to deploy to";
|
description = "Kubernetes version to deploy to";
|
||||||
|
|
@ -320,7 +329,7 @@ in {
|
||||||
|
|
||||||
options.kubernetes.resources = mkOption {
|
options.kubernetes.resources = mkOption {
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = versionOptions.${config.kubernetes.version};
|
options = versionOptions.${config.kubernetes.version}.kubernetesResourceOptions;
|
||||||
};
|
};
|
||||||
description = "Attribute set of kubernetes resources";
|
description = "Attribute set of kubernetes resources";
|
||||||
default = {};
|
default = {};
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,5 @@ with lib;
|
||||||
kubernetes.defaultModuleConfiguration.nginx = {
|
kubernetes.defaultModuleConfiguration.nginx = {
|
||||||
kubernetes.defaults.deployments.spec.replicas = mkDefault 4;
|
kubernetes.defaults.deployments.spec.replicas = mkDefault 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
kubernetes.defaults.all.metadata.namespace = "test";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue