49 lines
1.3 KiB
Nix
49 lines
1.3 KiB
Nix
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;
|
|
protocol = "HTTP";
|
|
};
|
|
};
|
|
in {
|
|
kubernetes.resources.services = builtins.mapAttrs (name: endpoint: {
|
|
spec = {
|
|
ports.${name} = {
|
|
port = endpoint.port;
|
|
targetPort = endpoint.port;
|
|
};
|
|
};
|
|
}) endpoints;
|
|
kubernetes.resources.endpoints = builtins.mapAttrs (name: endpoint: {
|
|
subsets = [ {
|
|
addresses = [ { ip = endpoint.location; } ];
|
|
ports = [ { name = name; port = endpoint.port; protocol = "TCP"; } ];
|
|
} ];
|
|
}) endpoints;
|
|
kubernetes.resources.ingresses = builtins.mapAttrs (name: endpoint: {
|
|
metadata = { name = name; annotations = {
|
|
"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;
|
|
}
|