Refactor:

- Support for module features
- Remove kubenix.module and rather use explicit modules
- Make tests framework independent of k8s module
- Remove metacontroller submodule, which will go to kubenix-modules
- Improved submodule propagation and passthru
- Added additional test for k8s-submodule
This commit is contained in:
Jaka Hudoklin 2019-03-12 20:33:56 +01:00
parent b670139906
commit 6183fcc190
No known key found for this signature in database
GPG key ID: 6A08896BFD32BD95
30 changed files with 513 additions and 508 deletions

View file

@ -1,4 +1,4 @@
{ config, lib, kubenix, ... }:
{ config, lib, kubenix, k8sVersion, ... }:
with lib;
@ -17,6 +17,8 @@ in {
}];
};
kubernetes.version = k8sVersion;
kubernetes.api.customresourcedefinitions.crontabs = {
metadata.name = "crontabs.stable.example.com";
spec = {

View file

@ -1,4 +1,4 @@
{ config, lib, kubenix, pkgs, ... }:
{ config, lib, kubenix, pkgs, k8sVersion, ... }:
with lib;
@ -22,6 +22,8 @@ in {
'';
};
kubernetes.version = k8sVersion;
kubernetes.api.customresourcedefinitions.crontabs = {
metadata.name = "crontabs.stable.example.com";
spec = {

View file

@ -1,4 +1,4 @@
{ config, lib, kubenix, ... }:
{ config, lib, kubenix, k8sVersion, ... }:
with lib;
@ -23,6 +23,8 @@ in {
}];
};
kubernetes.version = k8sVersion;
kubernetes.api.pods.pod1 = {};
kubernetes.api.pods.pod2 = {

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, kubenix, images, ... }:
{ config, lib, pkgs, kubenix, images, k8sVersion, ... }:
with lib;
@ -41,6 +41,8 @@ in {
docker.images.nginx.image = image;
kubernetes.version = k8sVersion;
kubernetes.api.deployments.nginx = {
spec = {
replicas = 10;

View file

@ -1,4 +1,4 @@
{ config, lib, kubenix, pkgs, ... }:
{ config, lib, kubenix, pkgs, k8sVersion, ... }:
with lib;
@ -20,6 +20,8 @@ in {
}];
};
kubernetes.version = k8sVersion;
kubernetes.api.customresourcedefinitions.crontabs = {
metadata.name = "crontabs.stable.example.com";
spec = {

View file

@ -1,4 +1,4 @@
{ config, kubenix, ... }:
{ config, kubenix, k8sVersion, ... }:
let
cfg = config.kubernetes.api.pods.nginx;
@ -17,5 +17,7 @@ in {
}];
};
kubernetes.version = k8sVersion;
kubernetes.api.pods.nginx = {};
}

56
tests/k8s/submodule.nix Normal file
View file

@ -0,0 +1,56 @@
{ name, config, lib, kubenix, images, ... }:
with lib;
let
cfg = config.submodules.instances.passthru;
in {
imports = with kubenix.modules; [ test submodules k8s docker ];
test = {
name = "k8s-submodule";
description = "Simple k8s submodule test";
assertions = [{
message = "Submodule has correct name set";
assertion = (head config.kubernetes.objects).metadata.name == "passthru";
} {
message = "Should expose docker image";
assertion = (head config.docker.export).imageName == "xtruder/nginx";
}];
};
kubenix.project = "test-release";
kubernetes.namespace = "test-namespace";
submodules.imports = [{
module = {name, config, ...}: {
imports = with kubenix.modules; [ submodule k8s docker ];
config = {
submodule.name = "test-submodule";
kubernetes.api.pods.nginx = {
metadata.name = name;
spec.containers.nginx.image = config.docker.images.nginx.path;
};
docker.images.nginx.image = images.nginx;
};
};
}];
kubernetes.api.defaults = [{
propagate = true;
default.metadata.labels.my-label = "my-value";
}];
submodules.instances.passthru = {
submodule = "test-submodule";
};
submodules.instances.no-passthru = {
submodule = "test-submodule";
passthru.enable = false;
};
}