Is there a reason why debian and alpine build pipeline use option --disable-gssapi? See build scripts
Using this approach, the nuget package Confluent.Kafka contains debian9-librdkafka.so and alpine-librdkafka.so with no GSSAPI support.
In our project, we would like to use the Confluent.Kafka to connect to a Kerberized Kafka cluster from a .NET core microservice. The default .NET core image mcr.microsoft.com/dotnet/core/runtime:2.1 is based on a Debian image so the application fails on GSSAPI: recompile librdkafka with libsasl2 or openssl support. Current build options: PLAIN SASL_SCRAM'. It can be fixed by recompiling the librdkafka as described in issue 550. Or an Ubuntu based image can be used (i.e mcr.microsoft.com/dotnet/core/runtime:2.1-bionic).
Having a nuget package without GSSAPI support for Debian 9 is strange to me especially when the Microsoft's default image is Debian 9. Could you please comment on that?
Thank you
Have a Kerberized Kafka cluster
Create a .NET core application
Use latest version of nuget package Confluent.Kafka
Run the .NET core application in a Debian based docker image (i.e mcr.microsoft.com/dotnet/core/runtime:2.1)
The application fals with message GSSAPI: recompile librdkafka with libsasl2 or openssl support. Current build options: PLAIN SASL_SCRAM'
Please provide the following information:
1.2.12.3.0"security.protocol", "SASL_PLAINTEXT";
"sasl.mechanisms", "GSSAPI";
"sasl.kerberos.principal", "svc_hdfdev_kafka/[email protected]");
"sasl.kerberos.keytab", "keytab";
"sasl.kerberos.service.name", "svc_hdfdev_kafka;
Debian 9debug=.. as necessary) from librdkafkaSame issue for Docker .Net Core 3.0 runtime image(Debian 10)
Quoting the wiki:
The disparity in build-time features is a compromise between NuGet package size (fewer libraries) and required system dependencies (e.g., Cyrus SASL / Kerberos). If GSSAPI support is required on a platform for where there is no corresponding library with GSSAPI support you will need to install librdkafka through other means and specify the installed library path using Library.Load (API docs).