let appName = "whitelistmanager"; appImage = "git.gmem.ca/arch/whitelistmanager"; frontendImage = "git.gmem.ca/arch/whitelistmanager-frontend"; in { lib, config, kubenix, ... }: { kubernetes.resources.deployments.whitelistmanager = { metadata.namespace = "minecraft-invites"; spec = { selector.matchLabels.app = appName; template = { metadata.labels.app = appName; spec = { containers = { whitelistmanager = { image = appImage; envFrom = [{secretRef.name = "whitelistmanager";}]; resources = { requests = { cpu = "1m"; memory = "256Mi"; }; limits = { cpu = "1"; memory = "512Mi"; }; }; ports.http.containerPort = 8080; }; }; }; }; }; }; kubernetes.resources.deployments.whitelistmanager-frontend = { metadata.namespace = "minecraft-invites"; spec = { selector.matchLabels.app = appName + "-frontend"; template = { metadata.labels.app = appName + "-frontend"; spec = { containers = { whitelistmanager = { image = frontendImage; resources = { requests = { cpu = "1m"; memory = "256Mi"; }; limits = { cpu = "1"; memory = "512Mi"; }; }; ports.http.containerPort = 3000; }; }; }; }; }; }; kubernetes.resources.services.whitelistmanager = { metadata.namespace = "minecraft-invites"; metadata.labels.app = appName; spec = { selector.app = appName; ports.http = { port = 8080; targetPort = 8080; }; }; }; kubernetes.resources.services.whitelistmanager-frontend = { metadata.namespace = "minecraft-invites"; metadata.labels.app = appName + "-frontend"; spec = { selector.app = appName + "-frontend"; ports.http = { port = 3000; targetPort = 3000; }; }; }; kubernetes.resources.ingresses.whitelistmanager = { metadata.namespace = "minecraft-invites"; metadata.annotations = { "cert-manager.io/cluster-issuer" = "le-issuer"; }; spec = { tls = [ { hosts = ["minecraft-invites.gmem.ca"]; } ]; rules = [ { host = "minecraft-invites.gmem.ca"; http.paths = [ { path = "/"; pathType = "Prefix"; backend.service = { name = "whitelistmanager-frontend"; port.number = 3000; }; } { path = "/api"; pathType = "Prefix"; backend.service = { name = "whitelistmanager"; port.number = 8080; }; } ]; } ]; }; }; }