Enable all Pixie components to be patched via Helm chart
Is your feature request related to a problem? Please describe.
I need to ensure certain Pixie components run on specific nodes in my cluster.
Currently, I'm able to patch the following via the pixie-operator chart:
- kelvin
- vizier-query-broker
- vizier-cloud-connector
- pl-nats
- vizier-metadata
Example:
patches:
kelvin: '{"spec": {"template": {"spec": { "nodeSelector": {"pixie.io/components": "true" }}}}}'
vizier-query-broker: '{"spec": {"template": {"spec": { "nodeSelector": {"pixie.io/components": "true" }}}}}'
vizier-cloud-connector: '{"spec": {"template": {"spec": { "nodeSelector": {"pixie.io/components": "true" }}}}}'
pl-nats: '{"spec": {"template": {"spec": { "nodeSelector": {"pixie.io/components": "true" }}}}}'
vizier-metadata: '{"spec": {"template": {"spec": { "nodeSelector": {"pixie.io/components": "true" }}}}}
However, I can't patch the following via Helm:
- catalog-operator
- olm-operator
- vizier-operator
Describe the solution you'd like
Provide the ability to patch all deployed resources, not just the Vizier resources:
# A set of custom patches to apply to the deployed Vizier resources.
# The key should be the name of the resource to apply the patch to, and the value is the patch to apply.
# Currently, only a JSON format is accepted, such as:
# `{"spec": {"template": {"spec": { "tolerations": [{"key": "test", "operator": "Exists", "effect": "NoExecute" }]}}}}`
patches: {}
Describe alternatives you've considered N/A
Additional context N/A
I spent a while trying to solve this same issue. There are still components that can't be modified via the helm chart. For instance, its completely unclear how to specify a nodeSelector on the vizier-operator / pixie operator that's controlled by the ClusterServiceVersion CRD.
While there is a nodeSelector value, it winds up applying to everything, not to just the operator pod, it is in effect a way of saying "only use pixie on these nodes" not a way of saying "only put the pixie operator pod on these nodes"
Its not an unusual scenario where you want the ability to control the placement of cluster management and operations software. For instance, not placing the Pixie operator pod on the same nodes as workloads that are intended to scale up and down significantly, or wasting resources on a GPU node, or any one of countless other scenarios. There should be a mechanism to handle this via the helm chart.