summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-01-07 22:41:54 +0200
committerPaul Buetow <paul@buetow.org>2026-01-07 22:41:54 +0200
commitf1925c872c496c914da99fcbf3a07c9292e911a7 (patch)
treecf56f7b0645d903010043705f38fb232af5bab07
parentd045b9d69ba5a3af2523dd9e15184fc4151d1537 (diff)
Migrate wallabag and keybr to ArgoCD GitOps
- Added ArgoCD Application manifests for wallabag and keybr - Updated Justfiles to use ArgoCD commands (sync, argocd-status, restart) - Removed Helm commands (install, upgrade, delete) - Tested delete/re-deploy workflow for both apps - All resources sync successfully, zero downtime Apps migrated: 4/23 (17%) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
-rw-r--r--f3s/argocd-apps/keybr.yaml28
-rw-r--r--f3s/argocd-apps/wallabag.yaml28
-rw-r--r--f3s/keybr/Justfile50
-rw-r--r--f3s/wallabag/Justfile48
4 files changed, 135 insertions, 19 deletions
diff --git a/f3s/argocd-apps/keybr.yaml b/f3s/argocd-apps/keybr.yaml
new file mode 100644
index 0000000..411ca6a
--- /dev/null
+++ b/f3s/argocd-apps/keybr.yaml
@@ -0,0 +1,28 @@
+apiVersion: argoproj.io/v1alpha1
+kind: Application
+metadata:
+ name: keybr
+ namespace: cicd
+ finalizers:
+ - resources-finalizer.argocd.argoproj.io
+spec:
+ project: default
+ source:
+ repoURL: https://codeberg.org/snonux/conf.git
+ targetRevision: master
+ path: f3s/keybr/helm-chart
+ destination:
+ server: https://kubernetes.default.svc
+ namespace: services
+ syncPolicy:
+ automated:
+ prune: true
+ selfHeal: true
+ syncOptions:
+ - CreateNamespace=false
+ retry:
+ limit: 3
+ backoff:
+ duration: 5s
+ factor: 2
+ maxDuration: 1m
diff --git a/f3s/argocd-apps/wallabag.yaml b/f3s/argocd-apps/wallabag.yaml
new file mode 100644
index 0000000..e723b64
--- /dev/null
+++ b/f3s/argocd-apps/wallabag.yaml
@@ -0,0 +1,28 @@
+apiVersion: argoproj.io/v1alpha1
+kind: Application
+metadata:
+ name: wallabag
+ namespace: cicd
+ finalizers:
+ - resources-finalizer.argocd.argoproj.io
+spec:
+ project: default
+ source:
+ repoURL: https://codeberg.org/snonux/conf.git
+ targetRevision: master
+ path: f3s/wallabag/helm-chart
+ destination:
+ server: https://kubernetes.default.svc
+ namespace: services
+ syncPolicy:
+ automated:
+ prune: true
+ selfHeal: true
+ syncOptions:
+ - CreateNamespace=false
+ retry:
+ limit: 3
+ backoff:
+ duration: 5s
+ factor: 2
+ maxDuration: 1m
diff --git a/f3s/keybr/Justfile b/f3s/keybr/Justfile
index f34f44f..e2832e9 100644
--- a/f3s/keybr/Justfile
+++ b/f3s/keybr/Justfile
@@ -1,16 +1,44 @@
NAMESPACE := "services"
-RELEASE_NAME := "keybr"
-CHART_PATH := "./helm-chart"
+APP_NAME := "keybr"
-install:
- helm install {{RELEASE_NAME}} {{CHART_PATH}} --namespace {{NAMESPACE}} --create-namespace
+# Show deployment status
+status:
+ @echo "=== Pods ==="
+ @kubectl get pods -n {{NAMESPACE}} | grep keybr
+ @echo ""
+ @echo "=== Service ==="
+ @kubectl get svc -n {{NAMESPACE}} keybr-service
+ @echo ""
+ @echo "=== Ingress ==="
+ @kubectl get ingress -n {{NAMESPACE}} keybr-ingress
+ @echo ""
+ @echo "=== PVC ==="
+ @kubectl get pvc -n {{NAMESPACE}} keybr-data-pvc
+ @echo ""
+ @echo "=== ArgoCD Status ==="
+ @kubectl get application {{APP_NAME}} -n cicd -o jsonpath='Sync: {.status.sync.status}, Health: {.status.health.status}' 2>/dev/null && echo "" || echo "Not found"
-upgrade:
- helm upgrade {{RELEASE_NAME}} {{CHART_PATH}} --namespace {{NAMESPACE}}
+# View logs from keybr (default 100 lines)
+logs lines="100":
+ kubectl logs -n {{NAMESPACE}} -l app=keybr --tail={{lines}} -f
-delete:
- helm uninstall {{RELEASE_NAME}} --namespace {{NAMESPACE}}
- kubectl delete pvc keybr-data-pvc -n {{NAMESPACE}} --ignore-not-found
- kubectl delete pv keybr-data-pv --ignore-not-found
+# Port forward to keybr web UI
+port-forward port="3000":
+ @echo "Forwarding keybr to localhost:{{port}}"
+ kubectl port-forward -n {{NAMESPACE}} svc/keybr-service {{port}}:3000
-deinstall: delete
+# Trigger ArgoCD sync
+sync:
+ @echo "Triggering ArgoCD sync..."
+ @kubectl annotate application {{APP_NAME}} -n cicd argocd.argoproj.io/refresh=normal --overwrite
+ @sleep 2
+ @kubectl get application {{APP_NAME}} -n cicd -o jsonpath='Sync: {.status.sync.status}, Health: {.status.health.status}' && echo ""
+
+# Show ArgoCD application details
+argocd-status:
+ argocd app get {{APP_NAME}} --core
+
+# Restart keybr
+restart:
+ @echo "Restarting keybr..."
+ kubectl rollout restart -n {{NAMESPACE}} deployment/keybr
diff --git a/f3s/wallabag/Justfile b/f3s/wallabag/Justfile
index 6c3a881..879522f 100644
--- a/f3s/wallabag/Justfile
+++ b/f3s/wallabag/Justfile
@@ -1,12 +1,44 @@
NAMESPACE := "services"
-RELEASE_NAME := "wallabag"
-CHART_PATH := "./helm-chart"
+APP_NAME := "wallabag"
-install:
- helm install {{RELEASE_NAME}} {{CHART_PATH}} --namespace {{NAMESPACE}} --create-namespace
+# Show deployment status
+status:
+ @echo "=== Pods ==="
+ @kubectl get pods -n {{NAMESPACE}} | grep wallabag
+ @echo ""
+ @echo "=== Service ==="
+ @kubectl get svc -n {{NAMESPACE}} wallabag-service
+ @echo ""
+ @echo "=== Ingress ==="
+ @kubectl get ingress -n {{NAMESPACE}} wallabag-ingress
+ @echo ""
+ @echo "=== PVCs ==="
+ @kubectl get pvc -n {{NAMESPACE}} | grep wallabag
+ @echo ""
+ @echo "=== ArgoCD Status ==="
+ @kubectl get application {{APP_NAME}} -n cicd -o jsonpath='Sync: {.status.sync.status}, Health: {.status.health.status}' 2>/dev/null && echo "" || echo "Not found"
-upgrade:
- helm upgrade {{RELEASE_NAME}} {{CHART_PATH}} --namespace {{NAMESPACE}}
+# View logs from wallabag (default 100 lines)
+logs lines="100":
+ kubectl logs -n {{NAMESPACE}} -l app=wallabag --tail={{lines}} -f
-delete:
- helm uninstall {{RELEASE_NAME}} --namespace {{NAMESPACE}}
+# Port forward to wallabag web UI
+port-forward port="8080":
+ @echo "Forwarding wallabag to localhost:{{port}}"
+ kubectl port-forward -n {{NAMESPACE}} svc/wallabag-service {{port}}:80
+
+# Trigger ArgoCD sync
+sync:
+ @echo "Triggering ArgoCD sync..."
+ @kubectl annotate application {{APP_NAME}} -n cicd argocd.argoproj.io/refresh=normal --overwrite
+ @sleep 2
+ @kubectl get application {{APP_NAME}} -n cicd -o jsonpath='Sync: {.status.sync.status}, Health: {.status.health.status}' && echo ""
+
+# Show ArgoCD application details
+argocd-status:
+ argocd app get {{APP_NAME}} --core
+
+# Restart wallabag
+restart:
+ @echo "Restarting wallabag..."
+ kubectl rollout restart -n {{NAMESPACE}} deployment/wallabag