Skip to content

Conversation

omerap12
Copy link
Contributor

Pull Request Description

As mentioned in this comment, we need to add CI for the Helm chart. We can use the chart-testing-action for this purpose.

This action will deploy the entire aibrix-system and verify that all pods are healthy. I tested it locally (outside of GitHub Actions), and it works as expected.

Related Issues

Resolves: #[Insert issue number(s)]

Important: Before submitting, please complete the description above and review the checklist below.


Contribution Guidelines (Expand for Details)

We appreciate your contribution to aibrix! To ensure a smooth review process and maintain high code quality, please adhere to the following guidelines:

Pull Request Title Format

Your PR title should start with one of these prefixes to indicate the nature of the change:

  • [Bug]: Corrections to existing functionality
  • [CI]: Changes to build process or CI pipeline
  • [Docs]: Updates or additions to documentation
  • [API]: Modifications to aibrix's API or interface
  • [CLI]: Changes or additions to the Command Line Interface
  • [Misc]: For changes not covered above (use sparingly)

Note: For changes spanning multiple categories, use multiple prefixes in order of importance.

Submission Checklist

  • PR title includes appropriate prefix(es)
  • Changes are clearly explained in the PR description
  • New and existing tests pass successfully
  • Code adheres to project style and best practices
  • Documentation updated to reflect changes (if applicable)
  • Thorough testing completed, no regressions introduced

By submitting this PR, you confirm that you've read these guidelines and your changes align with the project's contribution standards.

Copy link
Contributor

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@omerap12
Copy link
Contributor Author

cc @Jeffwan

- name: Install kubectl
uses: azure/setup-kubectl@v4

- name: Install dependencies # TODO: use main dependency and not release one
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open to suggestions on how to install the dependency from the head branch

Copy link
Collaborator

@Jeffwan Jeffwan Aug 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated the latest installation guidance, please take a look https://aibrix.readthedocs.io/latest/getting_started/installation/installation.html#stable-version-using-helm

Could you take a look?

Option 1, install kustomization dependency

We need to install nightly dependencies, PR author may touch those files as well

Option 2: install helm

Install envoy-gateway helm from their remote chart repository.

I think option 2 is the preferred way and we do not need to maintain dependency manifest in future. What do you think?

one more comment, beside the installation testing, we can do some basic checks firstly. like helm lint dist/chart etc to early fail the test

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah. option 2 seems better to me too. I'll adjust and add lint check

@omerap12
Copy link
Contributor Author

To check this out run the following:

kind create cluster
cd aibrix/dist/chart
kubectl create -f https://github.com/vllm-project/aibrix/releases/download/v0.3.0/aibrix-dependency-v0.3.0.yaml
kubectl create ns aibrix-system
ct install --chart-dirs . --charts . --namespace aibrix-system

Make sure you install the chart testing framework

brew install chart-testing

@omerap12
Copy link
Contributor Author

omerap12 commented Aug 1, 2025

Also tested using https://github.com/nektos/act?tab=readme-ov-file
And got the following:

 namespace/aibrix-system created
| Installing charts...
| Version increment checking disabled.
| 
| ------------------------------------------------------------------------------------------------------------------------
|  Charts to be processed:
| ------------------------------------------------------------------------------------------------------------------------
|  aibrix => (version: "0.3.0", path: ".")
| ------------------------------------------------------------------------------------------------------------------------
| 
| Installing chart "aibrix => (version: \"0.3.0\", path: \".\")"...
| NAME: aibrix-f0lw5gujjd
| LAST DEPLOYED: Fri Aug  1 13:18:34 2025
| NAMESPACE: aibrix-system
| STATUS: deployed
| REVISION: 1
| TEST SUITE: None
| NAME: aibrix-f0lw5gujjd
| LAST DEPLOYED: Fri Aug  1 13:18:34 2025
| NAMESPACE: aibrix-system
| STATUS: deployed
| REVISION: 1
| TEST SUITE: None
| ========================================================================================================================
| ........................................................................................................................
| ==> Events of namespace aibrix-system
| ........................................................................................................................
| LAST SEEN   TYPE      REASON              OBJECT                                            SUBOBJECT                           SOURCE                                                                            MESSAGE                                                                                                                           FIRST SEEN   COUNT   NAME
| 92s         Normal    SuccessfulCreate    replicaset/aibrix-redis-master-5d5dc77b                                               replicaset-controller                                                             Created pod: aibrix-redis-master-5d5dc77b-xp6wl                                                                                   92s          1       aibrix-redis-master-5d5dc77b.1857a71bccf666ab
| 92s         Normal    SuccessfulCreate    replicaset/aibrix-gpu-optimizer-f49dd764d                                             replicaset-controller                                                             Created pod: aibrix-gpu-optimizer-f49dd764d-k9sv4                                                                                 92s          1       aibrix-gpu-optimizer-f49dd764d.1857a71bccf7f36c
| 92s         Normal    ScalingReplicaSet   deployment/aibrix-metadata-service                                                    deployment-controller                                                             Scaled up replica set aibrix-metadata-service-84dbb54b9d from 0 to 1                                                              92s          1       aibrix-metadata-service.1857a71bc40ea106
| 92s         Normal    Scheduled           pod/aibrix-redis-master-5d5dc77b-xp6wl                                                default-scheduler                                                                 Successfully assigned aibrix-system/aibrix-redis-master-5d5dc77b-xp6wl to chart-testing-control-plane                             92s          1       aibrix-redis-master-5d5dc77b-xp6wl.1857a71bd931507a
| 92s         Normal    SuccessfulCreate    replicaset/aibrix-metadata-service-84dbb54b9d                                         replicaset-controller                                                             Created pod: aibrix-metadata-service-84dbb54b9d-lcmb8                                                                             92s          1       aibrix-metadata-service-84dbb54b9d.1857a71bcceeff2d
| 92s         Normal    ScalingReplicaSet   deployment/aibrix-redis-master                                                        deployment-controller                                                             Scaled up replica set aibrix-redis-master-5d5dc77b from 0 to 1                                                                    92s          1       aibrix-redis-master.1857a71bc40ff4fc
| 92s         Normal    SuccessfulCreate    replicaset/aibrix-controller-manager-76697d65d4                                       replicaset-controller                                                             Created pod: aibrix-controller-manager-76697d65d4-5bdxn                                                                           92s          1       aibrix-controller-manager-76697d65d4.1857a71bccf4af73
| 92s         Normal    SuccessfulCreate    replicaset/aibrix-gateway-plugins-98f4ddf8b                                           replicaset-controller                                                             Created pod: aibrix-gateway-plugins-98f4ddf8b-z6qlg                                                                               92s          1       aibrix-gateway-plugins-98f4ddf8b.1857a71bccf2e094
| 92s         Normal    ScalingReplicaSet   deployment/aibrix-gateway-plugins                                                     deployment-controller                                                             Scaled up replica set aibrix-gateway-plugins-98f4ddf8b from 0 to 1                                                                92s          1       aibrix-gateway-plugins.1857a71bc40652e5
| 92s         Normal    Scheduled           pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg                                            default-scheduler                                                                 Successfully assigned aibrix-system/aibrix-gateway-plugins-98f4ddf8b-z6qlg to chart-testing-control-plane                         92s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a71bd92b4e69
| 92s         Normal    ScalingReplicaSet   deployment/aibrix-controller-manager                                                  deployment-controller                                                             Scaled up replica set aibrix-controller-manager-76697d65d4 from 0 to 1                                                            92s          1       aibrix-controller-manager.1857a71bc40c3cfd
| 92s         Normal    Scheduled           pod/aibrix-metadata-service-84dbb54b9d-lcmb8                                          default-scheduler                                                                 Successfully assigned aibrix-system/aibrix-metadata-service-84dbb54b9d-lcmb8 to chart-testing-control-plane                       92s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a71bd9306ec7
| 92s         Normal    ScalingReplicaSet   deployment/aibrix-gpu-optimizer                                                       deployment-controller                                                             Scaled up replica set aibrix-gpu-optimizer-f49dd764d from 0 to 1                                                                  92s          1       aibrix-gpu-optimizer.1857a71bc40d0b02
| 92s         Normal    Scheduled           pod/aibrix-controller-manager-76697d65d4-5bdxn                                        default-scheduler                                                                 Successfully assigned aibrix-system/aibrix-controller-manager-76697d65d4-5bdxn to chart-testing-control-plane                     92s          1       aibrix-controller-manager-76697d65d4-5bdxn.1857a71bd92fcc9b
| 92s         Normal    Scheduled           pod/aibrix-gpu-optimizer-f49dd764d-k9sv4                                              default-scheduler                                                                 Successfully assigned aibrix-system/aibrix-gpu-optimizer-f49dd764d-k9sv4 to chart-testing-control-plane                           92s          1       aibrix-gpu-optimizer-f49dd764d-k9sv4.1857a71bd930e467
| 91s         Normal    Pulling             pod/aibrix-redis-master-5d5dc77b-xp6wl            spec.containers{master}             kubelet, chart-testing-control-plane                                              Pulling image "redis:7.4"                                                                                                         91s          1       aibrix-redis-master-5d5dc77b-xp6wl.1857a71c155f99e9
| 91s         Normal    Pulling             pod/aibrix-controller-manager-76697d65d4-5bdxn    spec.containers{manager}            kubelet, chart-testing-control-plane                                              Pulling image "aibrix/controller-manager:nightly"                                                                                 91s          1       aibrix-controller-manager-76697d65d4-5bdxn.1857a71c13773b9b
| 91s         Normal    Pulling             pod/aibrix-gpu-optimizer-f49dd764d-k9sv4          spec.containers{gpu-optimizer}      kubelet, chart-testing-control-plane                                              Pulling image "aibrix/runtime:nightly"                                                                                            91s          1       aibrix-gpu-optimizer-f49dd764d-k9sv4.1857a71c15700669
| 91s         Normal    Pulling             pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Pulling image "busybox:stable"                                                                                                    91s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a71c154e39a2
| 91s         Normal    Pulling             pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Pulling image "busybox:stable"                                                                                                    91s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a71c15161fa7
| 89s         Normal    LeaderElection      lease/aibrix-controller-manager                                                       aibrix-controller-manager-76697d65d4-5bdxn_3336893e-fc48-4c34-897e-00dd118a1b73   aibrix-controller-manager-76697d65d4-5bdxn_3336893e-fc48-4c34-897e-00dd118a1b73 became leader                                     89s          1       aibrix-controller-manager.1857a71c89828972
| 89s         Normal    Created             pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Created container: init-c                                                                                                         89s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a71c7e38216a
| 89s         Normal    Pulled              pod/aibrix-controller-manager-76697d65d4-5bdxn    spec.containers{manager}            kubelet, chart-testing-control-plane                                              Successfully pulled image "aibrix/controller-manager:nightly" in 1.262s (1.262s including waiting). Image size: 33425040 bytes.   89s          1       aibrix-controller-manager-76697d65d4-5bdxn.1857a71c5ebe7e7c
| 89s         Normal    Created             pod/aibrix-controller-manager-76697d65d4-5bdxn    spec.containers{manager}            kubelet, chart-testing-control-plane                                              Created container: manager                                                                                                        89s          1       aibrix-controller-manager-76697d65d4-5bdxn.1857a71c5f7555f6
| 89s         Normal    Started             pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Started container init-c                                                                                                          89s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a71c841a9bab
| 89s         Normal    Pulled              pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Successfully pulled image "busybox:stable" in 516ms (1.752s including waiting). Image size: 1852331 bytes.                        89s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a71c7d85169a
| 89s         Normal    Created             pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Created container: init-c                                                                                                         89s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a71c87b4cbfa
| 89s         Normal    Pulled              pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Successfully pulled image "busybox:stable" in 124ms (1.873s including waiting). Image size: 1852331 bytes.                        89s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a71c84f365ae
| 89s         Normal    Started             pod/aibrix-controller-manager-76697d65d4-5bdxn    spec.containers{manager}            kubelet, chart-testing-control-plane                                              Started container manager                                                                                                         89s          1       aibrix-controller-manager-76697d65d4-5bdxn.1857a71c68cb9b6e
| 88s         Normal    Started             pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.initContainers{init-c}         kubelet, chart-testing-control-plane                                              Started container init-c                                                                                                          88s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a71c92810759
| 87s         Normal    Created             pod/aibrix-redis-master-5d5dc77b-xp6wl            spec.containers{master}             kubelet, chart-testing-control-plane                                              Created container: master                                                                                                         87s          1       aibrix-redis-master-5d5dc77b-xp6wl.1857a71cf44f13b7
| 87s         Normal    Pulled              pod/aibrix-redis-master-5d5dc77b-xp6wl            spec.containers{master}             kubelet, chart-testing-control-plane                                              Successfully pulled image "redis:7.4" in 1.852s (3.724s including waiting). Image size: 44810850 bytes.                           87s          1       aibrix-redis-master-5d5dc77b-xp6wl.1857a71cf35f0d37
| 87s         Normal    Started             pod/aibrix-redis-master-5d5dc77b-xp6wl            spec.containers{master}             kubelet, chart-testing-control-plane                                              Started container master                                                                                                          87s          1       aibrix-redis-master-5d5dc77b-xp6wl.1857a71cfefcb16b
| 82s         Normal    Pulling             pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.containers{gateway-plugin}     kubelet, chart-testing-control-plane                                              Pulling image "aibrix/gateway-plugins:nightly"                                                                                    82s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a71e22312f66
| 82s         Normal    Pulling             pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.containers{metadata-service}   kubelet, chart-testing-control-plane                                              Pulling image "aibrix/metadata-service:nightly"                                                                                   82s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a71e224891e7
| 74s         Normal    Pulled              pod/aibrix-gpu-optimizer-f49dd764d-k9sv4          spec.containers{gpu-optimizer}      kubelet, chart-testing-control-plane                                              Successfully pulled image "aibrix/runtime:nightly" in 12.772s (16.495s including waiting). Image size: 302384463 bytes.           74s          1       aibrix-gpu-optimizer-f49dd764d-k9sv4.1857a71feca75490
| 74s         Normal    Started             pod/aibrix-gpu-optimizer-f49dd764d-k9sv4          spec.containers{gpu-optimizer}      kubelet, chart-testing-control-plane                                              Started container gpu-optimizer                                                                                                   74s          1       aibrix-gpu-optimizer-f49dd764d-k9sv4.1857a71ff8811f08
| 74s         Normal    Created             pod/aibrix-gpu-optimizer-f49dd764d-k9sv4          spec.containers{gpu-optimizer}      kubelet, chart-testing-control-plane                                              Created container: gpu-optimizer                                                                                                  74s          1       aibrix-gpu-optimizer-f49dd764d-k9sv4.1857a71fede90770
| 71s         Normal    Started             pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.containers{gateway-plugin}     kubelet, chart-testing-control-plane                                              Started container gateway-plugin                                                                                                  71s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a720ab834dbf
| 71s         Normal    Created             pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.containers{gateway-plugin}     kubelet, chart-testing-control-plane                                              Created container: gateway-plugin                                                                                                 71s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a720a24214a6
| 71s         Normal    Pulled              pod/aibrix-gateway-plugins-98f4ddf8b-z6qlg        spec.containers{gateway-plugin}     kubelet, chart-testing-control-plane                                              Successfully pulled image "aibrix/gateway-plugins:nightly" in 1.155s (10.726s including waiting). Image size: 34210861 bytes.     71s          1       aibrix-gateway-plugins-98f4ddf8b-z6qlg.1857a720a1896528
| 70s         Normal    Started             pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.containers{metadata-service}   kubelet, chart-testing-control-plane                                              Started container metadata-service                                                                                                70s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a720f8789815
| 70s         Normal    Created             pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.containers{metadata-service}   kubelet, chart-testing-control-plane                                              Created container: metadata-service                                                                                               70s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a720ed1b28f5
| 70s         Normal    Pulled              pod/aibrix-metadata-service-84dbb54b9d-lcmb8      spec.containers{metadata-service}   kubelet, chart-testing-control-plane                                              Successfully pulled image "aibrix/metadata-service:nightly" in 1.256s (11.981s including waiting). Image size: 31790639 bytes.    70s          1       aibrix-metadata-service-84dbb54b9d-lcmb8.1857a720ec68c79f
| 12s         Warning   Unhealthy           pod/aibrix-controller-manager-76697d65d4-5bdxn    spec.containers{manager}            kubelet, chart-testing-control-plane                                              Readiness probe failed: HTTP probe failed with statuscode: 500                                                                    78s          8       aibrix-controller-manager-76697d65d4-5bdxn.1857a71f0ebce07e
| ........................................................................................................................
| <== Events of namespace aibrix-system
| ........................................................................................................................
| ========================================================================================================================
| Deleting release "aibrix-f0lw5gujjd"...
| release "aibrix-f0lw5gujjd" uninstalled
| 
| ------------------------------------------------------------------------------------------------------------------------
|  ✔︎ aibrix => (version: "0.3.0", path: ".")
| ------------------------------------------------------------------------------------------------------------------------
| All charts installed successfully
[Test Helm Chart/test]   ✅  Success - Main Chart test [1m39.698913859s]
[Test Helm Chart/test] ⭐ Run Post Create kind cluster
[Test Helm Chart/test]   🐳  docker exec cmd=[/opt/acttoolcache/node/18.20.8/arm64/bin/node /var/run/act/actions/[email protected]/cleanup.js] user= workdir=
| Error response from daemon: No such container: kind-registry
| Deleting cluster "chart-testing" ...
| Deleted nodes: ["chart-testing-control-plane"]
[Test Helm Chart/test]   ✅  Success - Post Create kind cluster [3.10663869s]
[Test Helm Chart/test] ⭐ Run Post Set up chart-testing
[Test Helm Chart/test]   🐳  docker cp src=/home/ec2-user/.cache/act/[email protected]/ dst=/var/run/act/actions/[email protected]/
[Test Helm Chart/test] ⭐ Run Post sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da
[Test Helm Chart/test]   🐳  docker cp src=/home/ec2-user/.cache/act/sigstore-cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da/ dst=/var/run/act/actions/sigstore-cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da/
[Test Helm Chart/test]   ✅  Success - Post sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da [48.419325ms]
[Test Helm Chart/test]   ✅  Success - Post Set up chart-testing [116.397559ms]
[Test Helm Chart/test] ⭐ Run Post actions/[email protected]
[Test Helm Chart/test]   🐳  docker exec cmd=[/opt/acttoolcache/node/18.20.8/arm64/bin/node /var/run/act/actions/[email protected]/dist/cache-save/index.js] user= workdir=
[Test Helm Chart/test]   ✅  Success - Post actions/[email protected] [321.558706ms]
[Test Helm Chart/test] ⭐ Run Complete job
[Test Helm Chart/test] Cleaning up container for job test
[Test Helm Chart/test]   ✅  Success - Complete job
[Test Helm Chart/test] 🏁  Job succeeded

@Jeffwan Jeffwan changed the title Feat: Add chart CI Feat: Add AIBrix Helm chart CI Aug 7, 2025
Copy link
Collaborator

@Jeffwan Jeffwan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good. this is great! We can safely promote helm now

@Jeffwan Jeffwan merged commit 69f6a8f into vllm-project:main Aug 7, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants