Oh, hi there
tl;dr: we’re still moving MediaWiki into Kubernetes in Wikimedia Production; there are resources on Wikitech[0] for folks interested in learning more about the specifics of our Kubernetes pipeline.
⏳ Progress
Kubernetes is the future deployment platform for most Wikimedia code. The developer and deployment experience under Kubernetes will (hopefully) be easier and safer and developers will have more autonomy.
The first Wikimedia production service (Mathoid) moved to Kubernetes in July, 2018. Today there are 25 services using our production Kubernetes infrastructure serving 30,000 requests per second, about 67-ish% of our overall traffic. All services are deployed by their service owners without much oversight.
Our Docker registry[1] contains 311 Docker images with 7,690 tags. Our production images are built via Continuous Integration (CI), using our deployment pipeline. Blubber[2] and PipelineLib[3] were introduced in 2018 to allow developers to specify how they wanted their CI to run and when to publish images to our shared registry.
Now we’re in the process of applying all we’ve learned from our service migration to the MediaWiki migration to Kubernetes.
🏆 Goal
* Open Container Initiative (OCI)-compatible MediaWiki images * Built, tested, and promoted by the image pipeline * Deployed to Kubernetes via Helm * Serving production traffic
🧐 Why
* Development - Standard platform for development and production * Deployment - Safer, simpler, industry standard * Production - Increased capacity, redundancy, reliability
👏 Now
* We’re building Docker images and Helm charts ** Release Engineering crammed all 184 branched extensions, 4 skins, vendor, and core Mediawiki code into a single image alongside our massive localization of 435 languages ** ServiceOps is working on php-fpm, apache, nutcracker, mcrouter and envoy images and their corresponding helm charts
* We’re making our Kubernetes better ** ServiceOps has upgraded our base images and Kubernetes cluster
🔜 Next
* Figuring out how deployments work ** Backports, security releases, and train * Figuring out how image upgrades work ** Is a php-fpm upgrade a deployment now? What does that look like? * Figuring out how our Wikimedia configuration changes ** Currently a change to configuration requires a code change, does this code change kick off a whole image build?
🎓 Resources
Kubernetes will be very impactful in our production services and we would like to encourage those interested in this change to become familiar with its concepts.
Please have a look at our collected Wikitech Kubernetes education resources, tutorials, and guides[0]. Add material if you have had a good experience with a class or tutorial.
Otherwise stay tuned and watch that page for additional resources to be added. You will hear from us again as we have additional things to report.
– <3 Tyler Cipriani (he/him) (On behalf of all the fine folks working on Kubernetes for MediaWiki) Engineering Manager, Release Engineering Wikimedia Foundation
[0]: https://wikitech.wikimedia.org/wiki/Kubernetes/Kubernetes_Education [1]: https://docker-registry.wikimedia.org [2]: https://wikitech.wikimedia.org/wiki/Blubber [3]: https://wikitech.wikimedia.org/wiki/PipelineLib
*subject line reference: https://en.wikipedia.org/wiki/The_More_You_Know
wikitech-l@lists.wikimedia.org