Page MenuHomePhabricator

Deploy the RESTBase front-end service (RESTRouter) to Kubernetes
Open, NormalPublic0 Story Points

Description

We are splitting RESTBase in two components - the (public) REST API router and the storage service (cf. T220449: Split RESTBase in two services: storage service and API router/proxy). This task is about deploying the front-end REST router in Kubernetes.

Service Info

Service name: RESTRouter (name still under discussion, cf. T220761)
Owners: @Pchelolo and @mobrovac (Core Platform Team)
Repository: mediawiki/services/restbase
ETA: by the end of Q4 FY18/19
Description: RESTRouter is the routing part of (the current) RESTBase. It accepts external requests, validates them (performs access checks if needed) and performs all the business logic related to the request: it looks up the storage for possible data hits and, if needed, issues requests to back-end services to complete the requests, sending the response to storage prior to returning it to the client.

Deployment Plan

RESTRouter will effectively take over request handling from RESTBase, so we will need to divert traffic to it without interruption.

First, we deploy RESTRouter to k8s. Next, we expose the storage routes in RESTBase (cf. PR #1103) and test RESTRouter for load (options include synthetic traffic, mirroring, using only background updates/internal requests). Then, we include RESTRouter as an additional back-end for RESTBase. We do more load-tests. Finally, a new LVS is created for RESTRouter and Varnish and all back-end services are instructed to use the new LVS end point instead of the current one. In the post-deploy clean-up step, we remove public route handling from RESTBase, effectively turning it into the back-end storage service.

Benchmarking:

Event Timeline

mobrovac created this task.May 21 2019, 6:58 AM
mobrovac triaged this task as Normal priority.
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptMay 21 2019, 6:58 AM
Restricted Application edited projects, added Operations, Services; removed Services (next). · View Herald TranscriptMay 21 2019, 7:25 AM
mobrovac renamed this task from Deploy the RESTBase front-end service to Kubernetes to Deploy the RESTBase front-end service (RESTRouter) to Kubernetes.

PR #1141 adds the needed Blubber config.

Change 512923 had a related patch set uploaded (by Mobrovac; owner: Mobrovac):
[operations/deployment-charts@master] RESTRouter: Add initial Helm chart

https://gerrit.wikimedia.org/r/512923

mobrovac updated the task description. (Show Details)Wed, May 29, 9:57 AM