-
Notifications
You must be signed in to change notification settings - Fork 8
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
Add Automated Testing with Microservices Demo Workload #48
Comments
Hi @yonch I will take on this task if no one else is working on it. Thanks |
Hi @Chanaka1200 There was some discussion about me learning a few things to take this one on, but I ended up busy and then sick - your contribution would be greatly appreciated. |
Hi @atimeofday I completely understand how things can get busy, and I hope you're feeling better now. I'm happy to help and will do my best to contribute! |
Hi, I’ve almost completed this, but I have an issue. I am using a single GitHub Action for both creating and destroying the VM in AWS. To avoid this, I am trying to use AWS SSM Parameter Store. Therefore, I am requesting permission for it form @yonch. |
Great news! Can you say more about why we need to split to two actions? It's no problem adding permissions to SSM. I'm asking to control complexity and potential leaked resources: if we keep everything in the same github action then it's easier to make cleanup more airtight. When we want to run multiple tests, each one is self contained... |
Hi @yonch I'm currently using a single action file to initiate a VM, set up K3, and deploy microservices, with the VM being destroyed at the end. I suggest splitting this into two separate actions: one for setup and deployment, and another for VM destruction. I found a way to pass the VM ID to the destroy action, but I welcome any other solutions! |
I think you have the right workflow:
I don't have a use-case for separating the VM launch from termination; keeping the VMs around (e.g., so we can manually change things) runs the risk of drift, where the system would not be at the state we expect and so experiment results would be invalid. Do you have a strong use-case that requires separating the creation and termination? If not, let's leave that capability to future work. |
Cool, my mistake. I initially thought we needed to keep this VM up and running to collect the metrics. If I understand correctly now, we run this single action once, invoke a microservice to collect the metrics, and then push the artifact within the same action. Apologies for the confusion—I’ll update this to align with the provided workflow. |
Great @Chanaka1200 sounds good! I'd love to start playing with this when you're done! For a load generator, I am not sure if the Microservices demo bundles one; I've used Locust before, and a Grafana contributor told me over the weekend they use K6 (Grafana labs acquired the company that developed it, so not a huge surprise). |
Thank you for your patience. I’m currently working on it and apologize for the slight delay. Regarding the load generator, there isn’t one available for that microservice at the moment, but I’ll generate it—no issue. Both Locust and K6 are fine, and we can explore what we can do. I have one question: Should I add steps to collect metrics from test-kernel-module.yaml to the current YAML I’m working on? |
If it's not too much trouble, would help to get the parquet file that is produced by test-ebpf-module -- that is what we need. but once there is a Kubernetes cluster with a workload and load generator, I can add that too, so if you think you won't be doing that for a while, PR what you have and I'll continue it on Monday.. |
No worries, I will complete this as soon as possible. Seems there is a load generator within the project that I am currently reviewing. Once I finish, I will implement the workflow and submit the PR. |
Hi @Chanaka1200 I really appreciate you taking on this ticket. I'd like to get a trial run going ahead of Kubecon EU to show some data in the talk. Not expecting any extra work -- it's volunteer work and on your schedule -- happy to pick up where you left off if you want to point me to it. |
Hi @yonch I'm stuck on a small issue—I tried to pass input to run the action, but it's not passing correctly. Once I resolve this, the action file will be almost complete. Reason was Locust load generator pick pass user and rate count via environment variables workflow_dispatch: # Manual trigger for testing microservice-deployment: |
It has been resolved for now using environment variables. I am still verifying, and I will send a PR once the eBPF test actions are implemented. I expect to complete this by the end of the day today. |
Hi @yonch I’m encountering an issue again after deploying with eBPF and microservices. The microservices are not running because there isn’t enough disk space on the two VM types we're using: m7i.metal-24xl for RDT and c5.9xlarge. I believe the machulav/[email protected] is using the default disk size, and there seems to be no option to configure the disk size expansion. Currently, this is part of a pull request that has not been merged yet: Would you recommend using a VM with a larger default disk size, or do you have any suggestions to resolve this issue? Sample event logs:
|
Let me review this, and I will implement and test it as soon as possible. |
Hi @yonch I implemented @tverghis 's repository, but I noticed that it does not include disk space modifications. To address this, I used devin-purple's feature branch for the runner, and it is working fine. Would it be okay to use this branch directly, or would you recommend forking it into my own repository before proceeding? Please let me know if any changes are needed. If this approach is fine, I can send a PR, and we can review whether the eBPF implementation is correct. Additionally, I have a question—while running the load generator, the eBPF collector runs in seconds to gather metrics. Is this behavior acceptable, or should any adjustments be made? |
I think it should be fine to use their branch. Just please use a SHA to refer to the exact commit. I'm pretty sure Devin-purple will not maliciously add code to that branch, but it's the Internet! To be on the safe side let's refer to a known specific revision. |
Sure! I will make the changes and send the PR today. Let me know if any further modifications are needed. I will inform you once the PR is sent. |
Microservices deployment with Test eBPF Metrics collector I have submitted the pull request. Please review it and let me know if any changes are needed. I’m happy to contribute to this project! |
Awesome! Taking a look now |
Please let me know if there's anything I should do or change. I'm happy to help! |
|
I initially used the default resource values. Let me adjust them further to apply more load to the node. I used |
Motivation: To validate different collection strategies, we need automated testing with realistic workloads. The Google Microservices Demo provides a good initial test environment with multiple languages and garbage collectors (Go, C#, Node.js, Python, Java). Building on our existing GitHub Actions infrastructure, we want to automatically deploy Kubernetes and run this demo workload.
The result will be a GitHub Action that spins up an AWS instance, deploys Kubernetes and the workload, and tears down the instance.
Tasks:
This infrastructure will allow testing different collection strategies and can be extended to other workloads in the future.
The text was updated successfully, but these errors were encountered: