From f1925c872c496c914da99fcbf3a07c9292e911a7 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 7 Jan 2026 22:41:54 +0200 Subject: Migrate wallabag and keybr to ArgoCD GitOps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- f3s/argocd-apps/keybr.yaml | 28 ++++++++++++++++++++++++ f3s/argocd-apps/wallabag.yaml | 28 ++++++++++++++++++++++++ f3s/keybr/Justfile | 50 +++++++++++++++++++++++++++++++++---------- f3s/wallabag/Justfile | 48 ++++++++++++++++++++++++++++++++++------- 4 files changed, 135 insertions(+), 19 deletions(-) create mode 100644 f3s/argocd-apps/keybr.yaml create mode 100644 f3s/argocd-apps/wallabag.yaml 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 -- cgit v1.2.3