aibrix icon indicating copy to clipboard operation
aibrix copied to clipboard

Installation: Separate CRDs from manifest installation

Open Jeffwan opened this issue 9 months ago • 1 comments

🚀 Feature Description and Motivation

Follow up https://github.com/vllm-project/aibrix/pull/793.

Previously, we use apply --server-side as a temporary solution but field ownership mechanism will check field owner, if user mix use different way to upgrade the service, for example, kubectl edit or kubectl apply, it will result in conflicts. That's why some crds was moved to dependencies folder in #793, but this is not something very elegant,

  • We should separate CRDs from components deployments
  • dependency is a logical concepts, it mainly focus on non-aibrix namespace system dependencies like envoy-gateway etc.

Use Case

for easy installation and upgrade

Proposed Solution

  • Separate CRDs from current manifest and install it separately. this is a common practice

Jeffwan avatar Mar 17 '25 18:03 Jeffwan

A side comment, why not install envoy-gateway to aibrix namespace? It is the CP for envoyproxy.

Xunzhuo avatar Mar 19 '25 09:03 Xunzhuo

We recommend users to adopt helm way to install aibrix now. CRDs separation could be separated and this is out-of-box supported. The tricky thing is still to support dependencies.

@Xunzhuo if we install envoy gateway to aibrix namespace ,then all the manifest needs to be managed with aibrix core yamls. just in case user already have their now envoy-gateway setup, I decided to list it as dependencies.

now there're two options

  • option 1: install envoy-gateway helm, then install aibrix-core helm
  • option 2: managed envoy-gateway manifests in aibrix helm, and provide one-command installation experiences.

Do you have any suggestions?

Jeffwan avatar Aug 01 '25 17:08 Jeffwan

Do you have any suggestions?

Let users decide to install envoy/ray/redis with the aibrix helm chart or on their own by using dependencies: https://helm.sh/docs/chart_best_practices/dependencies/

# Chart.yaml
dependencies:
- name: gateway-helm
  repository: oci://docker.io/envoyproxy/gateway-helm
  version: 1.6.1
  condition: gateway-helm.enabled
- name: kuberay-operator
  repository: https://ray-project.github.io/kuberay-helm
  version: 1.4.2
  condition: kuberay-operator.enabled
- name: redis-ha
  repository: https://dandydeveloper.github.io/charts
  version: 4.35.5
  condition: redis-ha.enabled

Then, in the values.yaml of the aibrix chart:

gateway-helm:
  enabled: false
  image: ... # set all defaults here
kuberay-operator:
  enabled: false
  ... # more defaults...

For separating the CRDs, I've seen other projects doing this as well, but I think it's better to let users decide to install or skip CRD install in the helm chart as well, which can also be a simple boolean in the chart. The CRDs can be placed outside the chart directory but included using File.Glob: https://helm.sh/docs/chart_template_guide/accessing_files/

I believe the relative path can reach outside the templates directory by using ../.. syntax.

cabrinha avatar Dec 08 '25 14:12 cabrinha