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