Idealogic Production Cluster

This documentation covers the ArgoCD-managed Kubernetes deployments for the Idealogic Production cluster hosted at Xneelo in the Johannesburg data centre.

Cluster overview

Cluster ID

idl-xnl-jhb1-01

Location

Xneelo Johannesburg Data Centre

Management

Rancher

GitOps

ArgoCD with App-of-Apps pattern

Storage

Longhorn

The cluster is bootstrapped via the cluster-bootstrap.yml manifest, which deploys the root ArgoCD Application. This application monitors the argocd/ directory and automatically deploys all child applications defined there.

Why App-of-Apps?

This cluster uses the App-of-Apps pattern recommended by ArgoCD for cluster bootstrapping. Key benefits:

  • Declarative management - A single root application manages all child applications, enabling consistent deployment across the cluster

  • Automated operations - With automated sync and pruning, applications are created, updated, and removed automatically when manifests change in Git

  • Cascading deletion - Proper cleanup through finalizers ensures child applications and their resources are removed when the parent is deleted

  • Version control integration - All infrastructure changes follow standard Git workflows with code review before deployment

Bootstrapped applications

The following applications are deployed via ArgoCD from the argocd/ directory.

Infrastructure

Application Description Namespace Source

certificates

TLS certificate resources managed by cert-manager

Various

Git: certificates/

external-dns

Automatic DNS record management with Cloudflare

external-dns

Helm: external-dns v1.14.3

storage

Longhorn storage class configurations

Various

Git: storage/

Database infrastructure

Application Description Namespace Source

mysql-operator

MySQL Operator for Kubernetes (Oracle)

mysql

Helm: mysql-operator v2.1.9

mysql-idealogic-prod

MySQL InnoDB Cluster for production workloads (details)

mysql

Git: mysql/idealogic-prod/

postgresql-prod

PostgreSQL database for Chatwoot and other applications

postgresql

Helm: bitnamicharts/postgresql v18.1.15

redis-prod

Redis cache in standalone mode

redis

Helm: bitnamicharts/redis v24.1.0

memcache-prod

Memcached for WordPress object caching

memcached

Helm: bitnamicharts/memcached v6.9.2

Applications

Application Description Namespace Source

wordpress-wpca-prod

WP Cycling production WordPress site (wpcycling.com)

wp-wpca-prod

Helm: bitnamicharts/wordpress v19.0.7

wordpress-wpca-test

WP Cycling test WordPress environment

wordpress

Helm: bitnamicharts/wordpress v19.0.7

jasper-reports

JasperReports Server for report generation

jasper-reports-prod

Helm: bitnamicharts/jasperreports v18.0.0

chatwoot-prod

Chatwoot customer engagement platform (chat.idealogic.co.za)

chatwoot

Helm: chatwoot v2.0.9

event-membership-stage

Event Membership application staging environment

event-membership-stage

Git: event-membership/ns-stage/

idealogic-docs

Antora documentation site (docs.idealogic.co.za)

idealogic-docs

Git: doc-site/k8s/

Observability

Application Description Namespace Source

opentelemetry-collector

OpenTelemetry Collector for traces, metrics, and logs

observability

Helm: opentelemetry-collector v0.61.2

The OpenTelemetry Collector exports telemetry to:

  • Grafana Cloud - Traces (Tempo), metrics (Prometheus), and logs (Loki)

  • Elastic Cloud - APM traces, metrics, and logs

Application dependencies

The following diagram shows the key dependencies between applications:

wordpress-wpca-prod ──┬──> mysql-idealogic-prod (database)
                      └──> memcache-prod (object cache)

wordpress-wpca-test ────> mysql-idealogic-prod (database)

jasper-reports ─────────> mysql-idealogic-prod (database)

chatwoot-prod ──────┬──> postgresql-prod (database)
                    └──> redis-prod (cache/queues)

Sync policies

Most applications use automated sync with:

  • prune: true - Remove resources deleted from Git

  • selfHeal: true - Revert manual changes to match Git state

  • CreateNamespace=true - Automatically create target namespaces

The event-membership-stage application has automated sync disabled (automated: null), requiring manual sync operations.

Additional resources