Files
homelab/cluster/platform/openviking/application.yaml
Hermes Agent service account fee9965d0a fix: OpenViking sync-wave deadlock - move ExternalSecret ordering inside Application
Remove resource-level sync-wave annotations that caused ArgoCD deadlock.
The wave 8 annotation was meant for platform-level ordering (apps-of-apps)
but was incorrectly applied to individual resources within the Application.

This caused ArgoCD to apply Deployment (wave 0) before ExternalSecret (wave 8),
resulting in CreateContainerConfigError since the pod needed the secret first.

Changes:
- namespace.yaml: Remove sync-wave annotation, add clarifying comment
- externalsecret.yaml: Change sync-wave from 8 to -1 (must sync before Deployment at wave 0)
- application.yaml: Remove sync-wave annotation, document as platform-level only in comments

This ensures:
1. ExternalSecret syncs first (wave -1)
2. Deployment uses it immediately (implicit wave 0)
3. No deadlock

Task: t_3906c41a
2026-08-13 23:42:45 -05:00

84 lines
3.7 KiB
YAML

# ============================================================================
# ArgoCD Application: OpenViking
# Wave: 8 (after Harbor at Wave 7)
# Deployment method: GitOps (Gitea -> ArgoCD)
# ============================================================================
#
# Multi-source: Helm chart from upstream VolcEngine + local values + manifests from repo
# Follows Harbor's pattern exactly (multi-source Application with local value overrides).
#
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: openviking
namespace: argocd
annotations:
# Wave 8 (platform-level, apps-of-apps view): OpenViking Application syncs after Harbor (Wave 7)
# NOTE: This annotation controls the Application's position in the apps-of-apps rollout,
# NOT the ordering of resources within the Application. Internal resource ordering is
# controlled by sync-wave annotations on individual resources (ExternalSecret, etc.).
# argocd.argoproj.io/sync-wave: "8" # Platform-level docs - NOT needed as annotation
description: |
OpenViking Platform Knowledge Infrastructure pilot deployment
Pilot scope: Two corpora (hermes/ skills library, personal/homelab/)
Two consumer profiles (Wong, Shuri) for before/after token comparison.
CRITICAL CONSTRAINT: Vault (~/friday) is the canonical source of truth.
OpenViking's index is a derived cache, rebuilt from vault source files.
If index and vault ever diverge, vault wins and re-index runs.
See inbox/ryan/2026-08-13-openviking-pilot-deployment-plan.md
spec:
project: default
sources:
# Source 1: Helm chart from upstream VolcEngine/OpenViking repository
- repoURL: https://github.com/volcengine/openviking.git
targetRevision: main
path: deploy/helm/openviking
helm:
valueFiles:
# Local values override upstream defaults
- $values/cluster/platform/openviking/values.yaml
# Source 2: Gitea homelab repo — values + ExternalSecret + namespace + ingress manifests
- repoURL: https://gitea.mk-labs.cloud/rblundon/homelab.git
targetRevision: main
path: cluster/platform/openviking
ref: values
directory:
# Exclude the Application manifest itself (already in argocd)
exclude: "application.yaml"
destination:
server: https://kubernetes.default.svc
namespace: openviking
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
# Important: do not prune ExternalSecrets on ArgoCD uninstall
# (credentials live in 1Password, re-sync on pod restart)
- PrunePropagationPolicy=background
# ============================================================================
# DEPLOYMENT GATE: DO NOT SYNC TO ARGOCD UNTIL
# ============================================================================
# 1. Wong's Phase 1 (t_32766900) is complete: ExternalSecret manifests exist in Gitea,
# 1Password vault items (openviking-root-api-key, openviking-embedding-api-key, openviking-vlm-api-key)
# are provisioned and synced to the cluster.
#
# 2. Model staging (separate task): nomic-embed-text-v1.5-Q4_K_M.gguf has been pulled into
# /opt/models/ on astro-orbiter and the router preset INI section appended + router restarted.
# Verify: POST http://10.1.71.130:8002/v1/embeddings with model="nomic-embed-text-v1.5"
# returns a 768-dim float vector.
#
# 3. Smoke test plan (below) documented and ready to execute post-sync.
#
# Contact: Peter Parker (Phase 2 owner) — check for blocker updates via kanban comment
# or by monitoring Wong's task (t_32766900) for completion.
# ============================================================================