pixie icon indicating copy to clipboard operation
pixie copied to clipboard

Enable all Pixie components to be patched via Helm chart

Open bpschmitt opened this issue 3 years ago • 1 comments

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

bpschmitt avatar Jan 06 '22 04:01 bpschmitt

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.

techdragon avatar Jun 12 '23 16:06 techdragon