Puppet has the authoritative list of Kafka brokers. Helmfiles that use Kafka hardcode that list in, and when SRE changes kafka brokers (like in T279342), helmfiles must be updated too. This is error prone and can lead to problems if SRE is not aware of what services depend on Kafka.
Potential solution:
- Kafka cluster and broker info is rendered into a default helmfile values file on deployment server by puppet (just like the service mesh definitions) (see kafka_config.rb for how puppet does this)
- A modules/app/kafka_1.0.0.tpl that creates define(s) for kafka_bootstrap_servers for a specified kafka clusters and ports
- Charts can then opt in to using the define in their app specific configuration templates
Some context in T213561: Discovery for Kafka cluster brokers as well