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 |
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 |