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.yamlk8s/infra/databases/kustomization.yamlk8s/argocd/memory-database-app.yamlk8s/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
-
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 -
Push homelab changes
cd ~/workplace/homelab git add k8s/argocd/ git commit -m "feat: add Poimen Memory to ArgoCD tracking" git push -
Sync homelab ArgoCD
- ArgoCD detects changes automatically (or manual sync in UI)
- Wave 7 app appears and syncs wave 2 (databases)
-
Verify CNPG cluster (M2.2 complete)
kubectl get clusters -n poimen -
Create Poimen Memory app deployment (next phase, M3)
- Deployment manifest that reads
memory-db-appsecret - Helm chart or StatefulSet for HTTP API server
- Runs PgRepo against
memory-db-rw.poimen.svc.cluster.local
- Deployment manifest that reads
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