Overview

The BRAC proof-of-concept demonstrates an active/standby DC/DR posture for a Kubernetes-hosted application platform on a single physical host. Argo CD drives GitOps from infra/gitops-rke2; identity is centralised on Keycloak; data is replicated DC→DR via Kafka MirrorMaker 2; cutover is performed at the edge HAProxy using backup backends with no DNS movement.

LayerComponents
FoundationArgo CD, cert-manager, Longhorn, webhook-pdns (cert-manager)
Identity & secretsKeycloak, HashiCorp Vault
Data & streamingStrimzi operator, Apache Kafka (KRaft), MirrorMaker 2, Redis operator (Spotahome), Redis (RedisFailover), redis-applier, RedisInsight
CI / CD & IaCSonatype Nexus 3, Jenkins, Ansible AWX, Terrakube, GitLab
ObservabilitySigNoz
Edge / network & sharedHAProxy (edge), PowerDNS, MinIO

Topology

Foundation

Argo CD

DCDR

GitOps controller per cluster — reconciles the live state of DC and DR from a single Git repo.

Open page →

cert-manager

DCDR

TLS certificate lifecycle for in-cluster Ingresses and internal services.

Open page →

Longhorn

DCDR

Distributed block storage — the default StorageClass for every stateful workload in the platform.

Open page →

webhook-pdns (cert-manager)

DCDR

cert-manager DNS-01 ACME solver that talks to the lab PowerDNS over the API.

Open page →

Identity & secrets

Keycloak

DCDR

Central OIDC identity provider for the platform — Vault, Argo CD, AWX, Terrakube, GitLab, Jenkins, Nexus all federate here.

Open page →

HashiCorp Vault

DCDR

Secrets store per cluster — Raft-3, transit auto-unseal, initialised and unsealed.

Open page →

Data & streaming

Strimzi operator

DCDR

Kafka operator — manages KRaft Kafka, KafkaUsers, topics, and (on DR) MirrorMaker 2.

Open page →

Apache Kafka (KRaft)

DCDR

3 brokers + 3 controllers in KRaft mode per cluster — backbone of the cross-cluster replication path.

Open page →

MirrorMaker 2

DR-only

Cross-cluster Kafka replication — runs on DR, pulls from DC.

Open page →

Redis operator (Spotahome)

DCDR

Reconciles RedisFailover CRs — Sentinel-managed Redis primaries with replica failover.

Open page →

Redis (RedisFailover)

DCDR

3 Redis + 3 Sentinel pods per cluster — the platform's KV store, fed by the Kafka WAL.

Open page →

redis-applier

DCDR

Custom Go consumer that reads redis-writes from local Kafka and applies into local Redis.

Open page →

RedisInsight

DCDR

Redis admin UI — raw manifests, exposed via the edge HAProxy.

Open page →

CI / CD & IaC

Sonatype Nexus 3

DCDR

Artifact and container registry for the lab — hosts redis-applier, will mirror Quay/Docker Hub.

Open page →

Jenkins

DCDR

Per-cluster Jenkins LTS controller — pipeline runner for the platform.

Open page →

Ansible AWX

DCDR

Ansible automation platform — operator-managed, OIDC against Keycloak.

Open page →

Terrakube

DCDR

Self-hosted Terraform / OpenTofu collaboration platform — UI, API, executor, registry; OIDC via Keycloak.

Open page →

GitLab

Shared infra

Self-managed GitLab on a dedicated VM — hosts the GitOps repo and POC docs.

Open page →

Observability

SigNoz

DCDR

OpenTelemetry-native APM — no-ZooKeeper, single-node ClickHouse profile per cluster.

Open page →

Edge / network & shared

HAProxy (edge)

Shared infra

L7 edge ingress for the lab — implements DC/DR failover via backup backends.

Open page →

PowerDNS

Shared infra

Authoritative DNS for the lab zone — drives ACME DNS-01 challenges through cert-manager.

Open page →

MinIO

Shared infra

S3-compatible object storage — backs Terrakube remote state and (planned) snapshot buckets.

Open page →