Page MenuHomePhabricator

Split the monolithic function-evaluator service up in production so we have differently-scalable pods for python vs. node
Closed, ResolvedPublic

Details

Related Changes in Gerrit:
Show related patches Customize query in gerrit

Event Timeline

Jdforrester-WMF moved this task from To Triage to Backlog on the Abstract Wikipedia team board.

Change 962716 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/deployment-charts@master] wikifunctions: Begin split of function-evaluator into js and python services

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

Change 962717 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/deployment-charts@master] wikifunctions: Switch execution from main to language-specific evaluators

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

Change 962718 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/deployment-charts@master] wikifunctions: Drop references to legacy main evaluator

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

Change 962719 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/deployment-charts@master] wikifunctions: Drop lgeacy main evaluator

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

Jdforrester-WMF changed the task status from Open to In Progress.Oct 3 2023, 6:16 PM
Jdforrester-WMF claimed this task.
Jdforrester-WMF moved this task from Backlog to In Progress on the Abstract Wikipedia team board.

I must admit I've not read the patches in full but on first glance it seems you're removing the evaluator chart and create two new (identical?) ones that only differ by name? If that's the case then it is not required or useful to do so. We can install the evaluator chart multiple times with different configuration (e.g. different images) which I assume should be good enough to run multiple, language specific evaluators.

Change 962719 abandoned by Jforrester:

[operations/deployment-charts@master] wikifunctions: Drop lgeacy main evaluator

Reason:

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

Change 962716 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Begin split of function-evaluator into js and python services

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

Change 965234 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/deployment-charts@master] wikifunctions: Define different ports for different service releases

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

Change 965234 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Define different ports for different service releases

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

Change 965237 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/deployment-charts@master] wikifunctions: Move orchestrator config from chart to service values

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

Change 965237 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Move orchestrator config from chart to service values

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

Change 962717 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Switch execution from main to language-specific evaluators

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

Change 962718 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Drop legacy main (all languages) evaluator

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

Copying stuff from slack so we don't forget:

Removing the release from helmfile does apparently not mean it gets actually uninstalled (as helmfile just no longer knows of it's existence). The correct way to do this would be to helmfile -e staging --selector name=main-evaluator destroy before merging https://gerrit.wikimedia.org/r/c/operations/deployment-charts/+/962718

Change 965225 had a related patch set uploaded (by JMeybohm; author: JMeybohm):

[operations/deployment-charts@master] Revert "wikifunctions: Drop legacy main (all languages) evaluator"

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

Change 965225 merged by jenkins-bot:

[operations/deployment-charts@master] Revert "wikifunctions: Drop legacy main (all languages) evaluator"

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

Change 965689 had a related patch set uploaded (by JMeybohm; author: JMeybohm):

[operations/deployment-charts@master] Revert "Revert "wikifunctions: Drop legacy main (all languages) evaluator""

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

Copying stuff from slack so we don't forget:

Removing the release from helmfile does apparently not mean it gets actually uninstalled (as helmfile just no longer knows of it's existence). The correct way to do this would be to helmfile -e staging --selector name=main-evaluator destroy before merging https://gerrit.wikimedia.org/r/c/operations/deployment-charts/+/962718

Worked nicely and is now documented https://wikitech.wikimedia.org/wiki/Kubernetes/Deployments#Undeploy/delete_a_release

Change 965689 merged by jenkins-bot:

[operations/deployment-charts@master] Revert "Revert "wikifunctions: Drop legacy main (all languages) evaluator""

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

Change 965716 had a related patch set uploaded (by JMeybohm; author: JMeybohm):

[operations/deployment-charts@master] Add new version for base.helper (1.1.1)

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

Change 965717 had a related patch set uploaded (by JMeybohm; author: JMeybohm):

[operations/deployment-charts@master] base.helper: Allow to use ClusterIP services

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

Change 965718 had a related patch set uploaded (by JMeybohm; author: JMeybohm):

[operations/deployment-charts@master] wikifunctions: Use ClusterIP services for evaluators

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

I've added some patches that should make handling more evaluators easier as it removes the requirement to assign (and use) node ports for all those. As the evaluators will only ever be accessed by the cluster local orchestrator, it's safe to use ClusterIP services and the same TCP port for all evaluators.

Change 966219 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] README/etc.: Update instructions for local development to have two evaluator services

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

Change 965716 merged by jenkins-bot:

[operations/deployment-charts@master] Add new version for base.helper (1.1.1)

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

Change 965717 merged by jenkins-bot:

[operations/deployment-charts@master] base.helper: Allow to use ClusterIP services

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

Change 966219 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] README/etc.: Update instructions for local development to have two evaluator services

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

Change 965718 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Use ClusterIP services for evaluators

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

Change 966816 had a related patch set uploaded (by JMeybohm; author: JMeybohm):

[operations/deployment-charts@master] wikifunctions: Make app and mesh port different

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

Change 966816 merged by jenkins-bot:

[operations/deployment-charts@master] wikifunctions: Make app and mesh port different

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

I just merged and deployed the changes mentioned in my last comment. So from my end this is good to resolve.

I just merged and deployed the changes mentioned in my last comment. So from my end this is good to resolve.

Thanks! There's some non-prod follow-up for Beta Cluster and local dev, but I'll call this closed.