Hi Jiří,

Why can't you run it from another Pod? You should be able to specify
--bootstrap-server and point it to the brokers to connect to. You can also
pass further properties to it using the --command-config option. It should
be also possible to use it from the Admin API
<https://kafka.apache.org/36/javadoc/org/apache/kafka/clients/admin/Admin.html#updateFeatures(java.util.Map,org.apache.kafka.clients.admin.UpdateFeaturesOptions)>
directly from anywhere if needed.

But there is indeed no way to manage this declaratively in the Kafka
properties file as it was possible with inter.broker.protocol.version. It
also works a bit differently than the inter.broker.protocol.version worked
before KRaft:
* I think it does more checking whether all nodes in the cluster support
the version etc.
* You can't really downgrade it easily (at least not safely).

So maybe it is better you cannot just change some environment variables as
that might result in crash-looping pods.

Jakub


On Thu, Oct 19, 2023 at 2:58 PM Soukal, Jiří <j.sou...@quadient.com.invalid>
wrote:

> Hello all,
> Final step of the upgrade procedure is to run command like:
>
> "./bin/kafka-features.sh upgrade --metadata 3.6"
>
> In the Kubernetes world, which works in the desired state configuration
> (yamls and its the upper level abstractions), this is quite complicated.
>
> The first thing I tried to find is if I can call it from another kafka pod
> while specifying a server to connect to, however it is not possible. It
> needs to be run from withing the running kafka pod. This leads to executing
> to the pod or running the kubectl exec (e.g. kubectl exec kafka-0 -n cloud
> -- bin/kafka-configs.sh ... )
>
> However, this command is also imperative instead of declarative.
>
> Question: Is there another approach? E.g. driving the metadata version via
> ENV variable or file configuration?
>
> It seems like it was designed without Kubernetes world in mind.
>

Reply via email to