diff options
| author | Paul Buetow <paul@buetow.org> | 2026-01-07 22:41:54 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-01-07 22:41:54 +0200 |
| commit | f1925c872c496c914da99fcbf3a07c9292e911a7 (patch) | |
| tree | cf56f7b0645d903010043705f38fb232af5bab07 | |
| parent | d045b9d69ba5a3af2523dd9e15184fc4151d1537 (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.yaml | 28 | ||||
| -rw-r--r-- | f3s/argocd-apps/wallabag.yaml | 28 | ||||
| -rw-r--r-- | f3s/keybr/Justfile | 50 | ||||
| -rw-r--r-- | f3s/wallabag/Justfile | 48 |
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 |
