Fully migrate tclip to kubenix
All checks were successful
Lint / lint (push) Successful in 22s

This commit is contained in:
Gabriel Simmer 2023-10-19 14:31:30 +01:00
parent a351b391be
commit 4dfb6322f7
Signed by: arch
SSH key fingerprint: SHA256:m3OEcdtrnBpMX+2BDGh/byv3hrCekCLzDYMdvGEKPPQ
5 changed files with 42 additions and 121 deletions

View file

@ -56,7 +56,9 @@
packages.x86_64-linux = {
kubernetes = (kubenix.evalModules.x86_64-linux {
module = { kubenix, ... }: {
imports = [ kubenix.modules.k8s ./homelab/kubernetes.nix ];
imports = [
kubenix.modules.k8s ./homelab/kubernetes.nix
];
};
}).config.kubernetes.result;
};

17
homelab/custom.nix Normal file
View file

@ -0,0 +1,17 @@
{ lib, ... }: {
kubernetes.customTypes = [
{
name = "servicemonitors";
attrName = "servicemonitor";
group = "monitoring.coreos.com";
kind = "ServiceMonitor";
version = "v1";
module = {
options.endpoints = lib.mkOption {
description = "Endpoints";
type = lib.types.list;
};
};
}
];
}

View file

@ -1,4 +1,5 @@
{ config, kubenix, ... }: {
{ lib, config, kubenix, ... }: {
imports = [ kubenix.modules.k8s
(import ./custom.nix)
(import ./tclip.nix) ];
}

View file

@ -4,6 +4,26 @@ let
tclipImage = "git.gmem.ca/arch/tclip:arm";
in
{
kubernetes.resources."monitoring.coreos.com"."v1".ServiceMonitor.tclip = {
spec = {
selector.matchLabels.app = appName;
endpoints = [ { port = "metrics"; interval = "30s"; } ];
};
};
kubernetes.resources.services.tclip = {
metadata.annotations = {
"prometheus.io/port" = "9090";
"prometheus.io/scrape" = "true";
"prometheus.io/path" = "/metrics";
};
spec = {
selector.app = appName;
ports.metrics = {
port = 9090;
targetPort = 9090;
};
};
};
kubernetes.resources.statefulSets.tclip.spec = {
selector.matchLabels.app = appName;
serviceName = appName;

View file

@ -1,119 +0,0 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: tclip
spec:
selector:
matchLabels:
app: tclip
serviceName: tclip
replicas: 1
template:
metadata:
labels:
app: tclip
spec:
volumes:
- name: litestream
configMap:
name: tclip-litestream
- name: config
configMap:
name: tclip
initContainers:
- name: init-litestream
image: litestream/litestream:sha-749bc0d
args: ['restore', '-if-db-not-exists', '-if-replica-exists', '-v', '/data/data.db']
volumeMounts:
- name: data
mountPath: /data
- name: litestream
mountPath: /etc/litestream.yml
subPath: tclip.yml
envFrom:
- secretRef:
name: tclip-litestream-s3
containers:
- name: tclip
image: git.gmem.ca/arch/tclip:arm
imagePullPolicy: Always
resources:
limits:
memory: "128Mi"
cpu: "500m"
requests:
memory: "64Mi"
cpu: "100m"
envFrom:
- secretRef:
name: tclip
volumeMounts:
- name: data
mountPath: /data
env:
- name: DATA_DIR
value: /data
- name: USE_FUNNEL
value: "true"
- name: litestream
image: litestream/litestream:sha-749bc0d
args: ['replicate']
volumeMounts:
- name: data
mountPath: /data
- name: litestream
mountPath: /etc/litestream.yml
subPath: tclip.yml
envFrom:
- secretRef:
name: tclip-litestream-s3
ports:
- name: metrics
containerPort: 9090
resources:
limits:
memory: "128Mi"
cpu: "300m"
requests:
memory: "64Mi"
cpu: "100m"
volumeClaimTemplates:
- metadata:
name: data
spec:
storageClassName: nfs-client
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: tclip-metrics
annotations:
prometheus.io/port: "9090"
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
spec:
selector:
app: tclip
ports:
- port: 9090
targetPort: 9090
name: litestream-metrics
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: tclip
spec:
selector:
matchLabels:
app: tclip
endpoints:
- port: metrics
interval: 30s