aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaditya Dhruv <[email protected]>2025-08-13 20:21:48 -0500
committerAaditya Dhruv <[email protected]>2025-08-13 20:21:48 -0500
commit00b2a019365eca6cb004bb4a073b8362d840051a (patch)
tree37d93bffca8adcac382ad63d183058746009ee52
parenta61d981e5e862ba6599df1b36634b43d88364399 (diff)
Add Miniflux roleHEADmaster
-rw-r--r--config.yaml2
-rw-r--r--playbooks/setup_single.yaml4
-rw-r--r--roles/actual/tasks/main.yaml2
-rw-r--r--roles/miniflux/defaults/main.yaml9
-rw-r--r--roles/miniflux/files/miniflux/Chart.yaml6
-rw-r--r--roles/miniflux/files/miniflux/templates/ingress.yaml34
-rw-r--r--roles/miniflux/files/miniflux/templates/miniflux.yaml41
-rw-r--r--roles/miniflux/files/miniflux/templates/pv.yaml16
-rw-r--r--roles/miniflux/files/miniflux/templates/pvc.yaml14
-rw-r--r--roles/miniflux/files/miniflux/templates/service.yaml13
-rw-r--r--roles/miniflux/tasks/main.yaml17
11 files changed, 155 insertions, 3 deletions
diff --git a/config.yaml b/config.yaml
index 2f8e73f..535545f 100644
--- a/config.yaml
+++ b/config.yaml
@@ -35,6 +35,8 @@ monitoring:
papermc:
enabled: true
version: 1.21.3
+miniflux:
+ enabled: true
servers:
base: true
ca:
diff --git a/playbooks/setup_single.yaml b/playbooks/setup_single.yaml
index f080bf9..b05fd20 100644
--- a/playbooks/setup_single.yaml
+++ b/playbooks/setup_single.yaml
@@ -2,6 +2,6 @@
hosts: all
gather_facts: false
tasks:
- - name: Setup cgit
+ - name: Setup miniflux
include_role:
- name: "roles/cgit"
+ name: "roles/miniflux"
diff --git a/roles/actual/tasks/main.yaml b/roles/actual/tasks/main.yaml
index 1733c68..d6bb15a 100644
--- a/roles/actual/tasks/main.yaml
+++ b/roles/actual/tasks/main.yaml
@@ -6,7 +6,7 @@
namespace: default
state: "{%- if actual.enabled -%} present {%- else -%} absent {%- endif -%}"
values:
- replicas: "{{ actual.replicas}}"
+ replicas: "{{ actual.replicas }}"
port: "{{ actual.port }}"
image: "{{ actual.image }}"
version: "{{ actual.version }}"
diff --git a/roles/miniflux/defaults/main.yaml b/roles/miniflux/defaults/main.yaml
new file mode 100644
index 0000000..8dffa2a
--- /dev/null
+++ b/roles/miniflux/defaults/main.yaml
@@ -0,0 +1,9 @@
+miniflux:
+ enabled: false
+ replicas: 1
+ port: 80
+ image: miniflux/miniflux
+ version: 2.2.11
+
+nfs:
+ path: "/mnt/nfs/k3s/miniflux/"
diff --git a/roles/miniflux/files/miniflux/Chart.yaml b/roles/miniflux/files/miniflux/Chart.yaml
new file mode 100644
index 0000000..d3292d7
--- /dev/null
+++ b/roles/miniflux/files/miniflux/Chart.yaml
@@ -0,0 +1,6 @@
+apiVersion: v2
+name: miniflux
+description: Miniflux RSS reader chart
+type: application
+
+version: 0.1.0
diff --git a/roles/miniflux/files/miniflux/templates/ingress.yaml b/roles/miniflux/files/miniflux/templates/ingress.yaml
new file mode 100644
index 0000000..52ab337
--- /dev/null
+++ b/roles/miniflux/files/miniflux/templates/ingress.yaml
@@ -0,0 +1,34 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: miniflux
+ annotations:
+ cert-manager.io/cluster-issuer: "ca-issuer"
+spec:
+ ingressClassName: traefik
+ tls:
+ - hosts:
+ - news.aadityadhruv.com
+ - news.home
+ secretName: miniflux-tls
+ rules:
+ - host: news.home
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: miniflux-service
+ port:
+ number: 80
+ - host: news.aadityadhruv.com
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: miniflux-service
+ port:
+ number: 80
diff --git a/roles/miniflux/files/miniflux/templates/miniflux.yaml b/roles/miniflux/files/miniflux/templates/miniflux.yaml
new file mode 100644
index 0000000..38b2b74
--- /dev/null
+++ b/roles/miniflux/files/miniflux/templates/miniflux.yaml
@@ -0,0 +1,41 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: "{{ .Chart.Name }}-deployment"
+ labels:
+ app: {{ .Chart.Name }}
+spec:
+ replicas: {{ .Values.replicas }}
+ selector:
+ matchLabels:
+ app: {{ .Chart.Name }}
+ template:
+ metadata:
+ labels:
+ app: {{ .Chart.Name }}
+ spec:
+ containers:
+ - name: miniflux
+ image: "{{ .Values.image }}:{{ .Values.version }}"
+ env:
+ - name: DATABASE_URL
+ value: "postgres://miniflux:{{ .Values.db_password }}@localhost:5432/miniflux?sslmode=disable"
+ - name: RUN_MIGRATIONS
+ value: "1"
+ - name: postgres
+ image: postgres:17-alpine
+ env:
+ - name: POSTGRES_DB
+ value: miniflux
+ - name: POSTGRES_USER
+ value: miniflux
+ - name: POSTGRES_PASSWORD
+ value: "{{ .Values.db_password }}"
+ volumeMounts:
+ - mountPath: "/var/lib/postgresql/data"
+ name: "{{ .Chart.Name }}-volume"
+ subPath: "db"
+ volumes:
+ - name: "{{ .Chart.Name }}-volume"
+ persistentVolumeClaim:
+ claimName: "{{ .Chart.Name }}-pvc"
diff --git a/roles/miniflux/files/miniflux/templates/pv.yaml b/roles/miniflux/files/miniflux/templates/pv.yaml
new file mode 100644
index 0000000..d5f42d5
--- /dev/null
+++ b/roles/miniflux/files/miniflux/templates/pv.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: "{{ .Chart.Name }}-pv"
+ labels:
+ app: "{{ .Chart.Name }}-pv"
+spec:
+ storageClassName: nfs
+ capacity:
+ storage: 10Gi
+ accessModes:
+ - ReadWriteMany
+ nfs:
+ server: {{ .Values.nfs.server }}
+ path: {{ .Values.nfs.path }}
+ readOnly: false
diff --git a/roles/miniflux/files/miniflux/templates/pvc.yaml b/roles/miniflux/files/miniflux/templates/pvc.yaml
new file mode 100644
index 0000000..4fa9c9f
--- /dev/null
+++ b/roles/miniflux/files/miniflux/templates/pvc.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ .Chart.Name }}-pvc
+spec:
+ storageClassName: nfs
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 10Gi
+ selector:
+ matchLabels:
+ app: "{{ .Chart.Name }}-pv"
diff --git a/roles/miniflux/files/miniflux/templates/service.yaml b/roles/miniflux/files/miniflux/templates/service.yaml
new file mode 100644
index 0000000..5be1153
--- /dev/null
+++ b/roles/miniflux/files/miniflux/templates/service.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Chart.Name }}-service
+spec:
+ type: ClusterIP
+ selector:
+ app: {{ .Chart.Name }}
+ ports:
+ - protocol: TCP
+ port: {{ .Values.port }}
+ targetPort: 8080
+ name: webui
diff --git a/roles/miniflux/tasks/main.yaml b/roles/miniflux/tasks/main.yaml
new file mode 100644
index 0000000..e4bbe1c
--- /dev/null
+++ b/roles/miniflux/tasks/main.yaml
@@ -0,0 +1,17 @@
+- name: Deploy Miniflux
+ kubernetes.core.helm:
+ name: miniflux
+ chart_ref: "{{ lookup('env', 'PWD') }}/roles/miniflux/files/miniflux"
+ namespace: default
+ state: "{%- if miniflux.enabled -%} present {%- else -%} absent {%- endif -%}"
+ values:
+ replicas: "{{ miniflux.replicas }}"
+ port: "{{ miniflux.port }}"
+ image: "{{ miniflux.image }}"
+ version: "{{ miniflux.version }}"
+ db_password: "{{ miniflux.db_password }}"
+ nfs:
+ server: "{{ nfs.server }}"
+ path: "{{ nfs.path }}"
+ delegate_to: localhost
+ run_once: true