From 058ab81ced6ef47e65cfd255857b857471e295d8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 7 Jan 2026 23:54:08 +0200 Subject: Reorganize argocd-apps by namespace for better structure - Create subdirectories: monitoring/, services/, infra/, test/ - Move 6 monitoring apps to monitoring/ - Move 13 service apps to services/ - Move 1 infra app to infra/ - Move 1 test app to test/ - Add README.md documenting the structure and usage This organization: - Makes it easier to understand which apps belong to which namespace - Allows applying apps by namespace: kubectl apply -f argocd-apps/monitoring/ - Supports namespace-scoped app-of-apps patterns - Provides better clarity when browsing the repository All 21 applications remain functional and validated with kubectl --dry-run. --- f3s/argocd-apps/README.md | 179 +++++++++++++++++++++ f3s/argocd-apps/alloy.yaml | 130 --------------- f3s/argocd-apps/anki-sync-server.yaml | 28 ---- f3s/argocd-apps/audiobookshelf.yaml | 28 ---- f3s/argocd-apps/example-apache-volume-claim.yaml | 28 ---- f3s/argocd-apps/filebrowser.yaml | 28 ---- f3s/argocd-apps/grafana-ingress.yaml | 28 ---- f3s/argocd-apps/immich.yaml | 28 ---- f3s/argocd-apps/infra/registry.yaml | 28 ++++ f3s/argocd-apps/keybr.yaml | 28 ---- f3s/argocd-apps/kobo-sync-server.yaml | 28 ---- f3s/argocd-apps/loki.yaml | 86 ---------- f3s/argocd-apps/miniflux.yaml | 28 ---- f3s/argocd-apps/monitoring/alloy.yaml | 130 +++++++++++++++ f3s/argocd-apps/monitoring/grafana-ingress.yaml | 28 ++++ f3s/argocd-apps/monitoring/loki.yaml | 86 ++++++++++ f3s/argocd-apps/monitoring/prometheus.yaml | 126 +++++++++++++++ f3s/argocd-apps/monitoring/pushgateway.yaml | 28 ++++ f3s/argocd-apps/monitoring/tempo.yaml | 97 +++++++++++ f3s/argocd-apps/opodsync.yaml | 28 ---- f3s/argocd-apps/prometheus.yaml | 126 --------------- f3s/argocd-apps/pushgateway.yaml | 28 ---- f3s/argocd-apps/radicale.yaml | 28 ---- f3s/argocd-apps/registry.yaml | 28 ---- f3s/argocd-apps/services/anki-sync-server.yaml | 28 ++++ f3s/argocd-apps/services/audiobookshelf.yaml | 28 ++++ f3s/argocd-apps/services/filebrowser.yaml | 28 ++++ f3s/argocd-apps/services/immich.yaml | 28 ++++ f3s/argocd-apps/services/keybr.yaml | 28 ++++ f3s/argocd-apps/services/kobo-sync-server.yaml | 28 ++++ f3s/argocd-apps/services/miniflux.yaml | 28 ++++ f3s/argocd-apps/services/opodsync.yaml | 28 ++++ f3s/argocd-apps/services/radicale.yaml | 28 ++++ f3s/argocd-apps/services/syncthing.yaml | 28 ++++ f3s/argocd-apps/services/tracing-demo.yaml | 28 ++++ f3s/argocd-apps/services/wallabag.yaml | 28 ++++ f3s/argocd-apps/services/webdav.yaml | 28 ++++ f3s/argocd-apps/syncthing.yaml | 28 ---- f3s/argocd-apps/tempo.yaml | 97 ----------- .../test/example-apache-volume-claim.yaml | 28 ++++ f3s/argocd-apps/tracing-demo.yaml | 28 ---- f3s/argocd-apps/wallabag.yaml | 28 ---- f3s/argocd-apps/webdav.yaml | 28 ---- 43 files changed, 1094 insertions(+), 915 deletions(-) create mode 100644 f3s/argocd-apps/README.md delete mode 100644 f3s/argocd-apps/alloy.yaml delete mode 100644 f3s/argocd-apps/anki-sync-server.yaml delete mode 100644 f3s/argocd-apps/audiobookshelf.yaml delete mode 100644 f3s/argocd-apps/example-apache-volume-claim.yaml delete mode 100644 f3s/argocd-apps/filebrowser.yaml delete mode 100644 f3s/argocd-apps/grafana-ingress.yaml delete mode 100644 f3s/argocd-apps/immich.yaml create mode 100644 f3s/argocd-apps/infra/registry.yaml delete mode 100644 f3s/argocd-apps/keybr.yaml delete mode 100644 f3s/argocd-apps/kobo-sync-server.yaml delete mode 100644 f3s/argocd-apps/loki.yaml delete mode 100644 f3s/argocd-apps/miniflux.yaml create mode 100644 f3s/argocd-apps/monitoring/alloy.yaml create mode 100644 f3s/argocd-apps/monitoring/grafana-ingress.yaml create mode 100644 f3s/argocd-apps/monitoring/loki.yaml create mode 100644 f3s/argocd-apps/monitoring/prometheus.yaml create mode 100644 f3s/argocd-apps/monitoring/pushgateway.yaml create mode 100644 f3s/argocd-apps/monitoring/tempo.yaml delete mode 100644 f3s/argocd-apps/opodsync.yaml delete mode 100644 f3s/argocd-apps/prometheus.yaml delete mode 100644 f3s/argocd-apps/pushgateway.yaml delete mode 100644 f3s/argocd-apps/radicale.yaml delete mode 100644 f3s/argocd-apps/registry.yaml create mode 100644 f3s/argocd-apps/services/anki-sync-server.yaml create mode 100644 f3s/argocd-apps/services/audiobookshelf.yaml create mode 100644 f3s/argocd-apps/services/filebrowser.yaml create mode 100644 f3s/argocd-apps/services/immich.yaml create mode 100644 f3s/argocd-apps/services/keybr.yaml create mode 100644 f3s/argocd-apps/services/kobo-sync-server.yaml create mode 100644 f3s/argocd-apps/services/miniflux.yaml create mode 100644 f3s/argocd-apps/services/opodsync.yaml create mode 100644 f3s/argocd-apps/services/radicale.yaml create mode 100644 f3s/argocd-apps/services/syncthing.yaml create mode 100644 f3s/argocd-apps/services/tracing-demo.yaml create mode 100644 f3s/argocd-apps/services/wallabag.yaml create mode 100644 f3s/argocd-apps/services/webdav.yaml delete mode 100644 f3s/argocd-apps/syncthing.yaml delete mode 100644 f3s/argocd-apps/tempo.yaml create mode 100644 f3s/argocd-apps/test/example-apache-volume-claim.yaml delete mode 100644 f3s/argocd-apps/tracing-demo.yaml delete mode 100644 f3s/argocd-apps/wallabag.yaml delete mode 100644 f3s/argocd-apps/webdav.yaml (limited to 'f3s') diff --git a/f3s/argocd-apps/README.md b/f3s/argocd-apps/README.md new file mode 100644 index 0000000..e12bacc --- /dev/null +++ b/f3s/argocd-apps/README.md @@ -0,0 +1,179 @@ +# ArgoCD Applications + +This directory contains ArgoCD Application manifests that define all workloads deployed to the f3s cluster. + +## Directory Structure + +Applications are organized by Kubernetes namespace: + +``` +argocd-apps/ +├── monitoring/ # Observability stack (namespace: monitoring) +│ ├── alloy.yaml # Log collection (DaemonSet) +│ ├── grafana-ingress.yaml # Grafana external access +│ ├── loki.yaml # Log aggregation +│ ├── prometheus.yaml # Metrics collection and monitoring (kube-prometheus-stack) +│ ├── pushgateway.yaml # Prometheus Pushgateway for metrics ingestion +│ └── tempo.yaml # Distributed tracing +├── services/ # User-facing applications (namespace: services) +│ ├── anki-sync-server.yaml # Anki flashcard synchronization +│ ├── audiobookshelf.yaml # Audiobook/podcast streaming +│ ├── filebrowser.yaml # Web-based file browser +│ ├── freshrss.yaml # RSS feed reader +│ ├── immich.yaml # Photo management +│ ├── keybr.yaml # Typing practice +│ ├── kobo-sync-server.yaml # KOReader sync server +│ ├── miniflux.yaml # Minimalist RSS reader +│ ├── opodsync.yaml # Podcast synchronization +│ ├── radicale.yaml # CalDAV/CardDAV server +│ ├── syncthing.yaml # File synchronization +│ ├── tracing-demo.yaml # Distributed tracing demo app +│ ├── wallabag.yaml # Read-it-later service +│ └── webdav.yaml # WebDAV server +├── infra/ # Infrastructure services (namespace: infra) +│ └── registry.yaml # Private Docker registry +└── test/ # Test/example applications (namespace: test) + └── example-apache-volume-claim.yaml # Example Apache with PVC + +``` + +## Application Count by Namespace + +- **monitoring**: 6 applications +- **services**: 13 applications +- **infra**: 1 application +- **test**: 1 application + +**Total**: 21 applications + +## Usage + +### Apply all applications + +```bash +# Apply all applications at once +kubectl apply -f argocd-apps/ -R + +# Or apply by namespace +kubectl apply -f argocd-apps/monitoring/ +kubectl apply -f argocd-apps/services/ +kubectl apply -f argocd-apps/infra/ +kubectl apply -f argocd-apps/test/ +``` + +### View application status + +```bash +# List all applications +argocd app list + +# View specific application +argocd app get miniflux + +# View by namespace (using labels) +argocd app list -l "namespace=monitoring" +``` + +### Sync all applications + +```bash +# Sync all applications +argocd app sync -l "argocd.argoproj.io/instance" + +# Sync specific namespace +argocd app sync -l "namespace=monitoring" +``` + +## Application Manifest Structure + +Each Application manifest follows this pattern: + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: + namespace: cicd # ArgoCD runs in the cicd namespace + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s//helm-chart + destination: + server: https://kubernetes.default.svc + namespace: + syncPolicy: + automated: + prune: true # Delete resources removed from Git + selfHeal: true # Automatically revert manual changes + syncOptions: + - CreateNamespace=false + retry: + limit: 3 + backoff: + duration: 5s + factor: 2 + maxDuration: 1m +``` + +## Sync Policies + +All applications use automated sync with: + +- **prune: true** - Resources removed from Git are deleted from the cluster +- **selfHeal: true** - Manual changes in the cluster are automatically reverted to match Git + +Exception: **prometheus** has `prune: false` for safety due to its complexity. + +## Complex Applications + +Some applications use advanced ArgoCD features: + +### Multi-Source Applications + +**prometheus.yaml** combines multiple sources: +- Upstream Helm chart from prometheus-community +- Custom manifests from Git (recording rules, dashboards, hooks) + +### Sync Waves and Hooks + +**prometheus.yaml** uses sync waves to control deployment order: +- Wave 0: PersistentVolumes, RBAC +- Wave 1: Secrets, ConfigMaps +- Wave 3: PrometheusRule CRDs (recording rules) +- Wave 4: Dashboard ConfigMaps +- Wave 10: PostSync hook (Grafana restart) + +## Disaster Recovery + +To rebuild the entire cluster from scratch: + +1. Bootstrap k3s cluster +2. Create namespaces: +```bash +kubectl create namespace cicd +kubectl create namespace monitoring +kubectl create namespace services +kubectl create namespace infra +kubectl create namespace test +``` + +3. Install ArgoCD (see `/home/paul/git/conf/f3s/argocd/`) + +4. Apply all Application manifests: +```bash +kubectl apply -f argocd-apps/ -R +``` + +5. ArgoCD automatically deploys all 21 applications + +Total recovery time: ~30 minutes. + +## See Also + +- [ArgoCD Documentation](https://argo-cd.readthedocs.io) +- [f3s Configuration Repository](https://codeberg.org/snonux/conf/src/branch/master/f3s) +- Blog post: f3s: Kubernetes with FreeBSD - Part X: GitOps with ArgoCD diff --git a/f3s/argocd-apps/alloy.yaml b/f3s/argocd-apps/alloy.yaml deleted file mode 100644 index c5574b1..0000000 --- a/f3s/argocd-apps/alloy.yaml +++ /dev/null @@ -1,130 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: alloy - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://grafana.github.io/helm-charts - chart: alloy - targetRevision: 0.3.2 - helm: - releaseName: alloy - valuesObject: - alloy: - service: - ports: - otlp-grpc: - enabled: true - port: 4317 - targetPort: 4317 - protocol: TCP - otlp-http: - enabled: true - port: 4318 - targetPort: 4318 - protocol: TCP - - configMap: - content: | - discovery.kubernetes "pods" { - role = "pod" - } - - discovery.relabel "pods" { - targets = discovery.kubernetes.pods.targets - - rule { - source_labels = ["__meta_kubernetes_namespace"] - target_label = "namespace" - } - - rule { - source_labels = ["__meta_kubernetes_pod_name"] - target_label = "pod" - } - - rule { - source_labels = ["__meta_kubernetes_pod_container_name"] - target_label = "container" - } - - rule { - source_labels = ["__meta_kubernetes_pod_label_app"] - target_label = "app" - } - } - - loki.source.kubernetes "pods" { - targets = discovery.relabel.pods.output - forward_to = [loki.write.default.receiver] - } - - loki.write "default" { - endpoint { - url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push" - } - } - - // ======================================== - // TRACES COLLECTION - // ======================================== - - // OTLP receiver for traces via gRPC and HTTP - otelcol.receiver.otlp "default" { - grpc { - endpoint = "0.0.0.0:4317" - } - - http { - endpoint = "0.0.0.0:4318" - } - - output { - traces = [otelcol.processor.batch.default.input] - } - } - - // Batch processor for efficient trace forwarding - otelcol.processor.batch "default" { - timeout = "5s" - send_batch_size = 100 - send_batch_max_size = 200 - - output { - traces = [otelcol.exporter.otlp.tempo.input] - } - } - - // OTLP exporter to send traces to Tempo - otelcol.exporter.otlp "tempo" { - client { - endpoint = "tempo.monitoring.svc.cluster.local:4317" - - tls { - insecure = true - } - - compression = "gzip" - } - } - - destination: - server: https://kubernetes.default.svc - namespace: monitoring - - 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/anki-sync-server.yaml b/f3s/argocd-apps/anki-sync-server.yaml deleted file mode 100644 index 850af3e..0000000 --- a/f3s/argocd-apps/anki-sync-server.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: anki-sync-server - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/anki-sync-server/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/audiobookshelf.yaml b/f3s/argocd-apps/audiobookshelf.yaml deleted file mode 100644 index e90e374..0000000 --- a/f3s/argocd-apps/audiobookshelf.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: audiobookshelf - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/audiobookshelf/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/example-apache-volume-claim.yaml b/f3s/argocd-apps/example-apache-volume-claim.yaml deleted file mode 100644 index e918e87..0000000 --- a/f3s/argocd-apps/example-apache-volume-claim.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: example-apache-volume-claim - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/example-apache-volume-claim/helm-chart - destination: - server: https://kubernetes.default.svc - namespace: test - 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/filebrowser.yaml b/f3s/argocd-apps/filebrowser.yaml deleted file mode 100644 index 5e32211..0000000 --- a/f3s/argocd-apps/filebrowser.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: filebrowser - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/filebrowser/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/grafana-ingress.yaml b/f3s/argocd-apps/grafana-ingress.yaml deleted file mode 100644 index bc99f02..0000000 --- a/f3s/argocd-apps/grafana-ingress.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: grafana-ingress - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/prometheus/grafana-ingress - destination: - server: https://kubernetes.default.svc - namespace: monitoring - 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/immich.yaml b/f3s/argocd-apps/immich.yaml deleted file mode 100644 index 6fac25b..0000000 --- a/f3s/argocd-apps/immich.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: immich - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/immich/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/infra/registry.yaml b/f3s/argocd-apps/infra/registry.yaml new file mode 100644 index 0000000..2948233 --- /dev/null +++ b/f3s/argocd-apps/infra/registry.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: registry + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/registry/helm-chart + destination: + server: https://kubernetes.default.svc + namespace: infra + 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/keybr.yaml b/f3s/argocd-apps/keybr.yaml deleted file mode 100644 index 411ca6a..0000000 --- a/f3s/argocd-apps/keybr.yaml +++ /dev/null @@ -1,28 +0,0 @@ -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/kobo-sync-server.yaml b/f3s/argocd-apps/kobo-sync-server.yaml deleted file mode 100644 index eaae84c..0000000 --- a/f3s/argocd-apps/kobo-sync-server.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: kobo-sync-server - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/kobo-sync-server/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/loki.yaml b/f3s/argocd-apps/loki.yaml deleted file mode 100644 index c7985c2..0000000 --- a/f3s/argocd-apps/loki.yaml +++ /dev/null @@ -1,86 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: loki - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://grafana.github.io/helm-charts - chart: loki - targetRevision: 6.6.3 - helm: - releaseName: loki - valuesObject: - deploymentMode: SingleBinary - - loki: - auth_enabled: false - commonConfig: - replication_factor: 1 - storage: - type: filesystem - schemaConfig: - configs: - - from: "2024-01-01" - store: tsdb - object_store: filesystem - schema: v13 - index: - prefix: index_ - period: 24h - - singleBinary: - replicas: 1 - extraVolumes: - - name: loki-data - persistentVolumeClaim: - claimName: loki-data-pvc - extraVolumeMounts: - - name: loki-data - mountPath: /var/loki - persistence: - enabled: false - - read: - replicas: 0 - - write: - replicas: 0 - - backend: - replicas: 0 - - gateway: - enabled: false - - chunksCache: - enabled: false - - resultsCache: - enabled: false - - lokiCanary: - enabled: false - - test: - enabled: false - - destination: - server: https://kubernetes.default.svc - namespace: monitoring - - 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/miniflux.yaml b/f3s/argocd-apps/miniflux.yaml deleted file mode 100644 index 9b3a23a..0000000 --- a/f3s/argocd-apps/miniflux.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: miniflux - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/miniflux/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/monitoring/alloy.yaml b/f3s/argocd-apps/monitoring/alloy.yaml new file mode 100644 index 0000000..c5574b1 --- /dev/null +++ b/f3s/argocd-apps/monitoring/alloy.yaml @@ -0,0 +1,130 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: alloy + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://grafana.github.io/helm-charts + chart: alloy + targetRevision: 0.3.2 + helm: + releaseName: alloy + valuesObject: + alloy: + service: + ports: + otlp-grpc: + enabled: true + port: 4317 + targetPort: 4317 + protocol: TCP + otlp-http: + enabled: true + port: 4318 + targetPort: 4318 + protocol: TCP + + configMap: + content: | + discovery.kubernetes "pods" { + role = "pod" + } + + discovery.relabel "pods" { + targets = discovery.kubernetes.pods.targets + + rule { + source_labels = ["__meta_kubernetes_namespace"] + target_label = "namespace" + } + + rule { + source_labels = ["__meta_kubernetes_pod_name"] + target_label = "pod" + } + + rule { + source_labels = ["__meta_kubernetes_pod_container_name"] + target_label = "container" + } + + rule { + source_labels = ["__meta_kubernetes_pod_label_app"] + target_label = "app" + } + } + + loki.source.kubernetes "pods" { + targets = discovery.relabel.pods.output + forward_to = [loki.write.default.receiver] + } + + loki.write "default" { + endpoint { + url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push" + } + } + + // ======================================== + // TRACES COLLECTION + // ======================================== + + // OTLP receiver for traces via gRPC and HTTP + otelcol.receiver.otlp "default" { + grpc { + endpoint = "0.0.0.0:4317" + } + + http { + endpoint = "0.0.0.0:4318" + } + + output { + traces = [otelcol.processor.batch.default.input] + } + } + + // Batch processor for efficient trace forwarding + otelcol.processor.batch "default" { + timeout = "5s" + send_batch_size = 100 + send_batch_max_size = 200 + + output { + traces = [otelcol.exporter.otlp.tempo.input] + } + } + + // OTLP exporter to send traces to Tempo + otelcol.exporter.otlp "tempo" { + client { + endpoint = "tempo.monitoring.svc.cluster.local:4317" + + tls { + insecure = true + } + + compression = "gzip" + } + } + + destination: + server: https://kubernetes.default.svc + namespace: monitoring + + 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/monitoring/grafana-ingress.yaml b/f3s/argocd-apps/monitoring/grafana-ingress.yaml new file mode 100644 index 0000000..bc99f02 --- /dev/null +++ b/f3s/argocd-apps/monitoring/grafana-ingress.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: grafana-ingress + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/prometheus/grafana-ingress + destination: + server: https://kubernetes.default.svc + namespace: monitoring + 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/monitoring/loki.yaml b/f3s/argocd-apps/monitoring/loki.yaml new file mode 100644 index 0000000..c7985c2 --- /dev/null +++ b/f3s/argocd-apps/monitoring/loki.yaml @@ -0,0 +1,86 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: loki + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://grafana.github.io/helm-charts + chart: loki + targetRevision: 6.6.3 + helm: + releaseName: loki + valuesObject: + deploymentMode: SingleBinary + + loki: + auth_enabled: false + commonConfig: + replication_factor: 1 + storage: + type: filesystem + schemaConfig: + configs: + - from: "2024-01-01" + store: tsdb + object_store: filesystem + schema: v13 + index: + prefix: index_ + period: 24h + + singleBinary: + replicas: 1 + extraVolumes: + - name: loki-data + persistentVolumeClaim: + claimName: loki-data-pvc + extraVolumeMounts: + - name: loki-data + mountPath: /var/loki + persistence: + enabled: false + + read: + replicas: 0 + + write: + replicas: 0 + + backend: + replicas: 0 + + gateway: + enabled: false + + chunksCache: + enabled: false + + resultsCache: + enabled: false + + lokiCanary: + enabled: false + + test: + enabled: false + + destination: + server: https://kubernetes.default.svc + namespace: monitoring + + 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/monitoring/prometheus.yaml b/f3s/argocd-apps/monitoring/prometheus.yaml new file mode 100644 index 0000000..4265168 --- /dev/null +++ b/f3s/argocd-apps/monitoring/prometheus.yaml @@ -0,0 +1,126 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: prometheus + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + + sources: + # Source 1: Upstream Helm chart from prometheus-community + - repoURL: https://prometheus-community.github.io/helm-charts + chart: kube-prometheus-stack + targetRevision: 55.5.0 + helm: + releaseName: prometheus + valuesObject: + kubeEtcd: + enabled: true + endpoints: + - 192.168.2.120 + - 192.168.2.121 + - 192.168.2.122 + service: + enabled: true + port: 2381 + targetPort: 2381 + + kubeControllerManager: + enabled: true + endpoints: + - 192.168.2.120 + - 192.168.2.121 + - 192.168.2.122 + service: + enabled: true + port: 10257 + targetPort: 10257 + serviceMonitor: + enabled: true + https: true + insecureSkipVerify: true + + prometheus: + prometheusSpec: + additionalArgs: + - name: web.enable-remote-write-receiver + value: "" + - name: web.enable-admin-api + value: "" + enableFeatures: + - exemplar-storage + - otlp-write-receiver + additionalScrapeConfigs: [] + tsdb: + outOfOrderTimeWindow: 744h # 31 days + additionalScrapeConfigsSecret: + enabled: true + name: additional-scrape-configs + key: additional-scrape-configs.yaml + storageSpec: + volumeClaimTemplate: + spec: + storageClassName: "" + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 10Gi + selector: + matchLabels: + type: local + app: prometheus + + grafana: + persistence: + enabled: true + type: pvc + existingClaim: "grafana-data-pvc" + + initChownData: + enabled: false + + podSecurityContext: + fsGroup: 911 + runAsUser: 911 + runAsGroup: 911 + + # Disable sidecar-based datasource provisioning + sidecar: + datasources: + enabled: false + + # Mount datasources ConfigMap directly to provisioning directory + extraVolumes: + - name: datasources-volume + configMap: + name: grafana-datasources-all + + extraVolumeMounts: + - name: datasources-volume + mountPath: /etc/grafana/provisioning/datasources + readOnly: true + + # Source 2: Additional manifests from Git repository + - repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/prometheus/manifests + + destination: + server: https://kubernetes.default.svc + namespace: monitoring + + syncPolicy: + automated: + prune: false # Manual pruning for safety on complex stack + selfHeal: true + syncOptions: + - CreateNamespace=false + - ServerSideApply=true + retry: + limit: 3 + backoff: + duration: 10s + factor: 2 + maxDuration: 3m diff --git a/f3s/argocd-apps/monitoring/pushgateway.yaml b/f3s/argocd-apps/monitoring/pushgateway.yaml new file mode 100644 index 0000000..46d69ca --- /dev/null +++ b/f3s/argocd-apps/monitoring/pushgateway.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: pushgateway + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/pushgateway/helm-chart + destination: + server: https://kubernetes.default.svc + namespace: monitoring + 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/monitoring/tempo.yaml b/f3s/argocd-apps/monitoring/tempo.yaml new file mode 100644 index 0000000..0fd6bc1 --- /dev/null +++ b/f3s/argocd-apps/monitoring/tempo.yaml @@ -0,0 +1,97 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: tempo + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://grafana.github.io/helm-charts + chart: tempo + targetRevision: 1.24.1 + helm: + releaseName: tempo + valuesObject: + # Grafana Tempo - Monolithic Mode Configuration + tempo: + # Retention policy for traces (7 days) + retention: 168h + + # Storage configuration - Local filesystem backend + storage: + trace: + backend: local + local: + path: /var/tempo/traces + wal: + path: /var/tempo/wal + + # Distributor configuration with OTLP receivers + receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + + # Persistence configuration using hostPath PV + persistence: + enabled: true + size: 10Gi + storageClassName: "" # Empty string for manual PV binding + accessModes: + - ReadWriteOnce + + # Service configuration + service: + type: ClusterIP + + # Resource limits + resources: + limits: + cpu: 1000m + memory: 2Gi + requests: + cpu: 500m + memory: 1Gi + + # Security context + securityContext: + fsGroup: 10001 + runAsUser: 10001 + runAsGroup: 10001 + runAsNonRoot: true + + # Disable components not needed in monolithic mode + gateway: + enabled: false + + # Monitoring integration with Prometheus + serviceMonitor: + enabled: true + labels: + release: prometheus + + # Test pod disabled + test: + enabled: false + + destination: + server: https://kubernetes.default.svc + namespace: monitoring + + 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/opodsync.yaml b/f3s/argocd-apps/opodsync.yaml deleted file mode 100644 index b4b0e54..0000000 --- a/f3s/argocd-apps/opodsync.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: opodsync - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/opodsync/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/prometheus.yaml b/f3s/argocd-apps/prometheus.yaml deleted file mode 100644 index 4265168..0000000 --- a/f3s/argocd-apps/prometheus.yaml +++ /dev/null @@ -1,126 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: prometheus - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - - sources: - # Source 1: Upstream Helm chart from prometheus-community - - repoURL: https://prometheus-community.github.io/helm-charts - chart: kube-prometheus-stack - targetRevision: 55.5.0 - helm: - releaseName: prometheus - valuesObject: - kubeEtcd: - enabled: true - endpoints: - - 192.168.2.120 - - 192.168.2.121 - - 192.168.2.122 - service: - enabled: true - port: 2381 - targetPort: 2381 - - kubeControllerManager: - enabled: true - endpoints: - - 192.168.2.120 - - 192.168.2.121 - - 192.168.2.122 - service: - enabled: true - port: 10257 - targetPort: 10257 - serviceMonitor: - enabled: true - https: true - insecureSkipVerify: true - - prometheus: - prometheusSpec: - additionalArgs: - - name: web.enable-remote-write-receiver - value: "" - - name: web.enable-admin-api - value: "" - enableFeatures: - - exemplar-storage - - otlp-write-receiver - additionalScrapeConfigs: [] - tsdb: - outOfOrderTimeWindow: 744h # 31 days - additionalScrapeConfigsSecret: - enabled: true - name: additional-scrape-configs - key: additional-scrape-configs.yaml - storageSpec: - volumeClaimTemplate: - spec: - storageClassName: "" - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: 10Gi - selector: - matchLabels: - type: local - app: prometheus - - grafana: - persistence: - enabled: true - type: pvc - existingClaim: "grafana-data-pvc" - - initChownData: - enabled: false - - podSecurityContext: - fsGroup: 911 - runAsUser: 911 - runAsGroup: 911 - - # Disable sidecar-based datasource provisioning - sidecar: - datasources: - enabled: false - - # Mount datasources ConfigMap directly to provisioning directory - extraVolumes: - - name: datasources-volume - configMap: - name: grafana-datasources-all - - extraVolumeMounts: - - name: datasources-volume - mountPath: /etc/grafana/provisioning/datasources - readOnly: true - - # Source 2: Additional manifests from Git repository - - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/prometheus/manifests - - destination: - server: https://kubernetes.default.svc - namespace: monitoring - - syncPolicy: - automated: - prune: false # Manual pruning for safety on complex stack - selfHeal: true - syncOptions: - - CreateNamespace=false - - ServerSideApply=true - retry: - limit: 3 - backoff: - duration: 10s - factor: 2 - maxDuration: 3m diff --git a/f3s/argocd-apps/pushgateway.yaml b/f3s/argocd-apps/pushgateway.yaml deleted file mode 100644 index 46d69ca..0000000 --- a/f3s/argocd-apps/pushgateway.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: pushgateway - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/pushgateway/helm-chart - destination: - server: https://kubernetes.default.svc - namespace: monitoring - 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/radicale.yaml b/f3s/argocd-apps/radicale.yaml deleted file mode 100644 index d12d771..0000000 --- a/f3s/argocd-apps/radicale.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: radicale - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/radicale/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/registry.yaml b/f3s/argocd-apps/registry.yaml deleted file mode 100644 index 2948233..0000000 --- a/f3s/argocd-apps/registry.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: registry - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/registry/helm-chart - destination: - server: https://kubernetes.default.svc - namespace: infra - 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/services/anki-sync-server.yaml b/f3s/argocd-apps/services/anki-sync-server.yaml new file mode 100644 index 0000000..850af3e --- /dev/null +++ b/f3s/argocd-apps/services/anki-sync-server.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: anki-sync-server + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/anki-sync-server/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/services/audiobookshelf.yaml b/f3s/argocd-apps/services/audiobookshelf.yaml new file mode 100644 index 0000000..e90e374 --- /dev/null +++ b/f3s/argocd-apps/services/audiobookshelf.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: audiobookshelf + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/audiobookshelf/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/services/filebrowser.yaml b/f3s/argocd-apps/services/filebrowser.yaml new file mode 100644 index 0000000..5e32211 --- /dev/null +++ b/f3s/argocd-apps/services/filebrowser.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: filebrowser + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/filebrowser/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/services/immich.yaml b/f3s/argocd-apps/services/immich.yaml new file mode 100644 index 0000000..6fac25b --- /dev/null +++ b/f3s/argocd-apps/services/immich.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: immich + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/immich/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/services/keybr.yaml b/f3s/argocd-apps/services/keybr.yaml new file mode 100644 index 0000000..411ca6a --- /dev/null +++ b/f3s/argocd-apps/services/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/services/kobo-sync-server.yaml b/f3s/argocd-apps/services/kobo-sync-server.yaml new file mode 100644 index 0000000..eaae84c --- /dev/null +++ b/f3s/argocd-apps/services/kobo-sync-server.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kobo-sync-server + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/kobo-sync-server/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/services/miniflux.yaml b/f3s/argocd-apps/services/miniflux.yaml new file mode 100644 index 0000000..9b3a23a --- /dev/null +++ b/f3s/argocd-apps/services/miniflux.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: miniflux + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/miniflux/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/services/opodsync.yaml b/f3s/argocd-apps/services/opodsync.yaml new file mode 100644 index 0000000..b4b0e54 --- /dev/null +++ b/f3s/argocd-apps/services/opodsync.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: opodsync + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/opodsync/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/services/radicale.yaml b/f3s/argocd-apps/services/radicale.yaml new file mode 100644 index 0000000..d12d771 --- /dev/null +++ b/f3s/argocd-apps/services/radicale.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: radicale + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/radicale/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/services/syncthing.yaml b/f3s/argocd-apps/services/syncthing.yaml new file mode 100644 index 0000000..6cec5d3 --- /dev/null +++ b/f3s/argocd-apps/services/syncthing.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: syncthing + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/syncthing/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/services/tracing-demo.yaml b/f3s/argocd-apps/services/tracing-demo.yaml new file mode 100644 index 0000000..30ab9b0 --- /dev/null +++ b/f3s/argocd-apps/services/tracing-demo.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: tracing-demo + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/tracing-demo/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/services/wallabag.yaml b/f3s/argocd-apps/services/wallabag.yaml new file mode 100644 index 0000000..e723b64 --- /dev/null +++ b/f3s/argocd-apps/services/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/argocd-apps/services/webdav.yaml b/f3s/argocd-apps/services/webdav.yaml new file mode 100644 index 0000000..3c3158b --- /dev/null +++ b/f3s/argocd-apps/services/webdav.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: webdav + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/webdav/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/syncthing.yaml b/f3s/argocd-apps/syncthing.yaml deleted file mode 100644 index 6cec5d3..0000000 --- a/f3s/argocd-apps/syncthing.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: syncthing - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/syncthing/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/tempo.yaml b/f3s/argocd-apps/tempo.yaml deleted file mode 100644 index 0fd6bc1..0000000 --- a/f3s/argocd-apps/tempo.yaml +++ /dev/null @@ -1,97 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: tempo - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://grafana.github.io/helm-charts - chart: tempo - targetRevision: 1.24.1 - helm: - releaseName: tempo - valuesObject: - # Grafana Tempo - Monolithic Mode Configuration - tempo: - # Retention policy for traces (7 days) - retention: 168h - - # Storage configuration - Local filesystem backend - storage: - trace: - backend: local - local: - path: /var/tempo/traces - wal: - path: /var/tempo/wal - - # Distributor configuration with OTLP receivers - receivers: - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:4317 - http: - endpoint: 0.0.0.0:4318 - - # Persistence configuration using hostPath PV - persistence: - enabled: true - size: 10Gi - storageClassName: "" # Empty string for manual PV binding - accessModes: - - ReadWriteOnce - - # Service configuration - service: - type: ClusterIP - - # Resource limits - resources: - limits: - cpu: 1000m - memory: 2Gi - requests: - cpu: 500m - memory: 1Gi - - # Security context - securityContext: - fsGroup: 10001 - runAsUser: 10001 - runAsGroup: 10001 - runAsNonRoot: true - - # Disable components not needed in monolithic mode - gateway: - enabled: false - - # Monitoring integration with Prometheus - serviceMonitor: - enabled: true - labels: - release: prometheus - - # Test pod disabled - test: - enabled: false - - destination: - server: https://kubernetes.default.svc - namespace: monitoring - - 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/test/example-apache-volume-claim.yaml b/f3s/argocd-apps/test/example-apache-volume-claim.yaml new file mode 100644 index 0000000..e918e87 --- /dev/null +++ b/f3s/argocd-apps/test/example-apache-volume-claim.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: example-apache-volume-claim + namespace: cicd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://codeberg.org/snonux/conf.git + targetRevision: master + path: f3s/example-apache-volume-claim/helm-chart + destination: + server: https://kubernetes.default.svc + namespace: test + 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/tracing-demo.yaml b/f3s/argocd-apps/tracing-demo.yaml deleted file mode 100644 index 30ab9b0..0000000 --- a/f3s/argocd-apps/tracing-demo.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: tracing-demo - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/tracing-demo/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 deleted file mode 100644 index e723b64..0000000 --- a/f3s/argocd-apps/wallabag.yaml +++ /dev/null @@ -1,28 +0,0 @@ -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/argocd-apps/webdav.yaml b/f3s/argocd-apps/webdav.yaml deleted file mode 100644 index 3c3158b..0000000 --- a/f3s/argocd-apps/webdav.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: webdav - namespace: cicd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - project: default - source: - repoURL: https://codeberg.org/snonux/conf.git - targetRevision: master - path: f3s/webdav/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 -- cgit v1.2.3