refactor: generate kubeadm host configs from flake
All checks were successful
Terraform Plan / Terraform Plan (push) Successful in 17s
All checks were successful
Terraform Plan / Terraform Plan (push) Successful in 17s
This commit is contained in:
@@ -12,6 +12,7 @@ This folder defines role-based NixOS configs for a kubeadm cluster.
|
|||||||
- Shared Kubernetes/node prerequisites in `modules/k8s-common.nix`
|
- Shared Kubernetes/node prerequisites in `modules/k8s-common.nix`
|
||||||
- Shared cluster defaults in `modules/k8s-cluster-settings.nix`
|
- Shared cluster defaults in `modules/k8s-cluster-settings.nix`
|
||||||
- Role-specific settings for control planes and workers
|
- Role-specific settings for control planes and workers
|
||||||
|
- Generated per-node host configs from `flake.nix` (no duplicated host files)
|
||||||
- Bootstrap helper commands:
|
- Bootstrap helper commands:
|
||||||
- `th-kubeadm-init`
|
- `th-kubeadm-init`
|
||||||
- `th-kubeadm-join-control-plane`
|
- `th-kubeadm-join-control-plane`
|
||||||
@@ -20,7 +21,7 @@ This folder defines role-based NixOS configs for a kubeadm cluster.
|
|||||||
|
|
||||||
## Hardware config files
|
## Hardware config files
|
||||||
|
|
||||||
Each host file optionally imports `hosts/hardware/<host>.nix` if present.
|
The flake automatically imports `hosts/hardware/<host>.nix` if present.
|
||||||
Copy each node's generated hardware config into this folder:
|
Copy each node's generated hardware config into this folder:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -8,19 +8,31 @@
|
|||||||
outputs = { nixpkgs, ... }:
|
outputs = { nixpkgs, ... }:
|
||||||
let
|
let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
mkHost = hostModules:
|
lib = nixpkgs.lib;
|
||||||
|
|
||||||
|
mkNode = { name, role }:
|
||||||
|
let
|
||||||
|
roleModule = if role == "control-plane" then ./modules/k8s-control-plane.nix else ./modules/k8s-worker.nix;
|
||||||
|
hardwarePath = ./hosts/hardware + "/${name}.nix";
|
||||||
|
in
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
inherit system;
|
inherit system;
|
||||||
modules = hostModules;
|
modules = [
|
||||||
|
./modules/k8s-cluster-settings.nix
|
||||||
|
./modules/k8s-common.nix
|
||||||
|
roleModule
|
||||||
|
({ lib, ... }: {
|
||||||
|
imports = lib.optional (builtins.pathExists hardwarePath) hardwarePath;
|
||||||
|
networking.hostName = name;
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
nixosConfigurations = {
|
nixosConfigurations = lib.genAttrs [ "cp-1" "cp-2" "cp-3" "wk-1" "wk-2" "wk-3" ] (name:
|
||||||
cp-1 = mkHost [ ./hosts/cp-1.nix ];
|
mkNode {
|
||||||
cp-2 = mkHost [ ./hosts/cp-2.nix ];
|
inherit name;
|
||||||
cp-3 = mkHost [ ./hosts/cp-3.nix ];
|
role = if lib.hasPrefix "cp-" name then "control-plane" else "worker";
|
||||||
wk-1 = mkHost [ ./hosts/wk-1.nix ];
|
});
|
||||||
wk-2 = mkHost [ ./hosts/wk-2.nix ];
|
|
||||||
wk-3 = mkHost [ ./hosts/wk-3.nix ];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../modules/k8s-cluster-settings.nix
|
|
||||||
../modules/k8s-common.nix
|
|
||||||
../modules/k8s-control-plane.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists ./hardware/cp-1.nix) ./hardware/cp-1.nix;
|
|
||||||
|
|
||||||
networking.hostName = "cp-1";
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../modules/k8s-cluster-settings.nix
|
|
||||||
../modules/k8s-common.nix
|
|
||||||
../modules/k8s-control-plane.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists ./hardware/cp-2.nix) ./hardware/cp-2.nix;
|
|
||||||
|
|
||||||
networking.hostName = "cp-2";
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../modules/k8s-cluster-settings.nix
|
|
||||||
../modules/k8s-common.nix
|
|
||||||
../modules/k8s-control-plane.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists ./hardware/cp-3.nix) ./hardware/cp-3.nix;
|
|
||||||
|
|
||||||
networking.hostName = "cp-3";
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../modules/k8s-cluster-settings.nix
|
|
||||||
../modules/k8s-common.nix
|
|
||||||
../modules/k8s-worker.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists ./hardware/wk-1.nix) ./hardware/wk-1.nix;
|
|
||||||
|
|
||||||
networking.hostName = "wk-1";
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../modules/k8s-cluster-settings.nix
|
|
||||||
../modules/k8s-common.nix
|
|
||||||
../modules/k8s-worker.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists ./hardware/wk-2.nix) ./hardware/wk-2.nix;
|
|
||||||
|
|
||||||
networking.hostName = "wk-2";
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../modules/k8s-cluster-settings.nix
|
|
||||||
../modules/k8s-common.nix
|
|
||||||
../modules/k8s-worker.nix
|
|
||||||
]
|
|
||||||
++ lib.optional (builtins.pathExists ./hardware/wk-3.nix) ./hardware/wk-3.nix;
|
|
||||||
|
|
||||||
networking.hostName = "wk-3";
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user