feat: new k3s cluster

This commit is contained in:
Ryan Yin
2024-02-18 13:49:28 +08:00
parent 1a3b02a062
commit c19184a6be
27 changed files with 508 additions and 68 deletions

View File

@@ -80,6 +80,38 @@ in {
idol_kana_modules
{host_tags = idol_kana_tags;}
]);
k3s_prod_1_master_1 = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
k3s_prod_1_master_1_modules
{host_tags = k3s_prod_1_master_1_tags;}
]);
k3s_prod_1_master_2 = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
k3s_prod_1_master_2_modules
{host_tags = k3s_prod_1_master_2_tags;}
]);
k3s_prod_1_master_3 = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
k3s_prod_1_master_3_modules
{host_tags = k3s_prod_1_master_3_tags;}
]);
k3s_prod_1_worker_1 = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
k3s_prod_1_worker_1_modules
{host_tags = k3s_prod_1_worker_1_tags;}
]);
k3s_prod_1_worker_2 = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
k3s_prod_1_worker_2_modules
{host_tags = k3s_prod_1_worker_2_tags;}
]);
k3s_prod_1_worker_3 = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
k3s_prod_1_worker_3_modules
{host_tags = k3s_prod_1_worker_3_tags;}
]);
tailscale_gw = colmenaSystem (attrs.mergeAttrsList [
x64_base_args
homelab_tailscale_gw_modules

View File

@@ -24,6 +24,13 @@ in {
ruby = nixosSystem (idol_ruby_modules // base_args);
kana = nixosSystem (idol_kana_modules // base_args);
k3s_prod_1_master_1 = nixosSystem (k3s_prod_1_master_1_modules // base_args);
k3s_prod_1_master_2 = nixosSystem (k3s_prod_1_master_2_modules // base_args);
k3s_prod_1_master_3 = nixosSystem (k3s_prod_1_master_3_modules // base_args);
k3s_prod_1_worker_1 = nixosSystem (k3s_prod_1_worker_1_modules // base_args);
k3s_prod_1_worker_2 = nixosSystem (k3s_prod_1_worker_2_modules // base_args);
k3s_prod_1_worker_3 = nixosSystem (k3s_prod_1_worker_3_modules // base_args);
tailscale_gw = nixosSystem (homelab_tailscale_gw_modules // base_args);
};
@@ -47,6 +54,13 @@ in {
"ruby"
"kana"
"k3s_prod_1_master_1"
"k3s_prod_1_master_2"
"k3s_prod_1_master_3"
"k3s_prod_1_worker_1"
"k3s_prod_1_worker_2"
"k3s_prod_1_worker_3"
"tailscale_gw"
]
# generate proxmox image for virtual machines without desktop environment

View File

@@ -15,7 +15,14 @@ let
../modules/nixos/server/server.nix
../modules/nixos/server/proxmox-hardware-configuration.nix
];
# home-module.imports = [];
};
kube_base_modules = {
nixos-modules = [
../secrets/nixos.nix
../modules/nixos/server/server.nix
../modules/nixos/server/proxmox-hardware-configuration.nix
{modules.secrets.server.kubernetes.enable = true;}
];
};
in {
# --- Desktop Systems --- #
@@ -106,7 +113,64 @@ in {
++ pve_base_modules.nixos-modules;
# home-module.imports = [];
};
homelab_tailscale_gw_tags = ["tailscale_gw" "network" "homelab"];
homelab_tailscale_gw_tags = ["tailscale-gw" "network" "homelab"];
# --- Kubernetes Nodes --- #
k3s_prod_1_master_1_modules = {
nixos-modules =
[
../hosts/k8s/k3s_prod_1_master_1
]
++ kube_base_modules.nixos-modules;
# home-module.imports = [];
};
k3s_prod_1_master_1_tags = ["k8s" "master" "prod"];
k3s_prod_1_master_2_modules = {
nixos-modules =
[
../hosts/k8s/k3s_prod_1_master_2
]
++ kube_base_modules.nixos-modules;
};
k3s_prod_1_master_2_tags = ["k8s" "master" "prod"];
k3s_prod_1_master_3_modules = {
nixos-modules =
[
../hosts/k8s/k3s_prod_1_master_3
]
++ kube_base_modules.nixos-modules;
};
k3s_prod_1_master_3_tags = ["k8s" "master" "prod"];
k3s_prod_1_worker_1_modules = {
nixos-modules =
[
../hosts/k8s/k3s_prod_1_worker_1
]
++ kube_base_modules.nixos-modules;
};
k3s_prod_1_worker_1_tags = ["k8s" "worker" "prod"];
k3s_prod_1_worker_2_modules = {
nixos-modules =
[
../hosts/k8s/k3s_prod_1_worker_2
]
++ kube_base_modules.nixos-modules;
};
k3s_prod_1_worker_2_tags = ["k8s" "worker" "prod"];
k3s_prod_1_worker_3_modules = {
nixos-modules =
[
../hosts/k8s/k3s_prod_1_worker_3
]
++ kube_base_modules.nixos-modules;
};
k3s_prod_1_worker_3_tags = ["k8s" "worker" "prod"];
# --- RISC-V / AARCH64 Systems --- #

View File

@@ -1,49 +1,32 @@
{lib, ...}: rec {
defaultGateway = "192.168.5.101";
mainGateway = "192.168.5.1"; # main router
defaultGateway = "192.168.5.101"; # subrouter with a transparent proxy
nameservers = [
"119.29.29.29" # DNSPod
"223.5.5.5" # AliDNS
];
prefixLength = 24;
hostAddress = {
"ai" = {
inherit prefixLength;
address = "192.168.5.100";
hostAddress =
lib.attrsets.mapAttrs
(name: address: {inherit prefixLength address;})
{
"ai" = "192.168.5.100";
"aquamarine" = "192.168.5.101";
"ruby" = "192.168.5.102";
"kana" = "192.168.5.103";
"nozomi" = "192.168.5.104";
"yukina" = "192.168.5.105";
"chiaya" = "192.168.5.106";
"suzu" = "192.168.5.107";
"k3s-prod-1-master-1" = "192.168.5.108";
"k3s-prod-1-master-2" = "192.168.5.109";
"k3s-prod-1-master-3" = "192.168.5.110";
"k3s-prod-1-worker-1" = "192.168.5.111";
"k3s-prod-1-worker-2" = "192.168.5.112";
"k3s-prod-1-worker-3" = "192.168.5.113";
"tailscale-gw" = "192.168.5.192";
};
"aquamarine" = {
inherit prefixLength;
address = "192.168.5.101";
};
"ruby" = {
inherit prefixLength;
address = "192.168.5.102";
};
"kana" = {
inherit prefixLength;
address = "192.168.5.103";
};
"nozomi" = {
inherit prefixLength;
address = "192.168.5.104";
};
"yukina" = {
inherit prefixLength;
address = "192.168.5.105";
};
"chiaya" = {
inherit prefixLength;
address = "192.168.5.106";
};
"suzu" = {
inherit prefixLength;
address = "192.168.5.107";
};
"tailscale_gw" = {
inherit prefixLength;
address = "192.168.5.192";
};
};
ssh = {
# define the host alias for remote builders