-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support deployment of Turing routers with RPC Experiment Engine plugins #158
Merged
romanwozniak
merged 31 commits into
caraml-dev:main
from
romanwozniak:deploy_router_with_plugins
Jan 20, 2022
Merged
Support deployment of Turing routers with RPC Experiment Engine plugins #158
romanwozniak
merged 31 commits into
caraml-dev:main
from
romanwozniak:deploy_router_with_plugins
Jan 20, 2022
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… copy experiment engine plugins into it
# Conflicts: # api/turing/config/config_test.go
romanwozniak
commented
Jan 19, 2022
description: The GitHub repository | ||
type: string | ||
required: true | ||
default: "charts" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To make it possible to manually trigger publish-chart
pipeline from the dev branch
romanwozniak
commented
Jan 19, 2022
krithika369
approved these changes
Jan 20, 2022
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left some small comments / questions. LGTM!
deadlycoconuts
pushed a commit
to deadlycoconuts/turing
that referenced
this pull request
Jan 21, 2022
…ns (caraml-dev#158) * - Remove unused `RouterDefaults.Experiment` and update tests * - Update service builder to prepare persistence volume for router and copy experiment engine plugins into it * - update fiber config if external plugin is used * - publish test chart * - publish test chart * - fix lint * - make it possible to configure manual charts publishing * - unit tests * - fix chart * - fix permissions inside the dockerfile * - use bash alpine image * - use bash image * - fix nil pointer * - use nginx to server plugin binary * - disable adding PluginBinary data to fiber config * - disable adding PluginBinary data to fiber config * - Support downloading plugins from URL * fix lint * - bug fixes * - set executable permission for the plugin binary * - re-use PluginConfig model * - Delete plugins server before knative services are deleted * - fix test * - address naming suggestiong from the PR review, bumping up charts version * - add test case for plugin config * - add test case to cover k8s services for router with plugins * - fix chart * - move mlp mock service into mocks directory, clean up tests * - fix lint
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context:
#153 made it possible to deploy Turing API with experiment engines implemented as RPC plugins, however, these plugins were not propagated into turing routers, deployed by the API. This PR addresses this part.
Details
Deployment of Turing API with RPC plugins is supported through the k8s
initContainer
s: during the deployment, plugin binaries from init containers are copied into a sharedemptyDir
volume, which later is mounted into the mainturing-api
container. However, neitherinitContainer
s, nor shared volumes are currently fully supported by the Knative (which is used for deploying routers), hence it requires a workaround to overcome these limitations.There are two parts to this workaround:
PluginURL
configuration was added into the ExperimentEngine factory, to make it possible for the factory to fetch plugin's binary from the provided URLplugins-server
k8s service (nginx
server), that serves plugin executables as static files via HTTPSo if turing-router is configured with RPC-based experiment engine, then during the initialization, router fetches plugin's binary from the
plugins-server
, stores it inside the container, and then starts the regular communication between host (turing-router) and the plugin (experiment-runner).