Difference between revisions of "MediaWiki on Kubernetes"
(link to new article on Ansible with Kubernetes) |
(add 12-factor info) |
||
Line 14: | Line 14: | ||
Here's more information about [[Ansible with Kubernetes]] | Here's more information about [[Ansible with Kubernetes]] | ||
+ | |||
+ | We also want to leverage the work being done at WMF. See [[Automated deployment of MediaWiki]] | ||
+ | |||
+ | One of the challenges, especially since it involves potential changes to MediaWiki itself, is the notion of "[https://12factor.net/ The Twelve-Factor App]" and how MediaWiki currently does not meet the criteria in one way or another. There's an open issue: [https://phabricator.wikimedia.org/T173955 Allow DefaultSettings.php be overridden by environment variables] that would help with the config aspect of things. The guys at Roots.io created an alternate WordPress system starting back in 2013 "[https://roots.io/twelve-factor-wordpress/ Twelve-Factor WordPress App]", inspired by an even older post [http://www.darrenmothersele.com/blog/2013/05/29/twelve-factor-drupal/ The Twelve-Factor Drupal Web App]. A more recent presentation on [https://docs.google.com/presentation/d/1AZIq628GEquvljmjSDAqvP0KkgkBWATWHWM39rat66c/edit#slide=id.p Twelve-Factor Drupal] was made at Drupal Camp Colorado in 2019. | ||
== High-level outline == | == High-level outline == | ||
Line 22: | Line 26: | ||
## Create service account at GitHub - to prevent access to private repos through Docker Hub | ## Create service account at GitHub - to prevent access to private repos through Docker Hub | ||
## Add automated builds and automated testing | ## Add automated builds and automated testing | ||
− | # Create [ | + | # Create a [[Kubernetes Operator]] for MediaWiki. |
# Add metrics with the [https://github.com/helm/charts/tree/master/stable/prometheus-operator helm chart prometheus-operator] | # Add metrics with the [https://github.com/helm/charts/tree/master/stable/prometheus-operator helm chart prometheus-operator] | ||
− | Docker (default in kublet <ref>https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md</ref>) is | + | Docker (default in kublet <ref>https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md</ref>) is one of the container runtimes that can be used with Kubernetes. The others include containerd and CRI-O. |
[[Category:Virtualization]] | [[Category:Virtualization]] |
Revision as of 01:28, 5 August 2020
We will provide a MediaWiki platform with the following characteristics:
- self-healing infrastructure
- auto-scaling
- high-availability with multi-server failover
- flexible storage backends
- multi-cloud compatibility
To do so, we'll need to implement Kubernetes.
We will almost certainly leverage Ansible as an orchestration tool. In a recent blog post on ansible.com, Jeff Geerling (@geerlingguy) answers the question: "How Useful is Ansible in a Cloud-native Kubernetes Environment? The short answer is that Ansible can be used for:
- Container Build (Ansible-bender)
- Cluster Management (Kubespray)
- Application Lifecycle (Use Ansible to build Operators with the Operator SDK to handle deployment, upgrades, backups, etc.)
Here's more information about Ansible with Kubernetes
We also want to leverage the work being done at WMF. See Automated deployment of MediaWiki
One of the challenges, especially since it involves potential changes to MediaWiki itself, is the notion of "The Twelve-Factor App" and how MediaWiki currently does not meet the criteria in one way or another. There's an open issue: Allow DefaultSettings.php be overridden by environment variables that would help with the config aspect of things. The guys at Roots.io created an alternate WordPress system starting back in 2013 "Twelve-Factor WordPress App", inspired by an even older post The Twelve-Factor Drupal Web App. A more recent presentation on Twelve-Factor Drupal was made at Drupal Camp Colorado in 2019.
High-level outline[edit | edit source]
- Build image. The WMF official images at Docker Hub do not even include a true database; never mind the extensions we need.
- With ansible-bender we can use ansible-playbook + buildah to create our image.
- Publish images to Docker Hub
- Create organization account at Docker Hub; add freephile
- Create service account at GitHub - to prevent access to private repos through Docker Hub
- Add automated builds and automated testing
- Create a Kubernetes Operator for MediaWiki.
- Add metrics with the helm chart prometheus-operator
Docker (default in kublet [1]) is one of the container runtimes that can be used with Kubernetes. The others include containerd and CRI-O.