mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 16:10:05 +01:00
Initial refactoring for kubenix 2.0
Implemented features: - Improved and reimplemented submodule system, independent of kubernetes module definitions - Pre-generated kubernetes module definitions with explicit API versioning support
This commit is contained in:
parent
7287c4ed9e
commit
3dc1e615c4
20 changed files with 207916 additions and 751 deletions
147
release.nix
Normal file
147
release.nix
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
{pkgs ? import <nixpkgs> {}}:
|
||||
|
||||
let
|
||||
generate = path: import ./k8s/generator.nix {
|
||||
inherit pkgs;
|
||||
inherit (pkgs) lib;
|
||||
inherit path;
|
||||
};
|
||||
|
||||
kubenix = import ./. { inherit pkgs; };
|
||||
in {
|
||||
generate = pkgs.linkFarm "k8s-generated.nix" [{
|
||||
name = "v1.7.nix";
|
||||
path = generate ./k8s/specs/1.7/swagger.json;
|
||||
} {
|
||||
name = "v1.8.nix";
|
||||
path = generate ./k8s/specs/1.8/swagger.json;
|
||||
} {
|
||||
name = "v1.9.nix";
|
||||
path = generate ./k8s/specs/1.9/swagger.json;
|
||||
} {
|
||||
name = "v1.10.nix";
|
||||
path = generate ./k8s/specs/1.10/swagger.json;
|
||||
}];
|
||||
|
||||
test = kubenix.buildResources ({lib, config, kubenix, ...}: with lib; {
|
||||
imports = [
|
||||
kubenix.k8s
|
||||
kubenix.submodules
|
||||
];
|
||||
|
||||
config = {
|
||||
kubernetes.version = "1.10";
|
||||
|
||||
kubernetes.api.defaults.all.metadata.namespace = mkDefault "my-namespace";
|
||||
|
||||
submodules.defaults = {config, parentConfig, ...}: {
|
||||
kubernetes = mkIf (hasAttr "kubernetes" config) {
|
||||
version = mkDefault parentConfig.kubernetes.version;
|
||||
api.defaults = mkDefault parentConfig.kubernetes.api.defaults;
|
||||
};
|
||||
};
|
||||
|
||||
submodules.imports = [
|
||||
# import nginx submodule
|
||||
./examples/module/nginx.nix
|
||||
|
||||
# import of patched nginx submodule
|
||||
{
|
||||
modules = [./examples/module/nginx.nix ({config, ...}: {
|
||||
config = {
|
||||
submodule.version = mkForce "1.0-xtruder";
|
||||
args.image = "xtruder/nginx";
|
||||
|
||||
submodules.instances.test2 = {
|
||||
submodule = "test";
|
||||
};
|
||||
|
||||
kubernetes.objects = config.submodules.instances.test2.config.kubernetes.objects;
|
||||
};
|
||||
})];
|
||||
}
|
||||
|
||||
# definition of test submodule
|
||||
{
|
||||
module = {submodule, ...}: {
|
||||
submodule.name = "test";
|
||||
|
||||
imports = [
|
||||
kubenix.k8s
|
||||
];
|
||||
|
||||
kubernetes.api.Pod.my-pod = {
|
||||
metadata.name = submodule.name;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
submodules.instances.nginx-default = {
|
||||
submodule = "nginx";
|
||||
};
|
||||
|
||||
submodules.instances.nginx-xtruder = {
|
||||
submodule = "nginx";
|
||||
version = "1.0-xtruder";
|
||||
|
||||
config = {
|
||||
args.replicas = 9;
|
||||
kubernetes.api.Deployment.nginx.metadata.namespace = "other-namespace";
|
||||
};
|
||||
};
|
||||
|
||||
submodules.instances.test = {
|
||||
submodule = "test";
|
||||
};
|
||||
|
||||
#kubernetes.api."cloud.google.com".v1beta1.BackendConfig.my-backend = {
|
||||
#};
|
||||
|
||||
#modules.nginx1 = {
|
||||
#args = {
|
||||
#replicas = 2;
|
||||
#};
|
||||
|
||||
#kubernetes.api.defaults.deployments = {
|
||||
#spec.replicas = mkForce 3;
|
||||
#};
|
||||
|
||||
#kubernetes.customResources = [{
|
||||
#group = "cloud.google.com";
|
||||
#version = "v1beta1";
|
||||
#kind = "BackendConfig";
|
||||
#plural = "backendconfigs";
|
||||
#description = "Custom resource";
|
||||
#module = {
|
||||
#options.spec = {
|
||||
#cdn = mkOption {
|
||||
#description = "My cdn";
|
||||
#type = types.str;
|
||||
#default = "test";
|
||||
#};
|
||||
#};
|
||||
#};
|
||||
#}];
|
||||
#};
|
||||
|
||||
#modules.nginx2 = {
|
||||
#args = {
|
||||
#replicas = 2;
|
||||
#};
|
||||
|
||||
#kubernetes.api.defaults.deployments = {
|
||||
#spec.replicas = mkForce 3;
|
||||
#};
|
||||
#};
|
||||
|
||||
kubernetes.objects = mkMerge [
|
||||
config.submodules.instances.nginx-default.config.kubernetes.objects
|
||||
config.submodules.instances.nginx-xtruder.config.kubernetes.objects
|
||||
config.submodules.instances.test.config.kubernetes.objects
|
||||
];
|
||||
|
||||
#kubernetes.customResources = config.modules.nginx1.kubernetes.customResources;
|
||||
};
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue