ArgoCD
https://argocd.k8s.instance.onyourmarks.tech — live ArgoCD dashboard for the cluster. Use it to check sync status, view app health, and trigger manual syncs.
ArgoCD pulls Helm chart releases from the GitLab OCI registry and reconciles them onto the cluster. Configuration lives in argocd/ (cluster-wide setup), k8s/app/system/*/*.app.yaml (system apps) and k8s/app/platform/<project>/definition/xplatformapp.yaml (per-project apps).
Two layers
- Cluster baseline —
argocd/cluster-baseline-set.yamldeclares anApplicationSetthat watchesk8s/cluster/*and applies each directory as an Application. This is the shared platform layer (Traefik, cert-manager, kube-prometheus-stack, etc.). - Per-project apps — each project under
k8s/app/platform/<project>/definition/contains onexplatformapp.yaml, a CrossplaneXPlatformAppresource. The composition ink8s/app/system/crossplane-system/config/composition/composition-xplatformapps.yamlexpands it into one ArgoCDApplicationper environment (<project>-staging,<project>-production) in theplatformAppProject, plus the matching Kargo Project, Warehouses and Stages. Nobody writesApplicationmanifests for projects by hand.
XPlatformApp resources are not synced by ArgoCD themselves: after adding or changing one, run ./argocd/sync-apps.sh (see Bootstrap). The generated Applications are then fully GitOps (automated, prune, selfHeal).
Generated Application shape
Each generated Application is multi-source: one source is the chart (OCI), the other is this repo (for the values file). With overlaysDir set on the XPlatformApp, a third kustomize source is added for extra manifests per environment.
spec:
project: platform
sources:
- repoURL: oci://registry.gitlab.com/onyourmarks/k8s/oym-k8s-cluster/helm/node-generic
chart: node-generic
targetRevision: "1.3.3" # = parameters.chartVersion
helm:
releaseName: node-generic
valueFiles:
- $values/k8s/app/platform/unisport-agent/helm/values-staging.yaml
- repoURL: https://gitlab.com/onyourmarks/k8s/oym-k8s-cluster.git
targetRevision: main
ref: values
# only with parameters.overlaysDir:
- repoURL: https://gitlab.com/onyourmarks/k8s/oym-k8s-cluster.git
targetRevision: main
path: k8s/app/platform/unisport-agent/overlays/staging
destination:
server: https://kubernetes.default.svc
namespace: unisport-agent-staging
Bumping chartVersion in xplatformapp.yaml (and re-applying) rolls out a new chart version. Editing the values file rolls out config changes. The platform AppProject only allows destination namespaces matching *-staging, *-sprint, *-production and *-kargo.
Step-by-step onboarding: Publishing a project.