Platform Architectuur

Een opinionated stack die proven tooling combineert voor zero-ops microservices.

High-Level Overview

graph TB
    Dev[Developer] -->|git push| GH[GitHub]
    GH -->|webhook| CI[CI/CD Pipeline]
    CI -->|build & scan| Reg[Container Registry]
    CI -->|update manifest| GitOps[Argo CD]
    GitOps -->|sync| K8s[Kubernetes Cluster]
    K8s -->|enforce| Kyverno[Policy Engine]
    K8s -->|metrics/logs/traces| OTel[OTel Collector]
    OTel -->|store| Prom[Prometheus]
    OTel -->|store| Loki[Loki]
    OTel -->|store| Tempo[Tempo]
    Prom --> Grafana[Grafana]
    Loki --> Grafana
    Tempo --> Grafana

    style Dev fill:#3b82f6
    style GH fill:#3b82f6
    style K8s fill:#10b981
    style Kyverno fill:#f59e0b
    style OTel fill:#8b5cf6
    style Grafana fill:#ec4899

StrixHQ combineert best-in-class cloud native tooling in een samenhangend platform. Geen custom glue code, alleen declarative configuration.

Component Stack

GitOps Layer

Argo CD

Git als single source of truth. Declarative deployments met automated sync en drift detection.

  • Continuous reconciliation
  • App-of-apps pattern voor platform bootstrap
  • Sync waves voor dependency ordering
  • Health checks voor custom resources
  • SSO integration (roadmap)

Policy Layer

Kyverno

Kubernetes-native admission control. YAML policies, geen Rego. Enforce mode voor hard rules.

  • Mandatory resource limits
  • Non-root containers
  • Registry restrictions
  • Label compliance
  • Policy exceptions met TTL (Pro tier)

Observability Layer

Grafana Stack

Unified telemetry via OpenTelemetry. Metrics, logs en traces in één pane of glass.

  • Prometheus voor metrics
  • Loki voor log aggregation
  • Tempo voor distributed tracing
  • Correlated telemetry (trace_id linking)
  • Pre-configured dashboards per service

Ingress Layer

ingress-nginx

Battle-tested reverse proxy. SSL termination via cert-manager (Let's Encrypt).

  • Automated TLS cert issuance
  • Path-based routing
  • Rate limiting
  • Request buffering
  • Metrics export naar Prometheus

Service Lifecycle Flow

sequenceDiagram
    participant Dev as Developer
    participant GH as GitHub
    participant CI as CI/CD
    participant GitOps as Argo CD
    participant K8s as Cluster
    participant Kyverno as Policies

    Dev->>GH: git push
    GH->>CI: trigger workflow
    CI->>CI: build + test
    CI->>CI: scan (Trivy)
    CI->>CI: generate SBOM
    CI->>GH: push image
    CI->>GH: update GitOps manifest
    GitOps->>GitOps: detect change
    GitOps->>K8s: apply manifest
    K8s->>Kyverno: admission webhook
    Kyverno->>Kyverno: validate labels
    Kyverno->>Kyverno: validate resources
    Kyverno->>Kyverno: inject sidecars
    Kyverno-->>K8s: allow/deny
    K8s->>K8s: create pods
    K8s-->>Dev: deployment success

Key Design Decisions

Waarom Kyverno (niet OPA Gatekeeper)?

Beslissing: Kyverno voor policy enforcement

Rationale:

  • Kubernetes-native YAML policies (geen Rego learning curve)
  • Eenvoudiger te auditen door non-specialists
  • Snellere policy development cycle
  • Built-in policy reporting

Trade-off: OPA is flexibeler, maar extra complexiteit niet nodig voor PoC scope.

Waarom Grafana Stack (niet DataDog/NewRelic)?

Beslissing: Self-hosted Grafana + Prometheus + Loki + Tempo

Rationale:

  • Geen vendor lock-in, 100% portable
  • Zero per-seat/per-host costs
  • Full control over data retention
  • OpenTelemetry native support

Trade-off: Operators moeten Grafana stack beheren. Acceptabel voor PoC/MVP.

Waarom Argo CD (niet Flux)?

Beslissing: Argo CD voor GitOps

Rationale:

  • Betere UI voor troubleshooting en demos
  • App-of-apps pattern voor multi-tenant
  • Mature RBAC en project isolation
  • Broader adoption in enterprise

Trade-off: Flux is meer Kubernetes-native (CRDs only), maar UI voordeel weegt zwaarder.

Waarom kind (niet k3s/minikube)?

Beslissing: kind voor local development

Rationale:

  • CI-friendly (sneller opstart dan k3s)
  • Multi-node clusters voor real-world testing
  • Officieel K8s project, geen custom patches
  • Docker-in-Docker support voor builds

Trade-off: k3s is lighter, maar kind is industry standard voor CI.

Complete Tech Stack

Orchestration

  • Kubernetes 1.28+
  • Helm 3
  • Kustomize

GitOps

  • Argo CD
  • App-of-apps
  • Sync waves

Policy

  • Kyverno
  • Admission webhooks
  • Policy reports

Observability

  • Prometheus
  • Loki
  • Tempo
  • Grafana
  • OpenTelemetry

Ingress

  • ingress-nginx
  • cert-manager
  • Let's Encrypt

CI/CD

  • GitHub Actions
  • Trivy scanner
  • Syft (SBOM)

Runtimes

  • Node.js 20
  • Go 1.21+
  • Python 3.11+

Tooling

  • Docker
  • kind
  • kubectl
  • yq/jq

Meer technische details nodig?

Bekijk de volledige documentatie of vraag een architecture review aan.