mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2026-02-02 09:25:10 +01:00
flake: format
This commit is contained in:
parent
eb3ec20f46
commit
baa1a6c949
16 changed files with 86 additions and 72 deletions
|
|
@ -1,8 +1,8 @@
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
kubenix.evalModules.${builtins.currentSystem} {
|
kubenix.evalModules.${builtins.currentSystem} {
|
||||||
module = { kubenix, ... }: {
|
module = {kubenix, ...}: {
|
||||||
# instead of defining everything inline, let's import it
|
# instead of defining everything inline, let's import it
|
||||||
imports = [ ./module.nix ];
|
imports = [./module.nix];
|
||||||
|
|
||||||
# annotate the generated resources with a project name
|
# annotate the generated resources with a project name
|
||||||
kubenix.project = "example";
|
kubenix.project = "example";
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{ kubenix, ... }: {
|
{kubenix, ...}: {
|
||||||
imports = [ kubenix.modules.k8s ];
|
imports = [kubenix.modules.k8s];
|
||||||
|
|
||||||
kubernetes.resources = {
|
kubernetes.resources = {
|
||||||
deployments.nginx.spec = {
|
deployments.nginx.spec = {
|
||||||
|
|
@ -51,10 +51,12 @@
|
||||||
|
|
||||||
services.nginx.spec = {
|
services.nginx.spec = {
|
||||||
selector.app = "nginx";
|
selector.app = "nginx";
|
||||||
ports = [{
|
ports = [
|
||||||
|
{
|
||||||
name = "http";
|
name = "http";
|
||||||
port = 80;
|
port = 80;
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
kubenix.evalModules.${builtins.currentSystem} {
|
kubenix.evalModules.${builtins.currentSystem} {
|
||||||
module = { kubenix, ... }: {
|
module = {kubenix, ...}: {
|
||||||
imports = [ kubenix.modules.helm ];
|
imports = [kubenix.modules.helm];
|
||||||
kubernetes.helm.releases.example = {
|
kubernetes.helm.releases.example = {
|
||||||
chart = kubenix.lib.helm.fetch {
|
chart = kubenix.lib.helm.fetch {
|
||||||
repo = "https://charts.bitnami.com/bitnami";
|
repo = "https://charts.bitnami.com/bitnami";
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,15 @@
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
kubenix.evalModules.${builtins.currentSystem} {
|
kubenix.evalModules.${builtins.currentSystem} {
|
||||||
module = { kubenix, config, pkgs, ... }: {
|
module = {
|
||||||
imports = with kubenix.modules; [ k8s docker ];
|
kubenix,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = with kubenix.modules; [k8s docker];
|
||||||
docker = {
|
docker = {
|
||||||
registry.url = "docker.somewhere.io";
|
registry.url = "docker.somewhere.io";
|
||||||
images.example.image = pkgs.callPackage ./image.nix { };
|
images.example.image = pkgs.callPackage ./image.nix {};
|
||||||
};
|
};
|
||||||
kubernetes.resources.pods.example.spec.containers = {
|
kubernetes.resources.pods.example.spec.containers = {
|
||||||
custom.image = config.docker.images.example.path;
|
custom.image = config.docker.images.example.path;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
{ dockerTools, nginx }:
|
{
|
||||||
|
dockerTools,
|
||||||
|
nginx,
|
||||||
|
}:
|
||||||
dockerTools.buildLayeredImage {
|
dockerTools.buildLayeredImage {
|
||||||
name = "nginx";
|
name = "nginx";
|
||||||
contents = [ nginx ];
|
contents = [nginx];
|
||||||
extraCommands = ''
|
extraCommands = ''
|
||||||
mkdir -p etc
|
mkdir -p etc
|
||||||
chmod u+w etc
|
chmod u+w etc
|
||||||
|
|
@ -9,9 +12,9 @@ dockerTools.buildLayeredImage {
|
||||||
echo "nginx:x:1000:nginx" > etc/group
|
echo "nginx:x:1000:nginx" > etc/group
|
||||||
'';
|
'';
|
||||||
config = {
|
config = {
|
||||||
Cmd = [ "nginx" "-c" "/etc/nginx/nginx.conf" ];
|
Cmd = ["nginx" "-c" "/etc/nginx/nginx.conf"];
|
||||||
ExposedPorts = {
|
ExposedPorts = {
|
||||||
"80/tcp" = { };
|
"80/tcp" = {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
kubenix.evalModules.${builtins.currentSystem} {
|
kubenix.evalModules.${builtins.currentSystem} {
|
||||||
module = { kubenix, ... }: {
|
module = {kubenix, ...}: {
|
||||||
imports = [ ./module.nix ];
|
imports = [./module.nix];
|
||||||
|
|
||||||
kubenix.project = "multi-namespace-example";
|
kubenix.project = "multi-namespace-example";
|
||||||
kubernetes.version = "1.24";
|
kubernetes.version = "1.24";
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,9 @@
|
||||||
|
|
||||||
kubernetes = lib.mkMerge [
|
kubernetes = lib.mkMerge [
|
||||||
# Use instance name as namespace
|
# Use instance name as namespace
|
||||||
{ namespace = name; }
|
{namespace = name;}
|
||||||
# Create namespace object
|
# Create namespace object
|
||||||
{ resources.namespaces.${name} = {}; }
|
{resources.namespaces.${name} = {};}
|
||||||
# All resources defined here will use the above namespace
|
# All resources defined here will use the above namespace
|
||||||
args.kubernetes
|
args.kubernetes
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
# let's creata a function whose only input is the kubenix package
|
# let's creata a function whose only input is the kubenix package
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
# evalModules is our main entrypoint
|
# evalModules is our main entrypoint
|
||||||
kubenix.evalModules.${builtins.currentSystem} {
|
kubenix.evalModules.${builtins.currentSystem} {
|
||||||
# to it, we pass a module that accepts a (different) kubenix object
|
# to it, we pass a module that accepts a (different) kubenix object
|
||||||
module = { kubenix, ... }: {
|
module = {kubenix, ...}: {
|
||||||
# in order to define options, we need to import their definitions
|
# in order to define options, we need to import their definitions
|
||||||
imports = [ kubenix.modules.k8s ];
|
imports = [kubenix.modules.k8s];
|
||||||
# now we have full access to define Kubernetes resources
|
# now we have full access to define Kubernetes resources
|
||||||
kubernetes.resources.pods = {
|
kubernetes.resources.pods = {
|
||||||
# "example" is the name of our pod
|
# "example" is the name of our pod
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
kubenix.evalModules.${builtins.currentSystem} {
|
kubenix.evalModules.${builtins.currentSystem} {
|
||||||
module = { kubenix, ... }: {
|
module = {kubenix, ...}: {
|
||||||
imports = [ kubenix.modules.k8s ];
|
imports = [kubenix.modules.k8s];
|
||||||
kubernetes.resources.secrets.example.stringData = {
|
kubernetes.resources.secrets.example.stringData = {
|
||||||
password = "ref+file:///path/to/secret";
|
password = "ref+file:///path/to/secret";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
{ kubenix ? import ../../../.. }:
|
{kubenix ? import ../../../..}:
|
||||||
kubenix.evalModules.x86_64-linux {
|
kubenix.evalModules.x86_64-linux {
|
||||||
module = { kubenix, ... }: {
|
module = {kubenix, ...}: {
|
||||||
imports = [ kubenix.modules.testing ];
|
imports = [kubenix.modules.testing];
|
||||||
testing = {
|
testing = {
|
||||||
tests = [ ./test.nix ];
|
tests = [./test.nix];
|
||||||
common = [{
|
common = [
|
||||||
features = [ "k8s" ];
|
{
|
||||||
|
features = ["k8s"];
|
||||||
options = {
|
options = {
|
||||||
kubernetes.version = "1.24";
|
kubernetes.version = "1.24";
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
{ kubenix, test, ... }: {
|
{
|
||||||
imports = [ kubenix.modules.test ];
|
kubenix,
|
||||||
|
test,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [kubenix.modules.test];
|
||||||
|
|
||||||
test = {
|
test = {
|
||||||
name = "example";
|
name = "example";
|
||||||
|
|
|
||||||
12
flake.nix
12
flake.nix
|
|
@ -13,19 +13,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = inputs @ {self, ...}:
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
...
|
|
||||||
} @ inputs:
|
|
||||||
(inputs.flake-utils.lib.eachDefaultSystem (
|
(inputs.flake-utils.lib.eachDefaultSystem (
|
||||||
system: let
|
system: let
|
||||||
pkgs = import inputs.nixpkgs {
|
pkgs = import inputs.nixpkgs {
|
||||||
overlays = [
|
|
||||||
self.overlays.default
|
|
||||||
];
|
|
||||||
config.allowUnsupportedSystem = true;
|
|
||||||
inherit system;
|
inherit system;
|
||||||
|
overlays = [self.overlays.default];
|
||||||
|
config.allowUnsupportedSystem = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib;
|
||||||
|
|
|
||||||
|
|
@ -170,15 +170,19 @@ with lib; let
|
||||||
else
|
else
|
||||||
# make it an attribute set of submodules if only x-kubernetes-patch-merge-key is present, or
|
# make it an attribute set of submodules if only x-kubernetes-patch-merge-key is present, or
|
||||||
# x-kubernetes-patch-merge-key == x-kubernetes-list-map-keys.
|
# x-kubernetes-patch-merge-key == x-kubernetes-list-map-keys.
|
||||||
if hasAttr "properties" swagger.definitions.${refDefinition property.items} &&
|
if
|
||||||
hasAttr "name" swagger.definitions.${refDefinition property.items}.properties
|
hasAttr "properties" swagger.definitions.${refDefinition property.items}
|
||||||
|
&& hasAttr "name" swagger.definitions.${refDefinition property.items}.properties
|
||||||
then let
|
then let
|
||||||
mergeKey = "name";
|
mergeKey = "name";
|
||||||
in {
|
in {
|
||||||
type = requiredOrNot (coerceAttrsOfSubmodulesToListByKey (refDefinition property.items) mergeKey (if hasAttr "x-kubernetes-list-map-keys" property then property."x-kubernetes-list-map-keys" else []));
|
type = requiredOrNot (coerceAttrsOfSubmodulesToListByKey (refDefinition property.items) mergeKey (
|
||||||
|
if hasAttr "x-kubernetes-list-map-keys" property
|
||||||
|
then property."x-kubernetes-list-map-keys"
|
||||||
|
else []
|
||||||
|
));
|
||||||
apply = attrsToList;
|
apply = attrsToList;
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
type =
|
type =
|
||||||
if (refDefinition property.items) == _name
|
if (refDefinition property.items) == _name
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ with lib;
|
||||||
# kubernetes version to template chart for
|
# kubernetes version to template chart for
|
||||||
kubeVersion ? null,
|
kubeVersion ? null,
|
||||||
# whether to include CRD
|
# whether to include CRD
|
||||||
includeCRDs ? false
|
includeCRDs ? false,
|
||||||
}: let
|
}: let
|
||||||
valuesJsonFile = builtins.toFile "${name}-values.json" (builtins.toJSON values);
|
valuesJsonFile = builtins.toFile "${name}-values.json" (builtins.toJSON values);
|
||||||
in
|
in
|
||||||
|
|
@ -31,7 +31,7 @@ with lib;
|
||||||
${optionalString (kubeVersion != null) "--kube-version ${kubeVersion}"} \
|
${optionalString (kubeVersion != null) "--kube-version ${kubeVersion}"} \
|
||||||
${optionalString (namespace != null) "--namespace ${namespace}"} \
|
${optionalString (namespace != null) "--namespace ${namespace}"} \
|
||||||
${optionalString (values != {}) "-f ${valuesJsonFile}"} \
|
${optionalString (values != {}) "-f ${valuesJsonFile}"} \
|
||||||
${optionalString (includeCRDs) "--include-crds"} \
|
${optionalString includeCRDs "--include-crds"} \
|
||||||
${chart} >resources.yaml
|
${chart} >resources.yaml
|
||||||
|
|
||||||
# split multy yaml file into multiple files
|
# split multy yaml file into multiple files
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue