High-level overview of MediaWiki deployment

The following diagram shows a typical, fully featured deployment of the MediaWiki charm on a Kubernetes cloud. The MediaWiki K8s model contains the core application and supporting charms, while external services such as MySQL, the Canonical Observability Stack, ingress, S3-compatible object storage, an identity provider, and SMTP relay infrastructure reside in separate Juju models or external infrastructure.

        flowchart TB
   Users(["Users"])

   S3@{ shape: docs, label: "S3-compatible<br/>object storage"}

   subgraph ExternalIngress["Ingress model"]
      Ingress["haproxy"]
   end

   subgraph ExternalMySQL["MySQL model"]
      MySQL[("MySQL")]
   end

   subgraph ExternalCOS["COS model"]
      COS["Canonical<br/>Observability Stack"]
   end

   subgraph ExternalIdentity["Identity platform model"]
      Identity["Identity provider"]
   end

   subgraph ExternalSMTP["Mail infrastructure"]
     SMTPRelay["SMTP relay"]
   end

   subgraph K8sModel["MediaWiki K8s model"]
      Traefik["traefik-k8s"]
      IngressConfig["ingress-configurator"]
      MediaWiki["mediawiki-k8s"]
      MySQLRouter["mysql-router-k8s"]
      Redis["redis-k8s"]
      S3Int["s3-integrator"]
      SMTPInt["smtp-integrator"]
      OtelCol["opentelemetry-<br/>collector-k8s"]

      IngressConfig ---|"upstream-ingress<br/>(ingress)"| Traefik ---|"traefik-route<br/>(traefik_route)"| MediaWiki
      Redis ---|"redis"| MediaWiki
      MediaWiki ---|"database<br/>(mysql_client)"| MySQLRouter
      MediaWiki ---|"s3-parameters<br/>(s3)"| S3Int
      MediaWiki ---|"smtp<br/>(smtp)"| SMTPInt
      MediaWiki ----|"logging<br/>(loki_push_api)"| OtelCol
      MediaWiki ----|"grafana-dashboard<br/>(grafana_dashboard)"| OtelCol
      MediaWiki ----|"metrics-endpoint<br/>(prometheus_scrape)"| OtelCol
   end

   Users -.-|"HTTP/S"| ExternalIngress
   Ingress ---|"haproxy-route"| IngressConfig
   MySQLRouter ----|"backend-database<br/>(mysql_client)"| ExternalMySQL
   OtelCol --- ExternalCOS
   MediaWiki -----|"oauth"| ExternalIdentity
   S3Int -...-|"S3 API"| S3
   SMTPInt -...-|"SMTP"| ExternalSMTP
    

Components

Component

Role

mediawiki-k8s

Core MediaWiki application charm

traefik-k8s

Reverse proxy; routes HTTP traffic to MediaWiki

ingress-configurator

Bridges Traefik to an external HAProxy deployment via haproxy-route

mysql-router-k8s

Routes database queries to an external MySQL cluster

redis-k8s

Provides caching and asynchronous job execution

s3-integrator

Supplies S3 credentials for user file uploads

smtp-integrator

Supplies SMTP relay configuration for outgoing emails

opentelemetry-collector-k8s

Forwards metrics, logs, and Grafana dashboards to COS