Files
poimen-memory/ARGOCD-TRACKING.md
T

6.3 KiB

Poimen Memory — ArgoCD Tracking & Deployment

Status

Poimen Memory is tracked in homelab ArgoCD
All config files in place
Ready to deploy on next homelab sync


Architecture

Homelab ArgoCD Root
    ↓ (wave 7)
71-poimen-memory.yaml (homelab repo)
    ↓ syncs k8s/argocd/ from Poimen Memory repo
Poimen Memory k8s/argocd/
    ├── kustomization.yaml
    └── memory-database-app.yaml
         ↓ syncs k8s/infra/databases/
    Memory CNPG Cluster (wave 2 within Poimen Memory)

Configuration Files

1. Homelab Repository

Location: /Users/rockliang/workplace/homelab/k8s/argocd/

File 1: projects/homelab-project.yaml (UPDATED)

sourceRepos:
  - https://github.com/Riotpiaole/riotpiao.homelab.com.git
  - https://github.com/Riotpiaole/Poimen-memory.git  # ← ADDED
  - https://forgejo.riotpiao.com/rock/*
  # ... public Helm repos

What it does: Authorizes ArgoCD to sync from Poimen Memory repo

File 2: apps/71-poimen-memory.yaml (NEW)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: poimen-memory-root
  annotations:
    argocd.argoproj.io/sync-wave: "7"
spec:
  project: homelab
  source:
    repoURL: https://github.com/Riotpiaole/Poimen-memory.git
    path: k8s/argocd
  destination:
    server: https://kubernetes.default.svc

What it does: Root application that syncs the Poimen Memory app-of-apps

2. Poimen Memory Repository

Location: /Users/rockliang/workplace/Poimen/memory/k8s/argocd/

File 1: kustomization.yaml (NEW)

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - memory-database-app.yaml

What it does: Declares the application manifests for Poimen Memory

File 2: memory-database-app.yaml (NEW)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: poimen-memory-database
  annotations:
    argocd.argoproj.io/sync-wave: "2"  # Wave 2 = databases
spec:
  project: homelab
  source:
    repoURL: https://github.com/Riotpiaole/Poimen-memory.git
    path: k8s/infra/databases
  destination:
    server: https://kubernetes.default.svc

What it does: Syncs the CNPG Postgres cluster config from k8s/infra/databases/


Deployment Wave Order

Wave 0: Homelab Root (homelab-root.yaml)
    ↓
Wave 2: Databases (k8s/infra/databases/)
    ├── 40-data.yaml (homelab databases)
    │   ├── authentik-db
    │   ├── temporal-db
    │   └── memory-db (from k8s/infra/databases/kustomization.yaml)
    └── 71-poimen-memory.yaml syncs its own wave 2 (memory-database-app)
    ↓
Wave 7: Applications
    ├── Poimen Memory Root (poimen-memory-root)
    ├── Poimen Services (future)
    └── Other applications

Deployment Checklist

Prerequisites

  • Poimen Memory repo exists on GitHub at Riotpiaole/Poimen-memory
  • Main branch is up-to-date with:
    • k8s/infra/databases/memory-db.yaml
    • k8s/infra/databases/kustomization.yaml
    • k8s/argocd/memory-database-app.yaml
    • k8s/argocd/kustomization.yaml

Homelab Sync

  • Push homelab changes:
    cd ~/workplace/homelab
    git add k8s/argocd/projects/homelab-project.yaml
    git add k8s/argocd/apps/71-poimen-memory.yaml
    git commit -m "feat: add Poimen Memory to ArgoCD tracking (M2.2)"
    git push
    
  • Trigger homelab sync (ArgoCD UI or CLI)
    argocd app sync homelab-root
    
  • Verify wave 7 (Poimen Memory Root app appears)

Deployment

  • Wait for wave 2 (databases sync)
    kubectl get app -n argocd | grep poimen-memory
    # Should show: poimen-memory-root, poimen-memory-database
    
  • Verify cluster health
    kubectl get clusters -n poimen
    # NAME        PHASE       INSTANCES
    # memory-db   Healthy     3/3
    

Troubleshooting

App not appearing in ArgoCD

# Check if homelab-root synced the new app
argocd app get homelab-root
# Look for poimen-memory-root in the "Application Details"

# Check AppProject allows the repo
kubectl get appproject homelab -n argocd -o yaml | grep -A5 sourceRepos
# Should include: https://github.com/Riotpiaole/Poimen-memory.git

Cluster not deploying

# Check app sync status
argocd app get poimen-memory-root
# Look for sync status and any error messages

# Check kustomize
kubectl kustomize /Users/rockliang/workplace/Poimen/memory/k8s/infra/databases/
# Should output memory-db Namespace + Cluster CR

# Check CNPG operator
kubectl get crds | grep postgresql
# Should show postgresql.cnpg.io

CNPG cluster pending

# Check cluster status
kubectl describe cluster memory-db -n poimen

# Check node affinity
kubectl get nodes -L kubernetes.io/hostname

# Check storage class
kubectl get storageclass longhorn-cnpg

Next Steps

  1. Push Poimen Memory repo to GitHub (required for ArgoCD to access it)

    cd ~/workplace/Poimen/memory
    git remote add origin https://github.com/Riotpiaole/Poimen-memory.git
    git push -u origin main
    
  2. Push homelab changes

    cd ~/workplace/homelab
    git add k8s/argocd/
    git commit -m "feat: add Poimen Memory to ArgoCD tracking"
    git push
    
  3. Sync homelab ArgoCD

    • ArgoCD detects changes automatically (or manual sync in UI)
    • Wave 7 app appears and syncs wave 2 (databases)
  4. Verify CNPG cluster (M2.2 complete)

    kubectl get clusters -n poimen
    
  5. Create Poimen Memory app deployment (next phase, M3)

    • Deployment manifest that reads memory-db-app secret
    • Helm chart or StatefulSet for HTTP API server
    • Runs PgRepo against memory-db-rw.poimen.svc.cluster.local

Files Modified

Homelab repo:

  • k8s/argocd/projects/homelab-project.yaml — Added Poimen Memory repo
  • k8s/argocd/apps/71-poimen-memory.yaml — New root app

Poimen Memory repo:

  • k8s/argocd/kustomization.yaml — New app-of-apps root
  • k8s/argocd/memory-database-app.yaml — Database application
  • k8s/infra/databases/memory-db.yaml — CNPG cluster manifest
  • k8s/infra/databases/kustomization.yaml — Kustomization

Status

M2.2 CNPG Postgres — Complete + ArgoCD tracked
Ready to deploy — Push repos and sync homelab
M3 Application — Next: Poimen Memory app deployment