infra/homelab/endpoints.nix

91 lines
2 KiB
Nix
Raw Normal View History

2023-12-24 01:10:36 +00:00
let
endpoints = {
"proxmox" = {
location = "100.100.75.80";
host = "proxmox.gmem.ca";
port = 8006;
protocol = "HTTPS";
};
"austin" = {
location = "192.168.50.237";
host = "austin.gmem.ca";
port = 8080;
2024-02-05 13:13:44 +00:00
protocol = "HTTP";
2023-12-24 01:10:36 +00:00
};
2024-02-05 13:11:43 +00:00
"tokyo" = {
location = "192.168.50.124";
host = "tokyo.gmem.ca";
port = 8000;
2024-02-05 13:13:44 +00:00
protocol = "HTTP";
2024-02-05 13:11:43 +00:00
};
"ibiza" = {
location = "192.168.50.182";
host = "ibiza.gmem.ca";
port = 8000;
2024-02-05 13:13:44 +00:00
protocol = "HTTP";
2024-02-05 13:11:43 +00:00
};
2023-12-24 01:10:36 +00:00
};
in {
2024-02-05 13:13:44 +00:00
kubernetes.resources.services =
builtins.mapAttrs (name: endpoint: {
spec = {
ports.${name} = {
port = endpoint.port;
targetPort = endpoint.port;
};
2023-12-24 01:10:36 +00:00
};
2024-02-05 13:13:44 +00:00
})
endpoints;
kubernetes.resources.endpoints =
builtins.mapAttrs (name: endpoint: {
subsets = [
{
addresses = [{ip = endpoint.location;}];
ports = [
{
name = name;
port = endpoint.port;
protocol = "TCP";
}
];
2023-12-24 01:10:36 +00:00
}
2024-02-05 13:13:44 +00:00
];
})
endpoints;
kubernetes.resources.ingresses =
builtins.mapAttrs (name: endpoint: {
metadata = {
name = name;
annotations = {
"nginx.ingress.kubernetes.io/proxy-body-size" = "10g";
"cert-manager.io/issuer" = "le-issuer";
"nginx.ingress.kubernetes.io/backend-protocol" = endpoint.protocol;
};
};
spec = {
tls = [
{
hosts = [endpoint.host];
secretName = "gmem-ca-wildcard";
}
];
rules = [
{
host = endpoint.host;
http.paths = [
{
path = "/";
pathType = "Prefix";
backend.service = {
name = name;
port.number = endpoint.port;
};
}
];
}
];
};
})
endpoints;
2023-12-24 01:10:36 +00:00
}