From 3e0a1c86ba6f6fd804b6defbe86e1bc9a52a334e Mon Sep 17 00:00:00 2001 From: Story Crater Bot <19826264+Riotpiaole@users.noreply.github.com> Date: Tue, 18 Aug 2026 15:08:01 -0700 Subject: [PATCH] feat(argocd): migrate phase1 hookless releases to ArgoCD --- helmfile.yaml.gotmpl | 116 ----------------- k8s/argocd/apps/phase1-hookless-0.yaml | 172 +++++++++++++++++++++++++ k8s/argocd/apps/phase1-hookless-1.yaml | 55 ++++++++ 3 files changed, 227 insertions(+), 116 deletions(-) create mode 100644 k8s/argocd/apps/phase1-hookless-0.yaml create mode 100644 k8s/argocd/apps/phase1-hookless-1.yaml diff --git a/helmfile.yaml.gotmpl b/helmfile.yaml.gotmpl index 6f8d4ef..7f9290c 100644 --- a/helmfile.yaml.gotmpl +++ b/helmfile.yaml.gotmpl @@ -448,14 +448,6 @@ releases: needs: - storage/minio - - name: promtail - namespace: logging - chart: grafana/promtail - values: - - k8s/logging/promtail-values.yaml - needs: - - logging/loki - - name: grafana namespace: logging chart: grafana/grafana @@ -502,16 +494,6 @@ releases: kubectl apply -f k8s/monitoring/alerts/ kubectl apply -f k8s/longhorn/longhorn-servicemonitor.yaml - - name: blackbox-exporter - namespace: monitoring - chart: prometheus-community/prometheus-blackbox-exporter - version: "~11" - values: - - k8s/monitoring/blackbox-exporter-values.yaml - needs: - - monitoring/prometheus - - ingress-nginx/ingress-nginx - # ── CI/CD (Forgejo + runner + Argo CD) ─────────────────────────────────────── # Required env vars: # FORGEJO_ADMIN_PASSWORD — bootstrap admin password (set once, stored in .env) @@ -672,99 +654,8 @@ releases: # ── Dashboard (Portainer) ───────────────────────────────────────────────────── - - name: portainer - namespace: dashboard - createNamespace: true - chart: portainer/portainer - values: - - k8s/portainer/portainer-values.yaml - hooks: - - events: ["presync"] - command: bash - args: - - -c - - | - bash k8s/base/namespace-setup.sh dashboard - # ── Messaging Queue (SQS-like Kafka) ───────────────────────────────────────── - - name: strimzi-operator - namespace: sqs - createNamespace: true - chart: strimzi/strimzi-kafka-operator - version: 0.46.0 - values: - - watchNamespaces: ["sqs"] - - - name: kafka-cluster - namespace: sqs - chart: k8s/sqs/charts/kafka-cluster - needs: - - sqs/strimzi-operator - values: - - namespace: sqs - nodePool: - replicas: 3 - storage: - class: longhorn-kafka - sizeGi: 10 - resources: - memory: 5Gi - cpu: "2" - - - name: kmsvc-redis - namespace: sqs - chart: bitnami/redis - version: 20.6.0 - values: - - architecture: standalone - global: - security: - allowInsecureImages: true - image: - repository: bitnamilegacy/redis - auth: - enabled: false - master: - persistence: - enabled: true - storageClass: longhorn - size: 2Gi - resources: - limits: - memory: 1Gi - requests: - memory: 1Gi - - - name: queue-crd - namespace: sqs - chart: k8s/sqs/charts/queue-crd - needs: - - sqs/kafka-cluster - - sqs/kmsvc-redis - values: - - namespace: sqs - kafkaBrokers: "{{ env "KAFKA_BOOTSTRAP" }}" - redisAddr: "{{ env "REDIS_ADDR" }}" - - - name: management-service - namespace: sqs - chart: k8s/sqs/charts/management-service - needs: - - sqs/kafka-cluster - - sqs/kmsvc-redis - values: - - namespace: sqs - env: - kafkaBrokers: "{{ env "KAFKA_BOOTSTRAP" }}" - redisAddr: "{{ env "REDIS_ADDR" }}" - authentikIssuerURL: "https://authentik.{{ env "CLUSTER_DOMAIN" }}/application/o/kafaka/" - authentikAudience: "QI0gPtR99ar8VvhK8Tqox4SDkTKzbNU7lbgwBNSc" - ingress: - enabled: true - host: kmsvc.{{ env "CLUSTER_DOMAIN" }} - clusterIssuer: homelab-ca - # ── Story Crater Backend ─────────────────────────────────────────────────────── # Story Crater Backend — migrated to CloudNativePG in ddb namespace # The story_crater database is created by CNPG bootstrap.initdb.postInitApplicationSQL. @@ -872,13 +763,6 @@ releases: # ── Claude Terminal (persistent dev environment) ───────────────────────────── - - name: claude-terminal - namespace: dev-tools - createNamespace: true - chart: ./k8s/dev-tools - values: - - k8s/dev-tools/values.yaml - # ── Global Reloader Configuration ──────────────────────────────────────────── hooks: diff --git a/k8s/argocd/apps/phase1-hookless-0.yaml b/k8s/argocd/apps/phase1-hookless-0.yaml new file mode 100644 index 0000000..2a14b3c --- /dev/null +++ b/k8s/argocd/apps/phase1-hookless-0.yaml @@ -0,0 +1,172 @@ +# Phase 1 — Hookless releases: strimzi-operator, kafka-cluster, kmsvc-redis, queue-crd, management-service + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: strimzi-operator + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "0" +spec: + project: homelab + source: + repoURL: https://strimzi.io/charts/ + chart: strimzi-kafka-operator + targetRevision: 0.46.0 + helm: + values: | + watchNamespaces: ["sqs"] + destination: + server: https://kubernetes.default.svc + namespace: sqs + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kmsvc-redis + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "0" +spec: + project: homelab + source: + repoURL: https://charts.bitnami.com/bitnami + chart: redis + targetRevision: 20.6.0 + helm: + values: | + architecture: standalone + global: + security: + allowInsecureImages: true + image: + repository: bitnamilegacy/redis + auth: + enabled: false + master: + persistence: + enabled: true + storageClass: longhorn + size: 2Gi + resources: + limits: + memory: 1Gi + requests: + memory: 1Gi + destination: + server: https://kubernetes.default.svc + namespace: sqs + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kafka-cluster + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "1" +spec: + project: homelab + source: + repoURL: https://forgejo.riotpiao.homelab.com/riotpiao.com/homelab.git + targetRevision: main + path: k8s/sqs/charts/kafka-cluster + helm: + values: | + namespace: sqs + nodePool: + replicas: 3 + storage: + class: longhorn-kafka + sizeGi: 10 + resources: + memory: 5Gi + cpu: "2" + destination: + server: https://kubernetes.default.svc + namespace: sqs + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: queue-crd + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "1" +spec: + project: homelab + source: + repoURL: https://forgejo.riotpiao.homelab.com/riotpiao.com/homelab.git + targetRevision: main + path: k8s/sqs/charts/queue-crd + helm: + values: | + namespace: sqs + kafkaBrokers: "kmsvc-kafka-bootstrap.sqs.svc.cluster.local:9092" + redisAddr: "kmsvc-redis-master.sqs.svc.cluster.local:6379" + destination: + server: https://kubernetes.default.svc + namespace: sqs + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: management-service + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "1" +spec: + project: homelab + source: + repoURL: https://forgejo.riotpiao.homelab.com/riotpiao.com/homelab.git + targetRevision: main + path: k8s/sqs/charts/management-service + helm: + values: | + namespace: sqs + env: + kafkaBrokers: "kmsvc-kafka-bootstrap.sqs.svc.cluster.local:9092" + redisAddr: "kmsvc-redis-master.sqs.svc.cluster.local:6379" + authentikIssuerURL: "https://authentik.riotpiao.homelab.com/application/o/kafaka/" + authentikAudience: "QI0gPtR99ar8VvhK8Tqox4SDkTKzbNU7lbgwBNSc" + ingress: + enabled: true + host: kmsvc.riotpiao.homelab.com + clusterIssuer: homelab-ca + destination: + server: https://kubernetes.default.svc + namespace: sqs + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/k8s/argocd/apps/phase1-hookless-1.yaml b/k8s/argocd/apps/phase1-hookless-1.yaml new file mode 100644 index 0000000..689d9b0 --- /dev/null +++ b/k8s/argocd/apps/phase1-hookless-1.yaml @@ -0,0 +1,55 @@ +# Phase 1 — Hookless releases continued: promtail, portainer + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: promtail + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "1" +spec: + project: homelab + source: + repoURL: https://grafana.github.io/helm-charts + chart: promtail + targetRevision: latest + helm: + valueFiles: + - k8s/logging/promtail-values.yaml + destination: + server: https://kubernetes.default.svc + namespace: logging + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: portainer + namespace: argocd + annotations: + argocd.argoproj.io/sync-wave: "3" +spec: + project: homelab + source: + repoURL: https://portainer.github.io/k8s/ + chart: portainer + targetRevision: latest + helm: + valueFiles: + - k8s/portainer/portainer-values.yaml + destination: + server: https://kubernetes.default.svc + namespace: dashboard + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true