Code review comment: I believe it's fine for now, but we may need to add a hint (a file) in the service bindings.

Code under review:
public Optional<ServiceBindingConfigSource> convert(List<ServiceBinding> serviceBindings) {
        Optional<ServiceBinding> matchingByType = ServiceBinding.singleMatchingByType("kafka", serviceBindings);
        if (!matchingByType.isPresent()) {
            return Optional.empty();
        }

        Map<String, String> properties = new HashMap<>();
        ServiceBinding binding = matchingByType.get();

        String bootstrapServers = binding.getProperties().get("bootstrapServers");
        if (bootstrapServers == null) {
            bootstrapServers = binding.getProperties().get("bootstrap-servers");
        }
        if (bootstrapServers != null) {
            properties.put("kafka.bootstrap.servers", bootstrapServers);
        }

        String securityProtocol = binding.getProperties().get("securityprotocol");
        if (securityProtocol != null) {
            properties.put("kafka.security.protocol", securityProtocol);
        }

        String saslMechanism = binding.getProperties().get("saslmechanism");
        if (saslMechanism != null) {
            properties.put("kafka.sasl.mechanism", saslMechanism);
        }
        String user = binding.getProperties().get("user");
        String password = binding.getProperties().get("password");
        if ("PLAIN".equals(saslMechanism) && (user != null) && (password != null)) {
            properties.put("kafka.sasl.jaas.config",
                    String.format("org.apache.kafka.common.security.plain.PlainLoginModule required %s %s", user, password));
        }

        return Optional.of(new ServiceBindingConfigSource("kafka-k8s-service-binding-source", properties));
    }

Line commented on: String.format("org.apache.kafka.common.security.plain.PlainLoginModule required %s %s", user, password));

Revised code:
public Optional<ServiceBindingConfigSource> convert(List<ServiceBinding> serviceBindings) {
        Optional<ServiceBinding> matchingByType = ServiceBinding.singleMatchingByType("kafka", serviceBindings);
        if (!matchingByType.isPresent()) {
            return Optional.empty();
        }

        Map<String, String> properties = new HashMap<>();
        ServiceBinding binding = matchingByType.get();

        String bootstrapServers = binding.getProperties().get("bootstrapServers");
        if (bootstrapServers == null) {
            bootstrapServers = binding.getProperties().get("bootstrap-servers");
        }
        if (bootstrapServers != null) {
            properties.put("kafka.bootstrap.servers", bootstrapServers);
        }

        String securityProtocol = binding.getProperties().get("securityprotocol");
        if (securityProtocol != null) {
            properties.put("kafka.security.protocol", securityProtocol);
        }

        String saslMechanism = binding.getProperties().get("saslmechanism");
        if (saslMechanism != null) {
            properties.put("kafka.sasl.mechanism", saslMechanism);
        }
        String user = binding.getProperties().get("user");
        String password = binding.getProperties().get("password");
        if ("PLAIN".equals(saslMechanism) && (user != null) && (password != null)) {
            properties.put("kafka.sasl.jaas.config",
                    String.format("org.apache.kafka.common.security.plain.PlainLoginModule required %s %s", user, password));
        }

        return Optional.of(new ServiceBindingConfigSource("kafka-k8s-service-binding-source", properties));
    }