bitnami / charts

Bitnami Helm Charts
https://bitnami.com
Other
8.92k stars 9.18k forks source link

[bitnami/redis] Templating issue in topologySpreadConstraints #9493

Closed alex1989hu closed 2 years ago

alex1989hu commented 2 years ago

Name and Version

bitnami/redis 16.5.4

What steps will reproduce the bug?

  1. Download bitnami/redis 16.5.4
  2. Use custom Helm Chart values file (see below)
  3. Run helm template redis ./redis/ -f redis-values.yaml > removeme.yaml
  4. See Helm warning:

Are you using any custom parameters or values?

master:
  topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: kubernetes.io/hostname
      whenUnsatisfiable: ScheduleAnyway
      labelSelector:
        matchLabels:
          app.kubernetes.io/name: master
    - maxSkew: 1
      topologyKey: kubernetes.io/hostname
      whenUnsatisfiable: ScheduleAnyway
      labelSelector:
        matchLabels:
          app.kubernetes.io/name: foo

replica:
  topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: kubernetes.io/hostname
      whenUnsatisfiable: ScheduleAnyway
      labelSelector:
        matchLabels:
          app.kubernetes.io/name: replica
    - maxSkew: 1
      topologyKey: kubernetes.io/hostname
      whenUnsatisfiable: ScheduleAnyway
      labelSelector:
        matchLabels:
          app.kubernetes.io/name: foobar

What is the expected behavior?

  1. Warning shall not occur
  2. Do not mix [] {} in Helm Charts

What do you see instead?

coalesce.go:220: warning: cannot overwrite table with non table for redis.master.topologySpreadConstraints (map[])
coalesce.go:220: warning: cannot overwrite table with non table for redis.replica.topologySpreadConstraints (map[])
coalesce.go:220: warning: cannot overwrite table with non table for redis.master.topologySpreadConstraints (map[])
coalesce.go:220: warning: cannot overwrite table with non table for redis.replica.topologySpreadConstraints (map[])

Additional information

"You can define one or multiple topologySpreadConstraint to instruct the kube-scheduler..." xref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/

Bitnami Helm Chart is mixing [] vs. {}, I think the proper default value is: topologySpreadConstraints: []

Here we use topologySpreadConstraints: []:

grep -nIrs 'topologySpreadConstraints: \[\]' .
./nginx-ingress-controller/values.yaml:426:topologySpreadConstraints: []
./geode/values.yaml:343:  topologySpreadConstraints: []
./geode/values.yaml:685:  topologySpreadConstraints: []
./suitecrm/values.yaml:164:topologySpreadConstraints: []
./grafana-operator/values.yaml:108:  topologySpreadConstraints: []
./spring-cloud-dataflow/values.yaml:237:  topologySpreadConstraints: []
./spring-cloud-dataflow/values.yaml:703:  topologySpreadConstraints: []
./spring-cloud-dataflow/values.yaml:1229:  topologySpreadConstraints: []
./opencart/values.yaml:132:topologySpreadConstraints: []
./fluentd/values.yaml:471:  topologySpreadConstraints: []
./fluentd/values.yaml:1027:  topologySpreadConstraints: []
./dokuwiki/values.yaml:133:topologySpreadConstraints: []
./wildfly/values.yaml:233:topologySpreadConstraints: []
./drupal/values.yaml:124:topologySpreadConstraints: []
./tomcat/values.yaml:303:topologySpreadConstraints: []
./metrics-server/values.yaml:195:topologySpreadConstraints: []
./argo-cd/values.yaml:479:  topologySpreadConstraints: []
./argo-cd/values.yaml:1162:  topologySpreadConstraints: []
./argo-cd/values.yaml:1586:  topologySpreadConstraints: []
./argo-cd/values.yaml:2013:  topologySpreadConstraints: []
./wavefront-hpa-adapter/values.yaml:274:topologySpreadConstraints: []
./redis/values.yaml:349:  topologySpreadConstraints: []
./redis/values.yaml:702:  topologySpreadConstraints: []
./oauth2-proxy/values.yaml:515:topologySpreadConstraints: []
./moodle/values.yaml:155:topologySpreadConstraints: []
./testlink/values.yaml:160:topologySpreadConstraints: []
./kubewatch/values.yaml:360:topologySpreadConstraints: []
./phpmyadmin/values.yaml:287:topologySpreadConstraints: []
./external-dns/values.yaml:671:topologySpreadConstraints: []
./redis-cluster/values.yaml:582:  topologySpreadConstraints: []
./cert-manager/values.yaml:196:  topologySpreadConstraints: []
./cert-manager/values.yaml:459:  topologySpreadConstraints: []
./cert-manager/values.yaml:658:  topologySpreadConstraints: []
./phpbb/values.yaml:385:topologySpreadConstraints: []
./aspnet-core/values.yaml:116:topologySpreadConstraints: []
./owncloud/values.yaml:160:topologySpreadConstraints: []
./tensorflow-resnet/values.yaml:257:topologySpreadConstraints: []
./grafana/values.yaml:290:  topologySpreadConstraints: []
./grafana/values.yaml:767:  topologySpreadConstraints: []
./rabbitmq/values.yaml:509:topologySpreadConstraints: []
./osclass/values.yaml:408:topologySpreadConstraints: []
./minio/values.yaml:396:topologySpreadConstraints: []
./mongodb/values.yaml:402:topologySpreadConstraints: []
./ghost/values.yaml:181:topologySpreadConstraints: []
./influxdb/values.yaml:263:  topologySpreadConstraints: []
./influxdb/values.yaml:600:  topologySpreadConstraints: []
./rabbitmq-cluster-operator/values.yaml:125:  topologySpreadConstraints: []
./rabbitmq-cluster-operator/values.yaml:476:  topologySpreadConstraints: []
./nats/values.yaml:439:topologySpreadConstraints: []
./prestashop/values.yaml:180:topologySpreadConstraints: []
./consul/values.yaml:167:topologySpreadConstraints: []
./kubernetes-event-exporter/values.yaml:217:topologySpreadConstraints: []
./cassandra/values.yaml:273:topologySpreadConstraints: []
./contour-operator/values.yaml:283:topologySpreadConstraints: []
./etcd/values.yaml:454:topologySpreadConstraints: []
./thanos/values.yaml:332:  topologySpreadConstraints: []
./thanos/values.yaml:885:  topologySpreadConstraints: []
./thanos/values.yaml:1288:  topologySpreadConstraints: []
./thanos/values.yaml:1669:  topologySpreadConstraints: []
./thanos/values.yaml:2084:  topologySpreadConstraints: []
./thanos/values.yaml:2661:  topologySpreadConstraints: []
./thanos/values.yaml:3120:  topologySpreadConstraints: []
./thanos/values.yaml:3539:  topologySpreadConstraints: []
./argo-workflows/values.yaml:361:  topologySpreadConstraints: []
./argo-workflows/values.yaml:848:  topologySpreadConstraints: []
./jasperreports/values.yaml:300:topologySpreadConstraints: []
./ejbca/values.yaml:240:topologySpreadConstraints: []
./jenkins/values.yaml:162:topologySpreadConstraints: []
./mediawiki/values.yaml:334:topologySpreadConstraints: []
./elasticsearch/values.yaml:335:  topologySpreadConstraints: []
./elasticsearch/values.yaml:684:  topologySpreadConstraints: []
./elasticsearch/values.yaml:928:  topologySpreadConstraints: []
./elasticsearch/values.yaml:1193:  topologySpreadConstraints: []
./elasticsearch/values.yaml:1411:  topologySpreadConstraints: []
./elasticsearch/values.yaml:1667:  topologySpreadConstraints: []
./apache/values.yaml:136:topologySpreadConstraints: []
./joomla/values.yaml:340:topologySpreadConstraints: []
./kiam/values.yaml:132:  topologySpreadConstraints: []
./kiam/values.yaml:519:  topologySpreadConstraints: []
./haproxy/values.yaml:341:topologySpreadConstraints: []

Here we use `topologySpreadConstraints: {}':

grep -nIrs 'topologySpreadConstraints: {}' .
./redmine/values.yaml:327:topologySpreadConstraints: {}
./postgresql/values.yaml:506:  topologySpreadConstraints: {}
./postgresql/values.yaml:816:  topologySpreadConstraints: {}
./mariadb/values.yaml:279:  topologySpreadConstraints: {}
./mariadb/values.yaml:643:  topologySpreadConstraints: {}
./harbor/values.yaml:883:  topologySpreadConstraints: {}
./harbor/values.yaml:1130:  topologySpreadConstraints: {}
./harbor/values.yaml:1408:  topologySpreadConstraints: {}
./harbor/values.yaml:1685:  topologySpreadConstraints: {}
./harbor/values.yaml:1867:  topologySpreadConstraints: {}
./harbor/values.yaml:2448:  topologySpreadConstraints: {}
./harbor/values.yaml:2596:  topologySpreadConstraints: {}
./harbor/values.yaml:3125:    topologySpreadConstraints: {}
./harbor/values.yaml:3362:    topologySpreadConstraints: {}
./harbor/values.yaml:3669:  topologySpreadConstraints: {}
./harbor/values.yaml:3927:  topologySpreadConstraints: {}
./wordpress/values.yaml:276:topologySpreadConstraints: {}
./odoo/values.yaml:321:topologySpreadConstraints: {}
./concourse/values.yaml:486:  topologySpreadConstraints: {}
./concourse/values.yaml:778:  topologySpreadConstraints: {}
./kong/values.yaml:141:topologySpreadConstraints: {}
./jupyterhub/values.yaml:406:  topologySpreadConstraints: {}
./jupyterhub/values.yaml:814:  topologySpreadConstraints: {}
./jupyterhub/values.yaml:1284:  topologySpreadConstraints: {}
./zookeeper/values.yaml:370:topologySpreadConstraints: {}
./solr/values.yaml:298:topologySpreadConstraints: {}
./solr/values.yaml:793:  topologySpreadConstraints: {}
./airflow/values.yaml:324:  topologySpreadConstraints: {}
./airflow/values.yaml:523:  topologySpreadConstraints: {}
./airflow/values.yaml:770:  topologySpreadConstraints: {}
./memcached/values.yaml:280:topologySpreadConstraints: {}
./kafka/values.yaml:554:topologySpreadConstraints: {}
./discourse/values.yaml:199:topologySpreadConstraints: {}
./keycloak/values.yaml:441:topologySpreadConstraints: {}
./grafana-tempo/values.yaml:405:  topologySpreadConstraints: {}
./grafana-tempo/values.yaml:658:  topologySpreadConstraints: {}
./grafana-tempo/values.yaml:915:  topologySpreadConstraints: {}
./grafana-tempo/values.yaml:1215:  topologySpreadConstraints: {}
./grafana-tempo/values.yaml:1472:  topologySpreadConstraints: {}
./grafana-tempo/values.yaml:1907:  topologySpreadConstraints: {}
./postgresql-ha/values.yaml:93:topologySpreadConstraints: {}
./mariadb-galera/values.yaml:558:topologySpreadConstraints: {}
rafariossaa commented 2 years ago

Hi, Thanks for spotting this out. Would you like to send a PR to fix it in redis ?

alex1989hu commented 2 years ago

Hi, Thanks for spotting this out. Would you like to send a PR to fix it in redis ?

I have just sent 🎉

rafariossaa commented 2 years ago

Hi, Thanks for your PR. Let's wait until it is reviewed and merged.

rafariossaa commented 2 years ago

Hi, Thanks for your PR !!, it was merged.