159 lines
3.8 KiB
Nix
159 lines
3.8 KiB
Nix
let
|
|
appName = "soju";
|
|
sojuImage = "git.gmem.ca/arch/soju:latest";
|
|
gamjaImage = "git.gmem.ca/arch/gamja:latest";
|
|
in {
|
|
kubernetes.resources.services.soju = {
|
|
metadata.namespace = "irc";
|
|
spec = {
|
|
type = "NodePort";
|
|
selector.app = appName;
|
|
ports.tls = {
|
|
port = 6697;
|
|
targetPort = 6697;
|
|
nodePort = 6697;
|
|
};
|
|
};
|
|
};
|
|
kubernetes.resources.services.soju-ws = {
|
|
metadata.namespace = "irc";
|
|
spec = {
|
|
selector.app = appName;
|
|
ports.ws = {
|
|
port = 80;
|
|
targetPort = 80;
|
|
};
|
|
};
|
|
};
|
|
kubernetes.resources.services.gamja = {
|
|
metadata.namespace = "irc";
|
|
spec = {
|
|
selector.app = "gamja";
|
|
ports.http = {
|
|
port = 80;
|
|
targetPort = 80;
|
|
};
|
|
};
|
|
};
|
|
kubernetes.resources.deployments.soju = {
|
|
metadata.namespace = "irc";
|
|
spec = {
|
|
selector.matchLabels.app = appName;
|
|
template = {
|
|
metadata.labels.app = appName;
|
|
spec = {
|
|
volumes = {
|
|
config.configMap.name = "soju";
|
|
ssl.secret.secretName = "irc-gmem-ca";
|
|
};
|
|
containers = {
|
|
soju = {
|
|
image = sojuImage;
|
|
imagePullPolicy = "Always";
|
|
volumeMounts = [
|
|
{
|
|
name = "config";
|
|
mountPath = "/etc/soju/config";
|
|
subPath = "config";
|
|
}
|
|
{
|
|
name = "ssl";
|
|
mountPath = "/ssl";
|
|
}
|
|
];
|
|
ports.tls.containerPort = 6697;
|
|
ports.ws.containerPort = 80;
|
|
|
|
env.PGHOST.value = "192.168.50.236";
|
|
env.PGPASSWORD.valueFrom.secretKeyRef = {
|
|
name = "postgres-soju";
|
|
key = "password";
|
|
};
|
|
env.PGUSER.valueFrom.secretKeyRef = {
|
|
name = "postgres-soju";
|
|
key = "user";
|
|
};
|
|
env.PGDATABASE.valueFrom.secretKeyRef = {
|
|
name = "postgres-soju";
|
|
key = "dbname";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
kubernetes.resources.deployments.gamja = {
|
|
metadata.namespace = "irc";
|
|
spec = {
|
|
selector.matchLabels.app = "gamja";
|
|
template = {
|
|
metadata.labels.app = "gamja";
|
|
spec = {
|
|
containers = {
|
|
gamja = {
|
|
image = gamjaImage;
|
|
imagePullPolicy = "Always";
|
|
ports.http.containerPort = 80;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
kubernetes.resources.ingresses.irc = {
|
|
metadata.namespace = "irc";
|
|
metadata.annotations = {
|
|
"cert-manager.io/cluster-issuer" = "le-issuer";
|
|
"nginx.ingress.kubernetes.io/proxy-read-timeout" = "3600";
|
|
"nginx.ingress.kubernetes.io/proxy-send-timeout" = "3600";
|
|
};
|
|
spec = {
|
|
tls = [
|
|
{
|
|
hosts = ["irc.gmem.ca"];
|
|
}
|
|
];
|
|
rules = [
|
|
{
|
|
host = "irc.gmem.ca";
|
|
http.paths = [
|
|
{
|
|
path = "/";
|
|
pathType = "Prefix";
|
|
backend.service = {
|
|
name = "gamja";
|
|
port.number = 80;
|
|
};
|
|
}
|
|
{
|
|
path = "/socket";
|
|
pathType = "Prefix";
|
|
backend.service = {
|
|
name = "soju-ws";
|
|
port.number = 80;
|
|
};
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
kubernetes.resources.configMaps.soju = {
|
|
metadata.namespace = "irc";
|
|
data.config = ''
|
|
listen ircs://
|
|
listen unix+admin:///app/admin
|
|
listen ws+insecure://
|
|
listen http+prometheus://localhost:9090
|
|
hostname irc.gmem.ca
|
|
title irc.gmem.ca
|
|
db postgres "dbname=soju"
|
|
message-store db
|
|
tls /ssl/tls.crt /ssl/tls.key
|
|
'';
|
|
};
|
|
}
|