refactor: one self-contained folder per platform service

Each platform/apps/<service>/ now holds its own application.yaml
(multi-source: chart + values + raw-manifest extras), values.yaml, and
any extra manifests (HTTPRoute, RBAC, ClusterSecretStore) together,
replacing the split apps/*.yaml + manifests/*/ + separate *-config
Application pattern.

Root platform-app.yaml now recurses platform/apps/*/application.yaml
only. Extras get a resource-level sync-wave (1) so they still land
after their service's Helm chart within the same Application sync.

Also adds an HTTPRoute for vault (vault.fireflylab.local) - exposed
same as every other service here, accepted as LAN-only exposure.
This commit is contained in:
2026-07-29 23:56:50 +07:00
parent a1cff1dfb9
commit 7a665bdf9d
30 changed files with 133 additions and 169 deletions
+34
View File
@@ -0,0 +1,34 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: harbor
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
project: default
sources:
- repoURL: https://helm.goharbor.io
chart: harbor
targetRevision: "1.16.0" # TODO: verify latest via `helm search repo harbor/harbor --versions`
helm:
valueFiles:
- $values/platform/apps/harbor/values.yaml
- repoURL: https://gitea.fireflylab.cc/duynguyen/cluster-platform.git
targetRevision: main
ref: values
- repoURL: https://gitea.fireflylab.cc/duynguyen/cluster-platform.git
targetRevision: main
path: platform/apps/harbor
directory:
exclude: "{application.yaml,values.yaml}"
destination:
server: https://kubernetes.default.svc
namespace: harbor
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- SkipDryRunOnMissingResource=true
+22
View File
@@ -0,0 +1,22 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: harbor
namespace: harbor
annotations:
argocd.argoproj.io/sync-wave: "1"
spec:
parentRefs:
- name: envoy-gateway
namespace: envoy-gateway-system
hostnames:
- "harbor.fireflylab.local"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
# verify with: kubectl get svc -n harbor (nginx frontend, combines portal+core+registry)
- name: harbor-nginx
port: 80
+30
View File
@@ -0,0 +1,30 @@
expose:
type: clusterIP
tls:
enabled: false
externalURL: http://harbor.fireflylab.local
persistence:
imageChartStorage:
disableRedirect: true
type: filesystem
filesystem:
rootdirectory: /storage
persistentVolumeClaim:
registry:
storageClass: nfs-delete
size: 50Gi
jobservice:
jobLog:
storageClass: nfs-delete
size: 5Gi
database:
storageClass: nfs-delete
size: 5Gi
redis:
storageClass: nfs-delete
size: 2Gi
trivy:
storageClass: nfs-delete
size: 5Gi