Skip to main content

Platform Services

Platform services (monitoring, logging, ingress, cert-manager) use the platform project and follow the same convention. They run on the management cluster or on all clusters depending on type.

Namespace Layout​

cluster-mgmt
├── argocd/ ← fixed, not convention
├── crossplane-system/ ← fixed, not convention
├── platform-mgmt-monitoring/
├── platform-mgmt-logging/
└── platform-mgmt-ingress/

cluster-dev / cluster-staging
├── platform-{env}-monitoring/
└── platform-{env}-logging/

cluster-prod (additional prod-only services)
├── platform-prod-monitoring/
├── platform-prod-logging/
├── platform-prod-ingress/ ← prod-only
└── platform-prod-cert-manager/ ← prod-only

Fixed Namespaces Carry Platform Labels​

argocd and crossplane-system do not follow the naming convention but carry semantic labels for traceability:

metadata:
name: argocd
labels:
project: platform
service: argocd
env: mgmt
backstage.io/component: platform-argocd

ApplicationSets for Platform (Multiple Sources)​

Platform services use ArgoCD's Multiple Sources feature to deploy external Helm charts directly from their upstream repositories while injecting values.yaml from our GitOps repository. This avoids maintaining local Chart.yaml files.

# platform-gitops/argocd/applicationsets/platform-services-all.yaml
spec:
generators:
- matrix:
generators:
- list:
elements:
- service: sealed-secrets
wave: "-20"
chartRepo: https://bitnami-labs.github.io/sealed-secrets
chart: sealed-secrets
version: "2.13.3"
# ...
- clusters:
selector:
matchExpressions:
- {key: env, operator: In, values: [mgmt, dev, staging, prod]}
template:
spec:
sources:
- repoURL: "{{chartRepo}}"
chart: "{{chart}}"
targetRevision: "{{version}}"
helm:
valueFiles:
- $values/k8s/platform/_base/{{service}}/values.yaml
- $values/k8s/platform/{{name}}/{{service}}/values.yaml
- repoURL: https://github.com/myorg/platform-gitops
targetRevision: HEAD
ref: values

Platform Services — Tier and Wave Reference​

WaveServiceTier
-20sealed-secretsAll clusters
-10cert-manager, reflectorAll clusters
-5cloudnative-pgAll clusters
0kong, kube-prometheus-stack, redisAll / mgmt
+5alloy, loki, pgadmin, redisinsightAll / mgmt
+10headlamp, n8n, ollamamgmt only

Tier A (all clusters): sealed-secrets, cert-manager, reflector, kong, kube-prometheus-stack, alloy, cloudnative-pg
Tier B (mgmt only): loki, headlamp, redis, redisinsight, pgadmin, n8n, ollama, argocd