Installation: Separate CRDs from manifest installation
🚀 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
A side comment, why not install envoy-gateway to aibrix namespace? It is the CP for envoyproxy.
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?
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.