Compare commits

..

10 commits

Author SHA1 Message Date
red
bc9ab668ce fix name 2025-07-13 23:34:50 -04:00
red
09cfae8682 update pleroma pvc 2025-07-13 23:19:57 -04:00
red
d4fafa70fb update postgres pvcs 2025-07-13 23:19:48 -04:00
red
ce09636223 remove old job 2025-07-13 23:04:55 -04:00
red
8fe7e207fa configure grafana dashboard upload 2025-07-13 23:00:49 -04:00
red
5b7bf44d1e grafana 2025-07-13 22:53:18 -04:00
red
c182edd12c remove old pvc 2025-07-13 22:53:12 -04:00
red
965e4454f1 update prometheus config 2025-07-13 22:05:25 -04:00
red
e2cf25d255 add prometheus to deploy pipeline 2025-07-13 22:03:34 -04:00
red
242b70eb21 enable prometheus ports, configure prometheus server 2025-07-13 21:50:33 -04:00
18 changed files with 408 additions and 234 deletions

View file

@ -92,3 +92,15 @@ steps:
- kubectl apply -Rf manifests/pleroma - kubectl apply -Rf manifests/pleroma
# TODO: fix this # TODO: fix this
- envsubst < manifests/pleroma/templates/deployment.yaml | kubectl apply -f - - envsubst < manifests/pleroma/templates/deployment.yaml | kubectl apply -f -
prometheus:
image: cr.forge.lan/alk8s/alk8s
pull: true
environment:
KUBECONFIG_BASE64:
from_secret: kubeconfig_base64
CI_COMMIT_SHA: ${CI_COMMIT_SHA}
commands:
- mkdir -p ~/.kube
- echo $KUBECONFIG_BASE64 | base64 -d > ~/.kube/config
- pwd
- kubectl apply -Rf manifests/prometheus

View file

@ -0,0 +1,16 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: darkdork-dev
name: prometheus-config
data:
prometheus.yml: |
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'pleroma'
scheme: http
static_configs:
- targets: ['pleroma:4021']

View file

@ -0,0 +1,39 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: darkdork-dev
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
imagePullSecrets:
- name: registry-credentials
containers:
- name: grafana
image: grafana/grafana
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
env:
- name: GF_SERVER_ROOT_URL
value: http://darkdork.grafana.lan
volumeMounts:
- name: grafana-data
mountPath: /var/lib/grafana
volumes:
- name: grafana-data
persistentVolumeClaim:
claimName: grafana-pvc
securityContext:
runAsUser: 472
runAsGroup: 0
fsGroup: 0
---

View file

@ -0,0 +1,20 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana
namespace: darkdork-dev
spec:
ingressClassName: nginx
rules:
- host: darkdork.grafana.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
---

View file

@ -0,0 +1,17 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-pvc
namespace: darkdork-dev
labels:
app: grafana
spec:
storageClassName: longhorn-single-replica-best-effort
accessModes:
- ReadWriteOnce
resources:
requests:
storage:
10Gi
---

View file

@ -0,0 +1,15 @@
---
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: darkdork-dev
spec:
ports:
- port: 3000
name: grafana
targetPort: 3000
protocol: TCP
selector:
app: grafana
---

View file

@ -35,6 +35,13 @@ data:
disabled: false, disabled: false,
manual_metrics_start_delay: :no_delay, manual_metrics_start_delay: :no_delay,
drop_metrics_groups: [], drop_metrics_groups: [],
grafana: [
host: System.get_env("GRAFANA_HOST", "http://localhost:3000"),
auth_token: System.get_env("GRAFANA_TOKEN"),
upload_dashboards_on_start: false,
folder_name: "BEAM",
annotate_app_lifecycle: true
],
metrics_server: [ metrics_server: [
port: 4021, port: 4021,
path: "/metrics", path: "/metrics",

View file

@ -1,40 +0,0 @@
# sX/vQ3gaDErEFr9wuYqlaJ/yWdswBMkY4wczeq6t3bEgwo2Ia+vHcN9pbf7dBjahEihjkZ7jS5W48DIfmOFsug==
apiVersion: batch/v1
kind: Job
metadata:
name: migrate
namespace: darkdork-dev
spec:
template:
spec:
imagePullSecrets:
- name: registry-credentials
containers:
- name: migrate
image: cr.forge.lan/darkdork-dev/pleroma:latest
command: [ "/bin/ash", "-c", "/opt/pleroma/bin/pleroma_ctl migrate" ]
env:
- name: DB_HOST
value: postgres
- name: DB_NAME
value: pleroma
- name: DB_USER
value: pleroma
- name: DB_PASS
valueFrom:
secretKeyRef:
name: postgres
key: postgres-password
volumeMounts:
- name: pleroma-config-volume
mountPath: /etc/pleroma/config.exs
subPath: config.exs
restartPolicy: Never
volumes:
- name: pleroma-config-volume
configMap:
name: pleroma-config
defaultMode: 0640 # Pleroma is picky about config file permissions.
securityContext:
fsGroup: 1000 # Ensures pleroma can still read the config file

View file

@ -8,7 +8,7 @@ metadata:
app: pleroma app: pleroma
spec: spec:
accessModes: ["ReadWriteOnce"] accessModes: ["ReadWriteOnce"]
storageClassName: longhorn-single-replica storageClassName: longhorn-single-replica-best-effort
resources: resources:
requests: requests:
storage: 2Gi storage: 2Gi

View file

@ -7,8 +7,13 @@ metadata:
spec: spec:
ports: ports:
- port: 80 - port: 80
name: http
targetPort: 4000 targetPort: 4000
protocol: TCP protocol: TCP
- port: 4021
name: prometheus
targetPort: 4021
protocol: TCP
selector: selector:
app: pleroma app: pleroma
--- ---

View file

@ -2,7 +2,7 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: pleromax name: pleroma
namespace: darkdork-dev namespace: darkdork-dev
spec: spec:
replicas: 1 replicas: 1
@ -100,6 +100,7 @@ spec:
command: ["sh", "-c", "elixir --sname pleroma -S mix phx.server --no-compile"] command: ["sh", "-c", "elixir --sname pleroma -S mix phx.server --no-compile"]
ports: ports:
- containerPort: 4000 - containerPort: 4000
- containerPort: 4021
env: env:
- name: MIX_ENV - name: MIX_ENV
value: prod value: prod
@ -122,6 +123,13 @@ spec:
secretKeyRef: secretKeyRef:
name: pleroma name: pleroma
key: secret-key-base key: secret-key-base
- name: GRAFANA_HOST
value: darkdork.grafana.lan
- name: GRAFANA_TOKEN
valueFrom:
secretKeyRef:
name: pleroma
key: grafana-token
- name: WEB_PUSH_PUBLIC_KEY - name: WEB_PUSH_PUBLIC_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:

View file

@ -1,19 +1,3 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
namespace: darkdork-dev
labels:
app: postgres
spec:
volumeName: pvc-43c3a05b-5556-4d7c-83e3-ee6436f1a48e
accessModes: ["ReadWriteOnce"]
storageClassName: longhorn-ssd
resources:
requests:
storage: 10Gi
--- ---
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
@ -28,18 +12,4 @@ spec:
resources: resources:
requests: requests:
storage: 15Gi storage: 15Gi
--- ---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-local-path-test-pvc
namespace: darkdork-dev
labels:
app: postgres
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: local-path
resources:
requests:
storage: 10Gi

View file

@ -114,9 +114,6 @@ spec:
- name: postgres-config-volume - name: postgres-config-volume
configMap: configMap:
name: postgres-config name: postgres-config
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
- name: postgres-local - name: postgres-local
persistentVolumeClaim: persistentVolumeClaim:
claimName: postgres-local-pvc claimName: postgres-local-pvc

View file

@ -0,0 +1,16 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: darkdork-dev
name: prometheus-config
data:
prometheus.yml: |
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'pleroma'
scheme: http
static_configs:
- targets: ['pleroma:4021']

View file

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus
namespace: darkdork-dev
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
imagePullSecrets:
- name: registry-credentials
containers:
- name: prometheus
image: prom/prometheus
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-data
mountPath: /prometheus
- name: prometheus-config
mountPath: /etc/prometheus/prometheus.yml
subPath: prometheus.yml
volumes:
- name: prometheus-data
persistentVolumeClaim:
claimName: prometheus-pvc
- name: prometheus-config
configMap:
name: prometheus-config
securityContext:
fsGroup: 1000
---

View file

@ -0,0 +1,20 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus
namespace: darkdork-dev
spec:
ingressClassName: nginx
rules:
- host: darkdork.prometheus.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prometheus
port:
number: 9090
---

View file

@ -0,0 +1,17 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prometheus-pvc
namespace: darkdork-dev
labels:
app: prometheus
spec:
storageClassName: longhorn-ssd
accessModes:
- ReadWriteOnce
resources:
requests:
storage:
10Gi
---

View file

@ -0,0 +1,15 @@
---
apiVersion: v1
kind: Service
metadata:
name: prometheus
namespace: darkdork-dev
spec:
ports:
- port: 9090
name: prometheus
targetPort: 9090
protocol: TCP
selector:
app: prometheus
---