-
Notifications
You must be signed in to change notification settings - Fork 37
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
Nightly Playground High Level Design #130
Comments
Closed
11 tasks
github-project-automation
bot
moved this to Backlog
in OpenSearch Engineering Effectiveness
Oct 30, 2023
gaiksaya
changed the title
Nightly Playground High Level Design and Execution Plan
Nightly Playground High Level Design
Oct 30, 2023
This was referenced Oct 31, 2023
Below is the execution plan for implementing the above design. Adding the same in the main issue.
|
github-project-automation
bot
moved this from In review
to Done
in OpenSearch Engineering Effectiveness
Oct 31, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Terminology
Overview
Background
The OpenSearch and OpenSearch Dashboards distributions are built daily that includes actively developed features for upcoming 1.x, 2.x and 3.0 version. Community users as well as developers would like to be able to play with these new features faster as they're getting built.
Therefore, having a nightly version of playground that consists of these actively built features would be a useful for the community users as well as developers to play around with them as well as provide feedback.
Overview of solution
The solution re-uses opensearch-cluster-cdk to deploy the nightly playground cluster with below enhancements:
New components that would be added:
Stakeholders
Use cases
When: Developing an upcoming feature/bug-fix
Then: I should be able to test my contribution using the nightly playground
When: Interested to test the functionality
Then: I want to able to play around with the functionality in the nightly playground
When: I want to have my own
Then: I should be able to reproduce this set up easily on my infrastructure
When: Receive request to set up multiple playgrounds for different versions
Then: I should be able to set-up multiple playgrounds supporting multiple versions of OpenSearch(-Dashboards) easily and with minimal manual intervention.
Requirements
Out of scope
Proposed Solution
Architecture Diagram
Component Details
Tools Stack: Consist of tools such as AWS step functions, Lambda function and S3 bucket. This stack is responsible for managing the sample data in the cluster. If we receive ad-hoc requests to index a specific type of data, this model can be extended to review, approve or reject the data, copy the data in the s3 bucket and index it into the right cluster. This stack will be shared by all playgrounds.
Notification Stack: This stack consist of resources such as cloudwatch events, Lambda function and SNS. Mainly responsible for monitoring and notifying the clusters. Example, notifying in case cluster health, runs out of disk space, etc. This stack will be responsible for creating GitHub issue as one of the notifying mechanism as well as SNS notification to alert any slack channels or enable notifications. This stack will also be shared by multiple playground instances.
opensearch-cluster-cdk: Originating in opensearch-cluster-cdk repository, this set up consist of 3 dependency based stacks. These stacks will not be shared by multiple playground set ups. Each of
2PR maintainer approval: Before anything can be propagated to Prod, human approval is required. This will be in the form of GitHub issues as well.
Activity diagram:
1. Updating tools and notifications stack
2. Updating opensearch-cluster-cdk stacks
Failure modes
Each of the above metrics will create a GH issue tagging all the maintainers as a notification and possible remediation.
Infrastructure and deployment
We will be using GitHub Actions as the deployment pipeline. This includes deployment to beta and prod environment.
Credentials Management will be handled strictly using OIDC between GitHub repository and AWS cloud. The permissions should be minimal and needs to be reviewed each time someone makes any change.
The text was updated successfully, but these errors were encountered: