Skip to content

v0.7.15 chart bug with affinity merging #133

@d-shi

Description

@d-shi

There seems to be something strange going on with how the merging of affinity values is being done.

When only putting this in values.yaml:

indexer:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - indexer
          topologyKey: "kubernetes.io/hostname"

The expected output is rendered in the chart templates.

However, when trying to add affinities to more than one service, such as:

searcher:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - searcher
          topologyKey: "kubernetes.io/hostname"
indexer:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - indexer
          topologyKey: "kubernetes.io/hostname"

The rendered template for the indexer affinity is what is set for the searcher (and so is the searcher's as expected).

I double checked with trying the following:

searcher:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - searcher
          topologyKey: "kubernetes.io/hostname"
indexer:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - indexer
          topologyKey: "kubernetes.io/hostname"
metastore:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - metastore
          topologyKey: "kubernetes.io/hostname"

Now the rendered affinities for all 3 services are what is set for the searcher.

When only doing this:

indexer:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - indexer
          topologyKey: "kubernetes.io/hostname"
metastore:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app.kubernetes.io/name
                operator: In
                values:
                  - quickwit
              - key: app.kubernetes.io/component
                operator: In
                values:
                  - metastore
          topologyKey: "kubernetes.io/hostname"

Both the indexer and metastore affinities are set to only the metastore affinity config in values.yaml.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions