Files
argocd-apps/argocd/applicationsets/platform.yaml
T
unkinben a28aabae78
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/kubeconform Pipeline was successful
Deploy NetBox with CNPG Postgres, Valkey and Authentik SSO
NetBox becomes the source of truth for host/interface/IPAM data as part of
retiring Cobbler (the ENC already moved to encapi; a kickstart-generation
service consuming NetBox comes later and is out of scope here).

Adds the netbox app in namespace netbox:
- netbox-community helm chart 8.3.40 (appVersion v4.6.5) via the OCI
  helm-through-kustomize pattern; bundled Postgres and Valkey subcharts
  disabled in favour of estate-native components.
- CNPG Postgres cluster (2 instances) with the standard per-cluster S3 backup
  stanza (barmanObjectStore -> s3://cnpg-netbox, cephrgw ObjectStoreUser +
  Bucket, nightly ScheduledBackup at 03:40, 30d retention) and a pgbouncer
  Pooler (session mode) that NetBox connects through.
- Standalone Valkey Deployment (valkey/valkey:8-alpine, AOF-persistent PVC)
  serving DB 0 = RQ task queue, DB 1 = cache; matches the litellm standalone
  cache pattern and keeps image control in-estate.
- Gateway + HTTPRoute at netbox.k8s.syd1.au.unkin.net (traefik-internal,
  vault-issuer cert, external-dns), HTTP->HTTPS redirect.
- All credentials via VSO VaultStaticSecret (postgres-credentials,
  netbox-secret-key, netbox-superuser, oauth-credentials); no plain Secrets.
- Authentik OIDC SSO (python-social-auth): REMOTE_AUTH wired via chart values,
  SOCIAL_AUTH_OIDC_* via extraConfig, client secret injected as a YAML fragment
  from Vault; auto-provisions users on first login.

Registers netbox in the platform ApplicationSet and AppProject (destination
namespace + chart sourceRepo).

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-28 16:43:12 +10:00

70 lines
2.2 KiB
YAML

---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: platform-apps
namespace: argocd
spec:
generators:
- git:
repoURL: https://git.unkin.net/unkin/argocd-apps
revision: HEAD
directories:
- path: apps/overlays/*/authentik
- path: apps/overlays/*/artifactapi
- path: apps/overlays/*/bind-system
- path: apps/overlays/*/bind-internal
- path: apps/overlays/*/age-api
- path: apps/overlays/*/cattle-system
- path: apps/overlays/*/cert-manager
- path: apps/overlays/*/certificates
- path: apps/overlays/*/cephrgw-system
- path: apps/overlays/*/cnpg-system
- path: apps/overlays/*/consul
- path: apps/overlays/*/elastic-system
- path: apps/overlays/*/encapi
- path: apps/overlays/*/externaldns
- path: apps/overlays/*/grafana-system
- path: apps/overlays/*/inteldeviceplugins-system
- path: apps/overlays/*/jfrog
- path: apps/overlays/*/kanidm
- path: apps/overlays/*/netbox
- path: apps/overlays/*/node-feature-discovery
- path: apps/overlays/*/pdbmux
- path: apps/overlays/*/priority-classes
- path: apps/overlays/*/puppet
- path: apps/overlays/*/purelb
- path: apps/overlays/*/reflector-system
- path: apps/overlays/*/reloader-system
- path: apps/overlays/*/reposync
- path: apps/overlays/*/traefik-system
- path: apps/overlays/*/vm-system
- path: apps/overlays/*/vpa-system
- path: apps/overlays/*/vault
- path: apps/overlays/*/vso-system
- path: apps/overlays/*/woodpecker
template:
metadata:
name: 'platform-{{path[3]}}' # cluster-app format (e.g., platform-reflector-system)
spec:
project: platform
source:
repoURL: https://git.unkin.net/unkin/argocd-apps
targetRevision: HEAD
path: '{{path}}'
destination:
server: https://kubernetes.default.svc
namespace: '{{path[3]}}' # Use directory name as namespace
ignoreDifferences:
- group: ""
kind: ConfigMap
name: kanidm-repl-certs
jsonPointers:
- /data
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- ServerSideApply=true